forked from OctaForge/OctaBuild
simplfy action exec
parent
82801c7cc0
commit
389a446021
20
main.cc
20
main.cc
|
@ -202,9 +202,11 @@ struct ob_state: cs_state {
|
||||||
|
|
||||||
void exec_func(string_range tname, std::vector<SubRule> const &rlist) {
|
void exec_func(string_range tname, std::vector<SubRule> const &rlist) {
|
||||||
std::vector<std::string> subdeps;
|
std::vector<std::string> subdeps;
|
||||||
wait_result([&rlist, &subdeps, &tname, this]() {
|
if ((rlist.size() > 1) || !rlist[0].rule->deps.empty()) {
|
||||||
exec_list(rlist, subdeps, tname);
|
wait_result([&rlist, &subdeps, &tname, this]() {
|
||||||
});
|
exec_list(rlist, subdeps, tname);
|
||||||
|
});
|
||||||
|
}
|
||||||
cs_bcode_ref *func = nullptr;
|
cs_bcode_ref *func = nullptr;
|
||||||
bool act = false;
|
bool act = false;
|
||||||
for (auto &sr: rlist) {
|
for (auto &sr: rlist) {
|
||||||
|
@ -254,14 +256,6 @@ struct ob_state: cs_state {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void exec_action(Rule *rule) {
|
|
||||||
try {
|
|
||||||
run(rule->func);
|
|
||||||
} catch (cscript::cs_error const &e) {
|
|
||||||
throw build_error{e.what()};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void find_rules(string_range target, std::vector<SubRule> &rlist) {
|
void find_rules(string_range target, std::vector<SubRule> &rlist) {
|
||||||
if (!rlist.empty()) {
|
if (!rlist.empty()) {
|
||||||
return;
|
return;
|
||||||
|
@ -313,10 +307,6 @@ struct ob_state: cs_state {
|
||||||
void exec_rule(string_range target, string_range from = nullptr) {
|
void exec_rule(string_range target, string_range from = nullptr) {
|
||||||
std::vector<SubRule> &rlist = cache[target];
|
std::vector<SubRule> &rlist = cache[target];
|
||||||
find_rules(target, rlist);
|
find_rules(target, rlist);
|
||||||
if ((rlist.size() == 1) && rlist[0].rule->action) {
|
|
||||||
exec_action(rlist[0].rule);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (rlist.empty() && !fs::exists(target)) {
|
if (rlist.empty() && !fs::exists(target)) {
|
||||||
if (from.empty()) {
|
if (from.empty()) {
|
||||||
throw build_error{"no rule to run target '%s'", target};
|
throw build_error{"no rule to run target '%s'", target};
|
||||||
|
|
Loading…
Reference in New Issue