Skip to content

Commit 1d66893

Browse files
committed
deploy: 055173b
1 parent c254ec0 commit 1d66893

File tree

6 files changed

+144
-30
lines changed

6 files changed

+144
-30
lines changed

dev/src/uu_df/columns.rs.html

Lines changed: 60 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,26 @@
166166
<span id="164">164</span>
167167
<span id="165">165</span>
168168
<span id="166">166</span>
169+
<span id="167">167</span>
170+
<span id="168">168</span>
171+
<span id="169">169</span>
172+
<span id="170">170</span>
173+
<span id="171">171</span>
174+
<span id="172">172</span>
175+
<span id="173">173</span>
176+
<span id="174">174</span>
177+
<span id="175">175</span>
178+
<span id="176">176</span>
179+
<span id="177">177</span>
180+
<span id="178">178</span>
181+
<span id="179">179</span>
182+
<span id="180">180</span>
183+
<span id="181">181</span>
184+
<span id="182">182</span>
185+
<span id="183">183</span>
186+
<span id="184">184</span>
187+
<span id="185">185</span>
188+
<span id="186">186</span>
169189
</pre><pre class="rust"><code><span class="comment">// * This file is part of the uutils coreutils package.</span>
170190
<span class="comment">// *</span>
171191
<span class="comment">// * For the full copyright and license information, please view the LICENSE</span>
@@ -223,19 +243,31 @@
223243
<span class="ident">Capacity</span>,
224244
}
225245

