Files
cell/search.ce
2026-01-16 18:15:29 -06:00

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()
for (var package_name of packages) {
// 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)
for (var mod of modules) {
if (search(mod), query) != null) {
found_modules.push(package_name + ':' + mod)
}
}
var actors = pkg.list_programs(package_name)
for (var actor of actors) {
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:")
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()