This commit is contained in:
sagie gur ari 2020-06-04 16:59:58 +00:00
parent 4de6417ce2
commit d98b26c4ca
4 changed files with 56 additions and 22 deletions

View file

@ -1,6 +1,6 @@
## CHANGELOG
### v0.4.1
### v0.4.1 (2020-06-04)
* New Enable to error an exec command via new --fail-on-error flag #108

View file

@ -78,6 +78,23 @@
<span id="78">78</span>
<span id="79">79</span>
<span id="80">80</span>
<span id="81">81</span>
<span id="82">82</span>
<span id="83">83</span>
<span id="84">84</span>
<span id="85">85</span>
<span id="86">86</span>
<span id="87">87</span>
<span id="88">88</span>
<span id="89">89</span>
<span id="90">90</span>
<span id="91">91</span>
<span id="92">92</span>
<span id="93">93</span>
<span id="94">94</span>
<span id="95">95</span>
<span id="96">96</span>
<span id="97">97</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">utils</span>::{<span class="ident">exec</span>, <span class="ident">pckg</span>};
<span class="kw">use</span> <span class="ident">duckscript</span>::<span class="ident">types</span>::<span class="ident">command</span>::{<span class="ident">Command</span>, <span class="ident">CommandResult</span>, <span class="ident">Commands</span>};
@ -127,28 +144,45 @@
) <span class="op">-</span><span class="op">&gt;</span> <span class="ident">CommandResult</span> {
<span class="kw">let</span> <span class="ident">allow_input</span> <span class="op">=</span> <span class="ident">output_variable</span>.<span class="ident">is_some</span>();
<span class="kw">let</span> <span class="ident">print_output</span> <span class="op">=</span> <span class="op">!</span><span class="ident">allow_input</span>;
<span class="kw">let</span> (<span class="ident">start_index</span>, <span class="ident">fail_on_error</span>) <span class="op">=</span>
<span class="kw">if</span> <span class="op">!</span><span class="ident">arguments</span>.<span class="ident">is_empty</span>() <span class="kw-2">&amp;</span><span class="op">&amp;</span> <span class="ident">arguments</span>[<span class="number">0</span>] <span class="op">=</span><span class="op">=</span> <span class="string">&quot;--fail-on-error&quot;</span> {
<span class="kw">if</span> <span class="ident">output_variable</span>.<span class="ident">is_some</span>() {
(<span class="number">1</span>, <span class="bool-val">true</span>)
} <span class="kw">else</span> {
(<span class="number">1</span>, <span class="bool-val">false</span>)
}
} <span class="kw">else</span> {
(<span class="number">0</span>, <span class="bool-val">false</span>)
};
<span class="kw">match</span> <span class="ident">exec</span>::<span class="ident">exec</span>(<span class="kw-2">&amp;</span><span class="ident">arguments</span>, <span class="ident">print_output</span>, <span class="ident">allow_input</span>, <span class="number">0</span>) {
<span class="prelude-val">Ok</span>((<span class="ident">stdout</span>, <span class="ident">stderr</span>, <span class="ident">exit_code</span>)) <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">match</span> <span class="ident">output_variable</span> {
<span class="prelude-val">Some</span>(<span class="ident">name</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">String</span>::<span class="ident">from</span>(<span class="kw-2">&amp;</span><span class="ident">name</span>);
<span class="ident">key</span>.<span class="ident">push_str</span>(<span class="string">&quot;.stdout&quot;</span>);
<span class="ident">variables</span>.<span class="ident">insert</span>(<span class="ident">key</span>.<span class="ident">clone</span>(), <span class="ident">stdout</span>);
<span class="kw">match</span> <span class="ident">exec</span>::<span class="ident">exec</span>(<span class="kw-2">&amp;</span><span class="ident">arguments</span>, <span class="ident">print_output</span>, <span class="ident">allow_input</span>, <span class="ident">start_index</span>) {
<span class="prelude-val">Ok</span>((<span class="ident">stdout</span>, <span class="ident">stderr</span>, <span class="ident">exit_code</span>)) <span class="op">=</span><span class="op">&gt;</span> <span class="kw">match</span> <span class="ident">output_variable</span> {
<span class="prelude-val">Some</span>(<span class="ident">name</span>) <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">String</span>::<span class="ident">from</span>(<span class="kw-2">&amp;</span><span class="ident">name</span>);
<span class="ident">key</span>.<span class="ident">push_str</span>(<span class="string">&quot;.stdout&quot;</span>);
<span class="ident">variables</span>.<span class="ident">insert</span>(<span class="ident">key</span>.<span class="ident">clone</span>(), <span class="ident">stdout</span>);
<span class="ident">key</span> <span class="op">=</span> <span class="ident">String</span>::<span class="ident">from</span>(<span class="kw-2">&amp;</span><span class="ident">name</span>);
<span class="ident">key</span>.<span class="ident">push_str</span>(<span class="string">&quot;.stderr&quot;</span>);
<span class="ident">variables</span>.<span class="ident">insert</span>(<span class="ident">key</span>.<span class="ident">clone</span>(), <span class="ident">stderr</span>);
<span class="ident">key</span> <span class="op">=</span> <span class="ident">String</span>::<span class="ident">from</span>(<span class="kw-2">&amp;</span><span class="ident">name</span>);
<span class="ident">key</span>.<span class="ident">push_str</span>(<span class="string">&quot;.stderr&quot;</span>);
<span class="ident">variables</span>.<span class="ident">insert</span>(<span class="ident">key</span>.<span class="ident">clone</span>(), <span class="ident">stderr</span>);
<span class="ident">key</span> <span class="op">=</span> <span class="ident">String</span>::<span class="ident">from</span>(<span class="kw-2">&amp;</span><span class="ident">name</span>);
<span class="ident">key</span>.<span class="ident">push_str</span>(<span class="string">&quot;.code&quot;</span>);
<span class="ident">variables</span>.<span class="ident">insert</span>(<span class="ident">key</span>.<span class="ident">clone</span>(), <span class="ident">exit_code</span>.<span class="ident">to_string</span>());
<span class="ident">key</span> <span class="op">=</span> <span class="ident">String</span>::<span class="ident">from</span>(<span class="kw-2">&amp;</span><span class="ident">name</span>);
<span class="ident">key</span>.<span class="ident">push_str</span>(<span class="string">&quot;.code&quot;</span>);
<span class="ident">variables</span>.<span class="ident">insert</span>(<span class="ident">key</span>.<span class="ident">clone</span>(), <span class="ident">exit_code</span>.<span class="ident">to_string</span>());
<span class="ident">CommandResult</span>::<span class="ident">Continue</span>(<span class="prelude-val">None</span>)
}
<span class="prelude-val">None</span> <span class="op">=</span><span class="op">&gt;</span> {
<span class="kw">if</span> <span class="ident">fail_on_error</span> <span class="kw-2">&amp;</span><span class="op">&amp;</span> <span class="ident">exit_code</span> <span class="op">!</span><span class="op">=</span> <span class="number">0</span> {
<span class="ident">CommandResult</span>::<span class="ident">Error</span>(
<span class="macro">format</span><span class="macro">!</span>(<span class="string">&quot;Error while executing command, exit code: {}&quot;</span>, <span class="ident">exit_code</span>)
.<span class="ident">to_string</span>(),
)
} <span class="kw">else</span> {
<span class="ident">CommandResult</span>::<span class="ident">Continue</span>(<span class="prelude-val">None</span>)
}
<span class="prelude-val">None</span> <span class="op">=</span><span class="op">&gt;</span> (),
};
<span class="ident">CommandResult</span>::<span class="ident">Continue</span>(<span class="prelude-val">None</span>)
}
}
},
<span class="prelude-val">Err</span>(<span class="ident">error</span>) <span class="op">=</span><span class="op">&gt;</span> <span class="ident">CommandResult</span>::<span class="ident">Error</span>(<span class="ident">error</span>),
}
}

View file

@ -1,6 +1,6 @@
[package]
name = "duckscript_cli"
version = "0.4.0"
version = "0.4.1"
authors = ["Sagie Gur-Ari <sagiegurari@gmail.com>"]
description = "The duckscript command line executable."
license = "Apache-2.0"
@ -28,7 +28,7 @@ path = "src/main.rs"
[dependencies]
duckscript = { version = "^0.4.0", path = "../duckscript" }
duckscriptsdk = { version = "^0.4.0", path = "../duckscript_sdk" }
duckscriptsdk = { version = "^0.4.1", path = "../duckscript_sdk" }
[badges.codecov]
branch = "master"

View file

@ -1,6 +1,6 @@
[package]
name = "duckscriptsdk"
version = "0.4.0"
version = "0.4.1"
authors = ["Sagie Gur-Ari <sagiegurari@gmail.com>"]
description = "The duckscript SDK."
license = "Apache-2.0"