This commit is contained in:
sylvestre
2022-06-01 04:09:45 +00:00
parent 639de15cf9
commit facaabc42a
+50 -14
View File
@@ -794,6 +794,24 @@
<span id="789">789</span>
<span id="790">790</span>
<span id="791">791</span>
<span id="792">792</span>
<span id="793">793</span>
<span id="794">794</span>
<span id="795">795</span>
<span id="796">796</span>
<span id="797">797</span>
<span id="798">798</span>
<span id="799">799</span>
<span id="800">800</span>
<span id="801">801</span>
<span id="802">802</span>
<span id="803">803</span>
<span id="804">804</span>
<span id="805">805</span>
<span id="806">806</span>
<span id="807">807</span>
<span id="808">808</span>
<span id="809">809</span>
</pre><pre class="rust"><code><span class="comment">// * This file is part of the uutils coreutils package.</span>
<span class="comment">// *</span>
<span class="comment">// * For the full copyright and license information, please view the LICENSE</span>
@@ -1000,12 +1018,18 @@
<span class="comment">// numbers. We could split the options up into those groups to</span>
<span class="comment">// reduce the coupling between this `table.rs` module and the main</span>
<span class="comment">// `df.rs` module.</span>
<span class="doccomment">/// Whether to use the special rules for displaying the total row.</span>
<span class="ident">is_total_row</span>: <span class="ident">bool</span>,
}
<span class="kw">impl</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> <span class="ident">RowFormatter</span><span class="op">&lt;</span><span class="lifetime">&#39;a</span><span class="op">&gt;</span> {
<span class="doccomment">/// Instantiate this struct.</span>
<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">row</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">Row</span>, <span class="ident">options</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">Options</span>) -&gt; <span class="self">Self</span> {
<span class="self">Self</span> { <span class="ident">row</span>, <span class="ident">options</span> }
<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">row</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">Row</span>, <span class="ident">options</span>: <span class="kw-2">&amp;</span><span class="lifetime">&#39;a</span> <span class="ident">Options</span>, <span class="ident">is_total_row</span>: <span class="ident">bool</span>) -&gt; <span class="self">Self</span> {
<span class="self">Self</span> {
<span class="ident">row</span>,
<span class="ident">options</span>,
<span class="ident">is_total_row</span>,
}
}
<span class="doccomment">/// Get a string giving the scaled version of the input number.</span>
@@ -1047,13 +1071,25 @@
<span class="kw">for</span> <span class="ident">column</span> <span class="kw">in</span> <span class="kw-2">&amp;</span><span class="self">self</span>.<span class="ident">options</span>.<span class="ident">columns</span> {
<span class="kw">let</span> <span class="ident">string</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">column</span> {
<span class="ident">Column::Source</span> =&gt; <span class="self">self</span>.<span class="ident">row</span>.<span class="ident">fs_device</span>.<span class="ident">to_string</span>(),
<span class="ident">Column::Source</span> =&gt; {
<span class="kw">if</span> <span class="self">self</span>.<span class="ident">is_total_row</span> {
<span class="string">&quot;total&quot;</span>.<span class="ident">to_string</span>()
} <span class="kw">else</span> {
<span class="self">self</span>.<span class="ident">row</span>.<span class="ident">fs_device</span>.<span class="ident">to_string</span>()
}
}
<span class="ident">Column::Size</span> =&gt; <span class="self">self</span>.<span class="ident">scaled_bytes</span>(<span class="self">self</span>.<span class="ident">row</span>.<span class="ident">bytes</span>),
<span class="ident">Column::Used</span> =&gt; <span class="self">self</span>.<span class="ident">scaled_bytes</span>(<span class="self">self</span>.<span class="ident">row</span>.<span class="ident">bytes_used</span>),
<span class="ident">Column::Avail</span> =&gt; <span class="self">self</span>.<span class="ident">scaled_bytes</span>(<span class="self">self</span>.<span class="ident">row</span>.<span class="ident">bytes_avail</span>),
<span class="ident">Column::Pcent</span> =&gt; <span class="ident"><span class="self">Self</span>::percentage</span>(<span class="self">self</span>.<span class="ident">row</span>.<span class="ident">bytes_usage</span>),
<span class="ident">Column::Target</span> =&gt; <span class="self">self</span>.<span class="ident">row</span>.<span class="ident">fs_mount</span>.<span class="ident">to_string</span>(),
<span class="ident">Column::Target</span> =&gt; {
<span class="kw">if</span> <span class="self">self</span>.<span class="ident">is_total_row</span> <span class="op">&amp;&amp;</span> <span class="op">!</span><span class="self">self</span>.<span class="ident">options</span>.<span class="ident">columns</span>.<span class="ident">contains</span>(<span class="kw-2">&amp;</span><span class="ident">Column::Source</span>) {
<span class="string">&quot;total&quot;</span>.<span class="ident">to_string</span>()
} <span class="kw">else</span> {
<span class="self">self</span>.<span class="ident">row</span>.<span class="ident">fs_mount</span>.<span class="ident">to_string</span>()
}
}
<span class="ident">Column::Itotal</span> =&gt; <span class="self">self</span>.<span class="ident">scaled_inodes</span>(<span class="self">self</span>.<span class="ident">row</span>.<span class="ident">inodes</span>),
<span class="ident">Column::Iused</span> =&gt; <span class="self">self</span>.<span class="ident">scaled_inodes</span>(<span class="self">self</span>.<span class="ident">row</span>.<span class="ident">inodes_used</span>),
<span class="ident">Column::Iavail</span> =&gt; <span class="self">self</span>.<span class="ident">scaled_inodes</span>(<span class="self">self</span>.<span class="ident">row</span>.<span class="ident">inodes_free</span>),
@@ -1167,7 +1203,7 @@
<span class="comment">// the output table.</span>
<span class="kw">if</span> <span class="ident">options</span>.<span class="ident">show_all_fs</span> <span class="op">|</span><span class="op">|</span> <span class="ident">filesystem</span>.<span class="ident">usage</span>.<span class="ident">blocks</span> <span class="op">&gt;</span> <span class="number">0</span> {
<span class="kw">let</span> <span class="ident">row</span> <span class="op">=</span> <span class="ident">Row::from</span>(<span class="ident">filesystem</span>);
<span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&amp;</span><span class="ident">row</span>, <span class="ident">options</span>);
<span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&amp;</span><span class="ident">row</span>, <span class="ident">options</span>, <span class="bool-val">false</span>);
<span class="kw">let</span> <span class="ident">values</span> <span class="op">=</span> <span class="ident">fmt</span>.<span class="ident">get_values</span>();
<span class="ident">total</span> <span class="op">+</span><span class="op">=</span> <span class="ident">row</span>;
@@ -1182,7 +1218,7 @@
}
<span class="kw">if</span> <span class="ident">options</span>.<span class="ident">show_total</span> {
<span class="kw">let</span> <span class="ident">total_row</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&amp;</span><span class="ident">total</span>, <span class="ident">options</span>);
<span class="kw">let</span> <span class="ident">total_row</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&amp;</span><span class="ident">total</span>, <span class="ident">options</span>, <span class="bool-val">true</span>);
<span class="ident">rows</span>.<span class="ident">push</span>(<span class="ident">total_row</span>.<span class="ident">get_values</span>());
}
@@ -1421,7 +1457,7 @@
..<span class="ident">Default::default</span>()
};
<span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&amp;</span><span class="ident">row</span>, <span class="kw-2">&amp;</span><span class="ident">options</span>);
<span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&amp;</span><span class="ident">row</span>, <span class="kw-2">&amp;</span><span class="ident">options</span>, <span class="bool-val">false</span>);
<span class="macro">assert_eq!</span>(
<span class="ident">fmt</span>.<span class="ident">get_values</span>(),
<span class="macro">vec!</span>(<span class="string">&quot;my_device&quot;</span>, <span class="string">&quot;100&quot;</span>, <span class="string">&quot;25&quot;</span>, <span class="string">&quot;75&quot;</span>, <span class="string">&quot;25%&quot;</span>, <span class="string">&quot;my_mount&quot;</span>)
@@ -1447,7 +1483,7 @@
..<span class="ident">Default::default</span>()
};
<span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&amp;</span><span class="ident">row</span>, <span class="kw-2">&amp;</span><span class="ident">options</span>);
<span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&amp;</span><span class="ident">row</span>, <span class="kw-2">&amp;</span><span class="ident">options</span>, <span class="bool-val">false</span>);
<span class="macro">assert_eq!</span>(
<span class="ident">fmt</span>.<span class="ident">get_values</span>(),
<span class="macro">vec!</span>(<span class="string">&quot;my_device&quot;</span>, <span class="string">&quot;my_type&quot;</span>, <span class="string">&quot;100&quot;</span>, <span class="string">&quot;25&quot;</span>, <span class="string">&quot;75&quot;</span>, <span class="string">&quot;25%&quot;</span>, <span class="string">&quot;my_mount&quot;</span>)
@@ -1472,7 +1508,7 @@
..<span class="ident">Default::default</span>()
};
<span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&amp;</span><span class="ident">row</span>, <span class="kw-2">&amp;</span><span class="ident">options</span>);
<span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&amp;</span><span class="ident">row</span>, <span class="kw-2">&amp;</span><span class="ident">options</span>, <span class="bool-val">false</span>);
<span class="macro">assert_eq!</span>(
<span class="ident">fmt</span>.<span class="ident">get_values</span>(),
<span class="macro">vec!</span>(<span class="string">&quot;my_device&quot;</span>, <span class="string">&quot;10&quot;</span>, <span class="string">&quot;2&quot;</span>, <span class="string">&quot;8&quot;</span>, <span class="string">&quot;20%&quot;</span>, <span class="string">&quot;my_mount&quot;</span>)
@@ -1491,7 +1527,7 @@
<span class="ident">inodes</span>: <span class="number">10</span>,
..<span class="ident">Default::default</span>()
};
<span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&amp;</span><span class="ident">row</span>, <span class="kw-2">&amp;</span><span class="ident">options</span>);
<span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&amp;</span><span class="ident">row</span>, <span class="kw-2">&amp;</span><span class="ident">options</span>, <span class="bool-val">false</span>);
<span class="macro">assert_eq!</span>(<span class="ident">fmt</span>.<span class="ident">get_values</span>(), <span class="macro">vec!</span>(<span class="string">&quot;1&quot;</span>, <span class="string">&quot;10&quot;</span>));
}
@@ -1514,7 +1550,7 @@
..<span class="ident">Default::default</span>()
};
<span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&amp;</span><span class="ident">row</span>, <span class="kw-2">&amp;</span><span class="ident">options</span>);
<span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&amp;</span><span class="ident">row</span>, <span class="kw-2">&amp;</span><span class="ident">options</span>, <span class="bool-val">false</span>);
<span class="macro">assert_eq!</span>(
<span class="ident">fmt</span>.<span class="ident">get_values</span>(),
<span class="macro">vec!</span>(<span class="string">&quot;my_device&quot;</span>, <span class="string">&quot;my_type&quot;</span>, <span class="string">&quot;4k&quot;</span>, <span class="string">&quot;1k&quot;</span>, <span class="string">&quot;3k&quot;</span>, <span class="string">&quot;25%&quot;</span>, <span class="string">&quot;my_mount&quot;</span>)
@@ -1540,7 +1576,7 @@
..<span class="ident">Default::default</span>()
};
<span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&amp;</span><span class="ident">row</span>, <span class="kw-2">&amp;</span><span class="ident">options</span>);
<span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&amp;</span><span class="ident">row</span>, <span class="kw-2">&amp;</span><span class="ident">options</span>, <span class="bool-val">false</span>);
<span class="macro">assert_eq!</span>(
<span class="ident">fmt</span>.<span class="ident">get_values</span>(),
<span class="macro">vec!</span>(<span class="string">&quot;my_device&quot;</span>, <span class="string">&quot;my_type&quot;</span>, <span class="string">&quot;4K&quot;</span>, <span class="string">&quot;1K&quot;</span>, <span class="string">&quot;3K&quot;</span>, <span class="string">&quot;25%&quot;</span>, <span class="string">&quot;my_mount&quot;</span>)
@@ -1557,7 +1593,7 @@
<span class="ident">bytes_usage</span>: <span class="prelude-val">Some</span>(<span class="number">0.251</span>),
..<span class="ident">Default::default</span>()
};
<span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&amp;</span><span class="ident">row</span>, <span class="kw-2">&amp;</span><span class="ident">options</span>);
<span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&amp;</span><span class="ident">row</span>, <span class="kw-2">&amp;</span><span class="ident">options</span>, <span class="bool-val">false</span>);
<span class="macro">assert_eq!</span>(<span class="ident">fmt</span>.<span class="ident">get_values</span>(), <span class="macro">vec!</span>(<span class="string">&quot;26%&quot;</span>));
}
@@ -1576,7 +1612,7 @@
<span class="ident">bytes_avail</span>,
..<span class="ident">Default::default</span>()
};
<span class="ident">RowFormatter::new</span>(<span class="kw-2">&amp;</span><span class="ident">row</span>, <span class="kw-2">&amp;</span><span class="ident">options</span>).<span class="ident">get_values</span>()
<span class="ident">RowFormatter::new</span>(<span class="kw-2">&amp;</span><span class="ident">row</span>, <span class="kw-2">&amp;</span><span class="ident">options</span>, <span class="bool-val">false</span>).<span class="ident">get_values</span>()
}
<span class="macro">assert_eq!</span>(<span class="ident">get_formatted_values</span>(<span class="number">100</span>, <span class="number">100</span>, <span class="number">0</span>), <span class="macro">vec!</span>(<span class="string">&quot;1&quot;</span>, <span class="string">&quot;1&quot;</span>, <span class="string">&quot;0&quot;</span>));