static bool init_package(vle::utils::Package& pkg, const CmdArgs &args) { if (not pkg.existsBinary()) { if (not pkg.existsSource()) { if (std::find(args.begin(), args.end(), "create") == args.end()) { std::cerr << vle::fmt( _("Package `%1%' does not exist. Use the create command" " before other command.\n")) % pkg.name(); return false; } } } return true; }
static int manage_config_mode(const std::string &configvar, const CmdArgs &args) { int ret = EXIT_SUCCESS; try { vle::utils::Preferences prefs("vle.conf"); std::string concat = std::accumulate(args.begin(), args.end(), std::string(), Comma()); if (not prefs.set(configvar, concat)) throw vle::utils::ArgError(vle::fmt(_("Unknown variable `%1%'")) % configvar); } catch (const std::exception &e) { std::cerr << vle::fmt(_("Config error: %1%\n")) % e.what(); ret = EXIT_FAILURE; } return ret; }
static bool init_current_package(const std::string &packagename, const CmdArgs &args) { if (not vle::utils::Package::package().existsPackage(packagename)) { if (not vle::utils::Path::existDirectory(packagename)) { if (std::find(args.begin(), args.end(), "create") == args.end()) { std::cerr << vle::fmt( _("Package `%1%' does not exist. Use the create command" " before other command.\n")) % packagename; return false; } } vle::utils::Package::package().refresh(); vle::utils::Package::package().select(packagename); vle::utils::Package::package().create(); } else { vle::utils::Package::package().refresh(); vle::utils::Package::package().select(packagename); } return true; }
static int manage_package_mode(const std::string &packagename, bool manager, int processor, const CmdArgs &args) { CmdArgs::const_iterator it = args.begin(); CmdArgs::const_iterator end = args.end(); bool stop = false; if (not init_current_package(packagename, args)) return EXIT_FAILURE; for (; not stop and it != end; ++it) { if (*it == "create") { vle::utils::Package::package().create(); } else if (*it == "configure") { vle::utils::Package::package().configure(); vle::utils::Package::package().wait(std::cerr, std::cerr); stop = not vle::utils::Package::package().isSuccess(); } else if (*it == "build") { vle::utils::Package::package().build(); vle::utils::Package::package().wait(std::cerr, std::cerr); if (vle::utils::Package::package().isSuccess()) { vle::utils::Package::package().install(); vle::utils::Package::package().wait(std::cerr, std::cerr); } stop = not vle::utils::Package::package().isSuccess(); } else if (*it == "test") { vle::utils::Package::package().test(); vle::utils::Package::package().wait(std::cerr, std::cerr); stop = not vle::utils::Package::package().isSuccess(); } else if (*it == "install") { vle::utils::Package::package().install(); vle::utils::Package::package().wait(std::cerr, std::cerr); stop = not vle::utils::Package::package().isSuccess(); } else if (*it == "clean") { vle::utils::Package::package().clean(); vle::utils::Package::package().wait(std::cerr, std::cerr); stop = not vle::utils::Package::package().isSuccess(); } else if (*it == "rclean") { vle::utils::Package::removePackageBinary( vle::utils::Package::package().name()); } else if (*it == "package") { vle::utils::Package::package().pack(); vle::utils::Package::package().wait(std::cerr, std::cerr); stop = not vle::utils::Package::package().isSuccess(); } else if (*it == "all") { std::cerr << "all is not yet implemented\n"; stop = true; } else if (*it == "depends") { std::cerr << "Depends is not yet implemented\n"; stop = true; } else if (*it == "list") { show_package_content(); } else { break; } } int ret = EXIT_SUCCESS; if (stop) ret = EXIT_FAILURE; else if (it != end) { #ifndef NDEBUG vle::devs::ExternalEvent::allocated = 0; vle::devs::ExternalEvent::deallocated = 0; vle::devs::InternalEvent::allocated = 0; vle::devs::InternalEvent::deallocated = 0; vle::value::Value::allocated = 0; vle::value::Value::deallocated = 0; #endif if (manager) ret = run_manager(it, end, processor); else ret = run_simulation(it, end); #ifndef NDEBUG std::cerr << vle::fmt(_("\n - Debug mode:\n" " allocated deallocated\n" " - External events: %=12d/%=12d\n" " - Internal events: %=12d/%=12d\n" " - Values : %=12d/%=12d\n")) % vle::devs::ExternalEvent::allocated % vle::devs::ExternalEvent::deallocated % vle::devs::InternalEvent::allocated % vle::devs::InternalEvent::deallocated % vle::value::Value::allocated % vle::value::Value::deallocated; #endif } return ret; }