From f423be99824d124d2977aaa4a4ecb5def4ced5ae Mon Sep 17 00:00:00 2001 From: isanae <14251494+isanae@users.noreply.github.com> Date: Mon, 25 May 2020 04:14:02 -0400 Subject: [PATCH] renamed options to task added enabled option for tasks so they can just all be built in the same way --- mob.ini | 7 +++--- src/commands.cpp | 21 ++++++++++------- src/conf.cpp | 8 +++---- src/conf.h | 4 ++-- src/tasks/task.cpp | 59 +++++++++++++++++++++++++++++++++++----------- src/tasks/task.h | 3 ++- 6 files changed, 70 insertions(+), 32 deletions(-) diff --git a/mob.ini b/mob.ini index 620d9b3..de529f2 100644 --- a/mob.ini +++ b/mob.ini @@ -12,7 +12,8 @@ file_log_level = 5 log_file = mob.log ignore_uncommitted = false -[options] +[task] +enabled = true mo_org = ModOrganizer2 mo_branch = master no_pull = false @@ -29,10 +30,10 @@ remote_key = remote_no_push_upstream = false remote_push_default_origin = false -[super:options] +[super:task] git_shallow = false -[usvfs:options] +[usvfs:task] git_shallow = false [tools] diff --git a/src/commands.cpp b/src/commands.cpp index bed7922..d6b41be 100644 --- a/src/commands.cpp +++ b/src/commands.cpp @@ -411,17 +411,25 @@ void build_command::convert_cl_to_conf() if (nopull_) { if (*nopull_) - common.options.push_back("_override:options/no_pull=true"); + common.options.push_back("_override:task/no_pull=true"); else - common.options.push_back("_override:options/no_pull=false"); + common.options.push_back("_override:task/no_pull=false"); } if (revert_ts_) { if (*revert_ts_) - common.options.push_back("_override:options/revert_ts=true"); + common.options.push_back("_override:task/revert_ts=true"); else - common.options.push_back("_override:options/revert_ts=false"); + common.options.push_back("_override:task/revert_ts=false"); + } + + if (!tasks_.empty()) + { + common.options.push_back("task/enabled=false"); + + for (auto&& t : tasks_) + common.options.push_back(t + ":task/enabled=true"); } } @@ -431,10 +439,7 @@ int build_command::do_run() { curl_init curl; - if (!tasks_.empty()) - run_tasks(tasks_); - else - run_all_tasks(); + run_all_tasks(); { using namespace std::chrono; diff --git a/src/conf.cpp b/src/conf.cpp index 3e31b73..9a20a35 100644 --- a/src/conf.cpp +++ b/src/conf.cpp @@ -170,16 +170,16 @@ bool conf::bool_global_by_name(const std::string& name) return (s == "true" || s == "yes" || s == "1"); } -std::string conf::option_by_name( +std::string conf::task_option_by_name( const std::vector& task_names, const std::string& name) { - return get_for_task(task_names, "options", name); + return get_for_task(task_names, "task", name); } -bool conf::bool_option_by_name( +bool conf::bool_task_option_by_name( const std::vector& task_names, const std::string& name) { - const std::string s = option_by_name(task_names, name); + const std::string s = task_option_by_name(task_names, name); return (s == "true" || s == "yes" || s == "1"); } diff --git a/src/conf.h b/src/conf.h index f23d992..902dec4 100644 --- a/src/conf.h +++ b/src/conf.h @@ -35,10 +35,10 @@ public: static std::string global_by_name(const std::string& name); static bool bool_global_by_name(const std::string& name); - static std::string option_by_name( + static std::string task_option_by_name( const std::vector& task_names, const std::string& name); - static bool bool_option_by_name( + static bool bool_task_option_by_name( const std::vector& task_names, const std::string& name); diff --git a/src/tasks/task.cpp b/src/tasks/task.cpp index aabe91b..474f260 100644 --- a/src/tasks/task.cpp +++ b/src/tasks/task.cpp @@ -249,72 +249,72 @@ task_conf_holder::task_conf_holder(const task& t) std::string task_conf_holder::mo_org() const { - return conf::option_by_name(task_.names(), "mo_org"); + return conf::task_option_by_name(task_.names(), "mo_org"); } std::string task_conf_holder::mo_branch() const { - return conf::option_by_name(task_.names(), "mo_branch"); + return conf::task_option_by_name(task_.names(), "mo_branch"); } bool task_conf_holder::no_pull() const { - return conf::bool_option_by_name(task_.names(), "no_pull"); + return conf::bool_task_option_by_name(task_.names(), "no_pull"); } bool task_conf_holder::revert_ts() const { - return conf::bool_option_by_name(task_.names(), "revert_ts"); + return conf::bool_task_option_by_name(task_.names(), "revert_ts"); } bool task_conf_holder::ignore_ts()const { - return conf::bool_option_by_name(task_.names(), "ignore_ts"); + return conf::bool_task_option_by_name(task_.names(), "ignore_ts"); } std::string task_conf_holder::git_url_prefix() const { - return conf::option_by_name(task_.names(), "git_url_prefix"); + return conf::task_option_by_name(task_.names(), "git_url_prefix"); } bool task_conf_holder::git_shallow() const { - return conf::bool_option_by_name(task_.names(), "git_shallow"); + return conf::bool_task_option_by_name(task_.names(), "git_shallow"); } std::string task_conf_holder::git_user() const { - return conf::option_by_name(task_.names(), "git_username"); + return conf::task_option_by_name(task_.names(), "git_username"); } std::string task_conf_holder::git_email() const { - return conf::option_by_name(task_.names(), "git_email"); + return conf::task_option_by_name(task_.names(), "git_email"); } bool task_conf_holder::set_origin_remote() const { - return conf::bool_option_by_name(task_.names(), "set_origin_remote"); + return conf::bool_task_option_by_name(task_.names(), "set_origin_remote"); } std::string task_conf_holder::remote_org() const { - return conf::option_by_name(task_.names(), "remote_org"); + return conf::task_option_by_name(task_.names(), "remote_org"); } std::string task_conf_holder::remote_key() const { - return conf::option_by_name(task_.names(), "remote_key"); + return conf::task_option_by_name(task_.names(), "remote_key"); } bool task_conf_holder::remote_no_push_upstream() const { - return conf::bool_option_by_name(task_.names(), "remote_no_push_upstream"); + return conf::bool_task_option_by_name(task_.names(), "remote_no_push_upstream"); } bool task_conf_holder::remote_push_default_origin() const { - return conf::bool_option_by_name(task_.names(), "remote_push_default_origin"); + return conf::bool_task_option_by_name(task_.names(), "remote_push_default_origin"); } git task_conf_holder::make_git(git::ops o) const @@ -384,6 +384,11 @@ task::~task() } } +bool task::enabled() const +{ + return conf::bool_task_option_by_name(names(), "enabled"); +} + bool task::is_super() const { return false; @@ -495,6 +500,12 @@ void task::run() { threaded_run(name(), [&] { + if (!enabled()) + { + cx().debug(context::generic, "task is disabled"); + return; + } + cx().info(context::generic, "running task"); fetch(); @@ -530,6 +541,13 @@ void task::clean_task() if (!conf::clean()) return; + if (!enabled()) + { + cx().debug(context::generic, "cleaning (skipping, task disabled)"); + return; + } + + const auto cf = make_clean_flags(); if (cf != clean::nothing) @@ -541,6 +559,12 @@ void task::clean_task() void task::fetch() { + if (!enabled()) + { + cx().debug(context::generic, "fetching (skipping, task disabled)"); + return; + } + thread_ = start_thread([&] { threaded_run(name(), [&] @@ -575,6 +599,13 @@ void task::build_and_install() if (!conf::build()) return; + if (!enabled()) + { + cx().debug(context::generic, + "build and install (skipping, task disabled)"); + return; + } + thread_ = start_thread([&] { threaded_run(name(), [&] diff --git a/src/tasks/task.h b/src/tasks/task.h index 7560289..c8e61b3 100644 --- a/src/tasks/task.h +++ b/src/tasks/task.h @@ -86,10 +86,11 @@ public: task(const task&) = delete; task& operator=(const task&) = delete; - virtual ~task(); + static void interrupt_all(); + bool enabled() const; const std::string& name() const; const std::vector& names() const;