diff --git a/include/exec.h b/include/exec.h index 27c2841..bf6c6e8 100644 --- a/include/exec.h +++ b/include/exec.h @@ -6,6 +6,7 @@ void printLogo(); void printPackage(Package pkg); +void printPackages(Manager* mgr); // Parse arguments into a (command, arguments[]) tuple std::tuple> parseArgs( int argc, const char ** argv ) { @@ -34,6 +35,13 @@ void execCommand(std::string cmd, std::vector args, Manager* manage printPackage(pkg.value()); + } else if (cmd == "list") { + if (args.size() != 0) { + std::cerr << "\"chump list\" should have no arguments" << std::endl; + return; + } + + printPackages(manager); } else if (cmd == "install") { // manager->fetch->fetch("https://ccrma.stanford.edu/~nshaheed/220a/hw4/hw4.wav"); // manager->fetch->fetch("https://ccrma.stanford.edu/~nshaheed/rave_models/chafe_cello.ts"); @@ -51,6 +59,13 @@ void printPackage(Package pkg) { std::cout << pkg << std::endl; } +void printPackages(Manager* mgr) { + vector packages = mgr->listPackages(); + for (Package p: packages) { + std::cout << p.name << std::endl; + } +} + void printLogo() { std::cout << std::endl; diff --git a/include/package_list.h b/include/package_list.h index e9c8fc1..674b5dc 100644 --- a/include/package_list.h +++ b/include/package_list.h @@ -29,6 +29,7 @@ class PackageList { // return specific version of package optional find_package_version(string name, string version); + std::vector get_packages(); /* static void from_json(const json& j, PackageList& pkg_list); */ diff --git a/src/manager.cpp b/src/manager.cpp index 8f4af1a..344ebcd 100644 --- a/src/manager.cpp +++ b/src/manager.cpp @@ -63,3 +63,7 @@ bool Manager::uninstall(std::string packageName) { return true; } + +std::vector Manager::listPackages() { + return package_list->get_packages(); +} diff --git a/src/package_list.cpp b/src/package_list.cpp index 38db82c..7bbba24 100644 --- a/src/package_list.cpp +++ b/src/package_list.cpp @@ -61,3 +61,7 @@ optional PackageList::find_package_version(string name, string v return {}; } +std::vector PackageList::get_packages() { + return packages; +} +