// cell search // Searches for packages matching , or actors or modules within them. var shop = use('internal/shop') var pkg = use('package') if (args.length < 1) { log.console("Usage: cell search ") log.console("Searches for packages, actors, or modules matching the query.") $stop() return } var query = args[0].toLowerCase() var found_packages = [] var found_modules = [] var found_actors = [] // Search through all installed packages var packages = shop.list_packages() for (var package_name of packages) { // Check if package name matches if (package_name.toLowerCase().includes(query)) { found_packages.push(package_name) } // Search modules and actors within the package try { var modules = pkg.list_modules(package_name) for (var mod of modules) { if (mod.toLowerCase().includes(query)) { found_modules.push(package_name + ':' + mod) } } var actors = pkg.list_programs(package_name) for (var actor of actors) { if (actor.toLowerCase().includes(query)) { found_actors.push(package_name + ':' + actor) } } } catch (e) { // Skip packages that can't be read } } // Print results var total = found_packages.length + found_modules.length + found_actors.length if (total == 0) { log.console("No results found for '" + query + "'") } else { log.console("Found " + text(total) + " result(s) for '" + query + "':") log.console("") if (found_packages.length > 0) { log.console("Packages:") for (var p of found_packages) { log.console(" " + p) } log.console("") } if (found_modules.length > 0) { log.console("Modules:") for (var m of found_modules) { log.console(" " + m) } log.console("") } if (found_actors.length > 0) { log.console("Actors:") for (var a of found_actors) { log.console(" " + a) } } } $stop()