コード例 #1
0
ファイル: main.cpp プロジェクト: alsabadel/vle
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;
}
コード例 #2
0
ファイル: main.cpp プロジェクト: rousse/vle
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;
}
コード例 #3
0
ファイル: main.cpp プロジェクト: rousse/vle
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;
}
コード例 #4
0
ファイル: main.cpp プロジェクト: rousse/vle
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;
}