<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="rustdoc">
<title>apipe</title>
</head>
<body class="rustdoc">
<h1 class="title">apipe</h1>
<nav id="TOC"><ul>
<li><a href="#usage">0.1 Usage</a><ul>
<li><a href="#try_fromstr">0.1.1 try_from(&str)</a><ul></ul></li>
<li><a href="#pipe-command-objects">0.1.2 Pipe Command Objects</a><ul></ul></li>
<li><a href="#builder">0.1.3 Builder</a><ul></ul></li></ul></li></ul></nav><p>A simple annonymous UNIX pipe type.</p>
<h2 id="usage"><a href="#usage">0.1 Usage</a></h2><h3 id="try_fromstr"><a href="#try_fromstr">0.1.1 try_from(&str)</a></h3>
<p>The probably easiest way to create a pipe is by parsing a command string:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">apipe::CommandPipe</span>;
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">pipe</span> <span class="op">=</span> <span class="ident">CommandPipe::try_from</span>(<span class="string">r#"echo "This is a test." | grep -Eo \w\w\sa[^.]*"#</span>)<span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">output</span> <span class="op">=</span> <span class="ident">pipe</span>.<span class="ident">spawn_with_output</span>()<span class="question-mark">?</span>
.<span class="ident">stdout</span>();
<span class="macro">assert_eq!</span>(<span class="kw-2">&</span><span class="ident">String::from_utf8_lossy</span>(<span class="ident">output</span>), <span class="string">"is a test\n"</span>);</code></pre></div>
<h3 id="pipe-command-objects"><a href="#pipe-command-objects">0.1.2 Pipe Command Objects</a></h3>
<p>Another way is to create the individual Commands and then contruct a pipe from them:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">apipe::Command</span>;
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">pipe</span> <span class="op">=</span> <span class="ident">Command::parse_str</span>(<span class="string">r#"echo "This is a test.""#</span>)<span class="question-mark">?</span> <span class="op">|</span> <span class="ident">Command::parse_str</span>(<span class="string">r#"grep -Eo \w\w\sa[^.]*"#</span>)<span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">output</span> <span class="op">=</span> <span class="ident">pipe</span>.<span class="ident">spawn_with_output</span>()<span class="question-mark">?</span>.<span class="ident">stdout</span>();
<span class="macro">assert_eq!</span>(<span class="kw-2">&</span><span class="ident">String::from_utf8_lossy</span>(<span class="ident">output</span>), <span class="string">"is a test\n"</span>);
</code></pre></div>
<p><code>Command</code>s can also be constructed manually if you want:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">command</span> <span class="op">=</span> <span class="ident">Command::new</span>(<span class="string">"ls"</span>).<span class="ident">arg</span>(<span class="string">"-la"</span>);</code></pre></div>
<h3 id="builder"><a href="#builder">0.1.3 Builder</a></h3>
<p>Finally, there is a conventional builder syntax:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">apipe::CommandPipe</span>;
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">pipe</span> <span class="op">=</span> <span class="ident">apipe::CommandPipe::new</span>();
<span class="ident">pipe</span>.<span class="ident">add_command</span>(<span class="string">"echo"</span>)
.<span class="ident">arg</span>(<span class="string">"This is a test."</span>)
.<span class="ident">add_command</span>(<span class="string">"grep"</span>)
.<span class="ident">arg</span>(<span class="string">"-Eo"</span>)
.<span class="ident">arg</span>(<span class="string">r"\w\w\sa[^.]*"</span>)
.<span class="ident">spawn</span>()<span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">output</span> <span class="op">=</span> <span class="ident">pipe</span>.<span class="ident">output</span>()<span class="question-mark">?</span>
.<span class="ident">stdout</span>();
<span class="macro">assert_eq!</span>(<span class="kw-2">&</span><span class="ident">String::from_utf8_lossy</span>(<span class="ident">output</span>), <span class="string">"is a test\n"</span>);</code></pre></div>
</body>
</html>