246+
<span class="doccomment">/// An error while defining which columns to display in the output table.</span>
247+
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Debug</span>)]</span>
248+
<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">enum</span> <span class="ident">ColumnError</span> {
249+
<span class="doccomment">/// If a column appears more than once in the `--output` argument.</span>
250+
<span class="ident">MultipleColumns</span>(<span class="ident">String</span>),
251+
}
252+
226253
<span class="kw">impl</span> <span class="ident">Column</span> {
227254
<span class="doccomment">/// Convert from command-line arguments to sequence of columns.</span>
228255
<span class="doccomment">///</span>
229256
<span class="doccomment">/// The set of columns that will appear in the output table can be</span>
230257
<span class="doccomment">/// specified by command-line arguments. This function converts</span>
231258
<span class="doccomment">/// those arguments to a [`Vec`] of [`Column`] variants.</span>
232-
<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">from_matches</span>(<span class="ident">matches</span>: <span class="kw-2">&amp;</span><span class="ident">ArgMatches</span>) -&gt; <span class="ident">Vec</span><span class="op">&lt;</span><span class="self">Self</span><span class="op">&gt;</span> {
259+
<span class="doccomment">///</span>
260+
<span class="doccomment">/// # Errors</span>
261+
<span class="doccomment">///</span>
262+
<span class="doccomment">/// This function returns an error if a column is specified more</span>
263+
<span class="doccomment">/// than once in the command-line argument.</span>
264+
<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">from_matches</span>(<span class="ident">matches</span>: <span class="kw-2">&amp;</span><span class="ident">ArgMatches</span>) -&gt; <span class="prelude-ty">Result</span><span class="op">&lt;</span><span class="ident">Vec</span><span class="op">&lt;</span><span class="self">Self</span><span class="op">&gt;</span>, <span class="ident">ColumnError</span><span class="op">&gt;</span> {
233265
<span class="kw">match</span> (
234266
<span class="ident">matches</span>.<span class="ident">is_present</span>(<span class="ident">OPT_PRINT_TYPE</span>),
235267
<span class="ident">matches</span>.<span class="ident">is_present</span>(<span class="ident">OPT_INODES</span>),
236268
<span class="ident">matches</span>.<span class="ident">occurrences_of</span>(<span class="ident">OPT_OUTPUT</span>) <span class="op">&gt;</span> <span class="number">0</span>,
237269
) {
238-
(<span class="bool-val">false</span>, <span class="bool-val">false</span>, <span class="bool-val">false</span>) =&gt; <span class="macro">vec!</span>[
270+
(<span class="bool-val">false</span>, <span class="bool-val">false</span>, <span class="bool-val">false</span>) =&gt; <span class="prelude-val">Ok</span>(<span class="macro">vec!</span>[
239271
<span class="ident"><span class="self">Self</span>::Source</span>,
240272
<span class="ident"><span class="self">Self</span>::Size</span>,
241273
<span class="ident"><span class="self">Self</span>::Used</span>,
@@ -244,29 +276,37 @@
244276
<span class="ident"><span class="self">Self</span>::Capacity</span>,
245277
<span class="ident"><span class="self">Self</span>::Pcent</span>,
246278
<span class="ident"><span class="self">Self</span>::Target</span>,
247-
],
279+
]),
248280
(<span class="bool-val">false</span>, <span class="bool-val">false</span>, <span class="bool-val">true</span>) =&gt; {
249-
<span class="ident">matches</span>
250-
.<span class="ident">values_of</span>(<span class="ident">OPT_OUTPUT</span>)
251-
.<span class="ident">unwrap</span>()
252-
.<span class="ident">map</span>(<span class="op">|</span><span class="ident">s</span><span class="op">|</span> {
253-
<span class="comment">// Unwrapping here should not panic because the</span>
254-
<span class="comment">// command-line argument parsing library should be</span>
255-
<span class="comment">// responsible for ensuring each comma-separated</span>
256-
<span class="comment">// string is a valid column label.</span>
257-
<span class="ident"><span class="self">Self</span>::parse</span>(<span class="ident">s</span>).<span class="ident">unwrap</span>()
258-
})
259-
.<span class="ident">collect</span>()
281+
<span class="comment">// Unwrapping should not panic because in this arm of</span>
282+
<span class="comment">// the `match` statement, we know that `OPT_OUTPUT`</span>
283+
<span class="comment">// is non-empty.</span>
284+
<span class="kw">let</span> <span class="ident">names</span> <span class="op">=</span> <span class="ident">matches</span>.<span class="ident">values_of</span>(<span class="ident">OPT_OUTPUT</span>).<span class="ident">unwrap</span>();
285+
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">seen</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="kw-2">&amp;</span><span class="ident">str</span><span class="op">&gt;</span> <span class="op">=</span> <span class="macro">vec!</span>[];
286+
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">columns</span> <span class="op">=</span> <span class="macro">vec!</span>[];
287+
<span class="kw">for</span> <span class="ident">name</span> <span class="kw">in</span> <span class="ident">names</span> {
288+
<span class="kw">if</span> <span class="ident">seen</span>.<span class="ident">contains</span>(<span class="kw-2">&amp;</span><span class="ident">name</span>) {
289+
<span class="kw">return</span> <span class="prelude-val">Err</span>(<span class="ident">ColumnError::MultipleColumns</span>(<span class="ident">name</span>.<span class="ident">to_string</span>()));
290+
}
291+
<span class="ident">seen</span>.<span class="ident">push</span>(<span class="ident">name</span>);
292+
<span class="comment">// Unwrapping here should not panic because the</span>
293+
<span class="comment">// command-line argument parsing library should be</span>
294+
<span class="comment">// responsible for ensuring each comma-separated</span>
295+
<span class="comment">// string is a valid column label.</span>
296+
<span class="kw">let</span> <span class="ident">column</span> <span class="op">=</span> <span class="ident"><span class="self">Self</span>::parse</span>(<span class="ident">name</span>).<span class="ident">unwrap</span>();
297+
<span class="ident">columns</span>.<span class="ident">push</span>(<span class="ident">column</span>);
298+
}
299+
<span class="prelude-val">Ok</span>(<span class="ident">columns</span>)
260300
}
261-
(<span class="bool-val">false</span>, <span class="bool-val">true</span>, <span class="bool-val">false</span>) =&gt; <span class="macro">vec!</span>[
301+
(<span class="bool-val">false</span>, <span class="bool-val">true</span>, <span class="bool-val">false</span>) =&gt; <span class="prelude-val">Ok</span>(<span class="macro">vec!</span>[
262302
<span class="ident"><span class="self">Self</span>::Source</span>,
263303
<span class="ident"><span class="self">Self</span>::Itotal</span>,
264304
<span class="ident"><span class="self">Self</span>::Iused</span>,
265305
<span class="ident"><span class="self">Self</span>::Iavail</span>,
266306
<span class="ident"><span class="self">Self</span>::Ipcent</span>,
267307
<span class="ident"><span class="self">Self</span>::Target</span>,
268-
],
269-
(<span class="bool-val">true</span>, <span class="bool-val">false</span>, <span class="bool-val">false</span>) =&gt; <span class="macro">vec!</span>[
308+
]),
309+
(<span class="bool-val">true</span>, <span class="bool-val">false</span>, <span class="bool-val">false</span>) =&gt; <span class="prelude-val">Ok</span>(<span class="macro">vec!</span>[
270310
<span class="ident"><span class="self">Self</span>::Source</span>,
271311
<span class="ident"><span class="self">Self</span>::Fstype</span>,
272312
<span class="ident"><span class="self">Self</span>::Size</span>,
@@ -276,16 +316,16 @@
276316
<span class="ident"><span class="self">Self</span>::Capacity</span>,
277317
<span class="ident"><span class="self">Self</span>::Pcent</span>,
278318
<span class="ident"><span class="self">Self</span>::Target</span>,
279-
],
280-
(<span class="bool-val">true</span>, <span class="bool-val">true</span>, <span class="bool-val">false</span>) =&gt; <span class="macro">vec!</span>[
319+
]),
320+
(<span class="bool-val">true</span>, <span class="bool-val">true</span>, <span class="bool-val">false</span>) =&gt; <span class="prelude-val">Ok</span>(<span class="macro">vec!</span>[
281321
<span class="ident"><span class="self">Self</span>::Source</span>,
282322
<span class="ident"><span class="self">Self</span>::Fstype</span>,
283323
<span class="ident"><span class="self">Self</span>::Itotal</span>,
284324
<span class="ident"><span class="self">Self</span>::Iused</span>,
285325
<span class="ident"><span class="self">Self</span>::Iavail</span>,
286326
<span class="ident"><span class="self">Self</span>::Ipcent</span>,
287327
<span class="ident"><span class="self">Self</span>::Target</span>,
288-
],
328+
]),
289329
<span class="comment">// The command-line arguments -T and -i are each mutually</span>
290330
<span class="comment">// exclusive with --output, so the command-line argument</span>
291331
<span class="comment">// parser should reject those combinations before we get</span>

0 commit comments

Comments
 (0)