82 lines
1.9 KiB
Plaintext
82 lines
1.9 KiB
Plaintext
// cell search <query>
|
|
// Searches for packages matching <query>, or actors or modules within them.
|
|
|
|
var shop = use('internal/shop')
|
|
var pkg = use('package')
|
|
|
|
if (args.length < 1) {
|
|
log.console("Usage: cell search <query>")
|
|
log.console("Searches for packages, actors, or modules matching the query.")
|
|
$stop()
|
|
return
|
|
}
|
|
|
|
var query = args[0]
|
|
var found_packages = []
|
|
var found_modules = []
|
|
var found_actors = []
|
|
|
|
// Search through all installed packages
|
|
var packages = shop.list_packages()
|
|
|
|
arrfor(packages, function(package_name) {
|
|
// Check if package name matches
|
|
if (search(package_name, query) != null) {
|
|
found_packages.push(package_name)
|
|
}
|
|
|
|
// Search modules and actors within the package
|
|
try {
|
|
var modules = pkg.list_modules(package_name)
|
|
arrfor(modules, function(mod) {
|
|
if (search(mod, query) != null) {
|
|
found_modules.push(package_name + ':' + mod)
|
|
}
|
|
})
|
|
|
|
var actors = pkg.list_programs(package_name)
|
|
arrfor(actors, function(actor) {
|
|
if (search(actor, query) != null) {
|
|
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:")
|
|
arrfor(found_packages, function(p) {
|
|
log.console(" " + p)
|
|
})
|
|
log.console("")
|
|
}
|
|
|
|
if (found_modules.length > 0) {
|
|
log.console("Modules:")
|
|
arrfor(found_modules, function(m) {
|
|
log.console(" " + m)
|
|
})
|
|
log.console("")
|
|
}
|
|
|
|
if (found_actors.length > 0) {
|
|
log.console("Actors:")
|
|
arrfor(found_actors, function(a) {
|
|
log.console(" " + a)
|
|
})
|
|
}
|
|
}
|
|
|
|
$stop()
|