// list installed packages // cell list -> list packages installed in this package // cell list all -> list all packages (including those that are there due to installed packages) // cell list package -> list the packages for the package var shop = use('shop') var pkg = use('package') var mode = 'local' var target_pkg = null if (args && args.length > 0) { if (args[0] == 'all') { mode = 'all' } else if (args[0] == 'shop') { mode = 'shop' } else if (args[0] == 'package') { if (args.length < 2) { log.console("Usage: cell list package ") $_.stop() return } mode = 'package' target_pkg = args[1] } else { log.console("Usage:") log.console(" cell list : list local packages") log.console(" cell list all : list all recursive packages") log.console(" cell list package : list dependencies of ") log.console(" cell list shop : list all packages in shop") $_.stop() return } } if (mode == 'local') { log.console("Installed Packages (Local):") print_deps(null) } else if (mode == 'package') { // Resolve alias to canonical package path var canon = shop.get_canonical_package(target_pkg, null) if (!canon) { log.console("Package '" + target_pkg + "' not found in local dependencies.") } else { log.console("Dependencies for " + target_pkg + " (" + canon + "):") print_deps(canon) } } else if (mode == 'all') { log.console("All Packages:") var all = shop.list_packages(null) // list_packages returns an array of package strings (locators) // We want to perhaps sort them all.sort() for (var i = 0; i < all.length; i++) { log.console(" " + all[i]) } if (all.length == 0) log.console(" (none)") } else if (mode == 'shop') { log.console("Shop Packages:") var all = shop.list_packages() if (all.length == 0) log.console(" (none)") else all.forEach(package => log.console(" " + package)) } function print_deps(ctx) { var deps = pkg.dependencies(ctx) var aliases = [] for (var k in deps) aliases.push(k) aliases.sort() if (aliases.length == 0) { log.console(" (none)") } else { for (var i = 0; i < aliases.length; i++) { var alias = aliases[i] var locator = deps[alias] log.console(" " + alias + " -> " + locator) } } } $_.stop()