|
794 | 794 | <span id="789">789</span>
|
795 | 795 | <span id="790">790</span>
|
796 | 796 | <span id="791">791</span>
|
| 797 | +<span id="792">792</span> |
| 798 | +<span id="793">793</span> |
| 799 | +<span id="794">794</span> |
| 800 | +<span id="795">795</span> |
| 801 | +<span id="796">796</span> |
| 802 | +<span id="797">797</span> |
| 803 | +<span id="798">798</span> |
| 804 | +<span id="799">799</span> |
| 805 | +<span id="800">800</span> |
| 806 | +<span id="801">801</span> |
| 807 | +<span id="802">802</span> |
| 808 | +<span id="803">803</span> |
| 809 | +<span id="804">804</span> |
| 810 | +<span id="805">805</span> |
| 811 | +<span id="806">806</span> |
| 812 | +<span id="807">807</span> |
| 813 | +<span id="808">808</span> |
| 814 | +<span id="809">809</span> |
797 | 815 | </pre><pre class="rust"><code><span class="comment">// * This file is part of the uutils coreutils package.</span>
|
798 | 816 | <span class="comment">// *</span>
|
799 | 817 | <span class="comment">// * For the full copyright and license information, please view the LICENSE</span>
|
|
1000 | 1018 | <span class="comment">// numbers. We could split the options up into those groups to</span>
|
1001 | 1019 | <span class="comment">// reduce the coupling between this `table.rs` module and the main</span>
|
1002 | 1020 | <span class="comment">// `df.rs` module.</span>
|
| 1021 | + <span class="doccomment">/// Whether to use the special rules for displaying the total row.</span> |
| 1022 | + <span class="ident">is_total_row</span>: <span class="ident">bool</span>, |
1003 | 1023 | }
|
1004 | 1024 |
|
1005 | 1025 | <span class="kw">impl</span><span class="op"><</span><span class="lifetime">'a</span><span class="op">></span> <span class="ident">RowFormatter</span><span class="op"><</span><span class="lifetime">'a</span><span class="op">></span> {
|
1006 | 1026 | <span class="doccomment">/// Instantiate this struct.</span>
|
1007 |
| - <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">&</span><span class="lifetime">'a</span> <span class="ident">Row</span>, <span class="ident">options</span>: <span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">Options</span>) -> <span class="self">Self</span> { |
1008 |
| - <span class="self">Self</span> { <span class="ident">row</span>, <span class="ident">options</span> } |
| 1027 | + <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">&</span><span class="lifetime">'a</span> <span class="ident">Row</span>, <span class="ident">options</span>: <span class="kw-2">&</span><span class="lifetime">'a</span> <span class="ident">Options</span>, <span class="ident">is_total_row</span>: <span class="ident">bool</span>) -> <span class="self">Self</span> { |
| 1028 | + <span class="self">Self</span> { |
| 1029 | + <span class="ident">row</span>, |
| 1030 | + <span class="ident">options</span>, |
| 1031 | + <span class="ident">is_total_row</span>, |
| 1032 | + } |
1009 | 1033 | }
|
1010 | 1034 |
|
1011 | 1035 | <span class="doccomment">/// Get a string giving the scaled version of the input number.</span>
|
|
1047 | 1071 |
|
1048 | 1072 | <span class="kw">for</span> <span class="ident">column</span> <span class="kw">in</span> <span class="kw-2">&</span><span class="self">self</span>.<span class="ident">options</span>.<span class="ident">columns</span> {
|
1049 | 1073 | <span class="kw">let</span> <span class="ident">string</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">column</span> {
|
1050 |
| - <span class="ident">Column::Source</span> => <span class="self">self</span>.<span class="ident">row</span>.<span class="ident">fs_device</span>.<span class="ident">to_string</span>(), |
| 1074 | + <span class="ident">Column::Source</span> => { |
| 1075 | + <span class="kw">if</span> <span class="self">self</span>.<span class="ident">is_total_row</span> { |
| 1076 | + <span class="string">"total"</span>.<span class="ident">to_string</span>() |
| 1077 | + } <span class="kw">else</span> { |
| 1078 | + <span class="self">self</span>.<span class="ident">row</span>.<span class="ident">fs_device</span>.<span class="ident">to_string</span>() |
| 1079 | + } |
| 1080 | + } |
1051 | 1081 | <span class="ident">Column::Size</span> => <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>),
|
1052 | 1082 | <span class="ident">Column::Used</span> => <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>),
|
1053 | 1083 | <span class="ident">Column::Avail</span> => <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>),
|
1054 | 1084 | <span class="ident">Column::Pcent</span> => <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>),
|
1055 | 1085 |
|
1056 |
| - <span class="ident">Column::Target</span> => <span class="self">self</span>.<span class="ident">row</span>.<span class="ident">fs_mount</span>.<span class="ident">to_string</span>(), |
| 1086 | + <span class="ident">Column::Target</span> => { |
| 1087 | + <span class="kw">if</span> <span class="self">self</span>.<span class="ident">is_total_row</span> <span class="op">&&</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">&</span><span class="ident">Column::Source</span>) { |
| 1088 | + <span class="string">"total"</span>.<span class="ident">to_string</span>() |
| 1089 | + } <span class="kw">else</span> { |
| 1090 | + <span class="self">self</span>.<span class="ident">row</span>.<span class="ident">fs_mount</span>.<span class="ident">to_string</span>() |
| 1091 | + } |
| 1092 | + } |
1057 | 1093 | <span class="ident">Column::Itotal</span> => <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>),
|
1058 | 1094 | <span class="ident">Column::Iused</span> => <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>),
|
1059 | 1095 | <span class="ident">Column::Iavail</span> => <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 | 1203 | <span class="comment">// the output table.</span>
|
1168 | 1204 | <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">></span> <span class="number">0</span> {
|
1169 | 1205 | <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>);
|
1170 |
| - <span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&</span><span class="ident">row</span>, <span class="ident">options</span>); |
| 1206 | + <span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&</span><span class="ident">row</span>, <span class="ident">options</span>, <span class="bool-val">false</span>); |
1171 | 1207 | <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>();
|
1172 | 1208 | <span class="ident">total</span> <span class="op">+</span><span class="op">=</span> <span class="ident">row</span>;
|
1173 | 1209 |
|
|
1182 | 1218 | }
|
1183 | 1219 |
|
1184 | 1220 | <span class="kw">if</span> <span class="ident">options</span>.<span class="ident">show_total</span> {
|
1185 |
| - <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">&</span><span class="ident">total</span>, <span class="ident">options</span>); |
| 1221 | + <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">&</span><span class="ident">total</span>, <span class="ident">options</span>, <span class="bool-val">true</span>); |
1186 | 1222 | <span class="ident">rows</span>.<span class="ident">push</span>(<span class="ident">total_row</span>.<span class="ident">get_values</span>());
|
1187 | 1223 | }
|
1188 | 1224 |
|
|
1421 | 1457 |
|
1422 | 1458 | ..<span class="ident">Default::default</span>()
|
1423 | 1459 | };
|
1424 |
| - <span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&</span><span class="ident">row</span>, <span class="kw-2">&</span><span class="ident">options</span>); |
| 1460 | + <span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&</span><span class="ident">row</span>, <span class="kw-2">&</span><span class="ident">options</span>, <span class="bool-val">false</span>); |
1425 | 1461 | <span class="macro">assert_eq!</span>(
|
1426 | 1462 | <span class="ident">fmt</span>.<span class="ident">get_values</span>(),
|
1427 | 1463 | <span class="macro">vec!</span>(<span class="string">"my_device"</span>, <span class="string">"100"</span>, <span class="string">"25"</span>, <span class="string">"75"</span>, <span class="string">"25%"</span>, <span class="string">"my_mount"</span>)
|
|
1447 | 1483 |
|
1448 | 1484 | ..<span class="ident">Default::default</span>()
|
1449 | 1485 | };
|
1450 |
| - <span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&</span><span class="ident">row</span>, <span class="kw-2">&</span><span class="ident">options</span>); |
| 1486 | + <span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&</span><span class="ident">row</span>, <span class="kw-2">&</span><span class="ident">options</span>, <span class="bool-val">false</span>); |
1451 | 1487 | <span class="macro">assert_eq!</span>(
|
1452 | 1488 | <span class="ident">fmt</span>.<span class="ident">get_values</span>(),
|
1453 | 1489 | <span class="macro">vec!</span>(<span class="string">"my_device"</span>, <span class="string">"my_type"</span>, <span class="string">"100"</span>, <span class="string">"25"</span>, <span class="string">"75"</span>, <span class="string">"25%"</span>, <span class="string">"my_mount"</span>)
|
|
1472 | 1508 |
|
1473 | 1509 | ..<span class="ident">Default::default</span>()
|
1474 | 1510 | };
|
1475 |
| - <span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&</span><span class="ident">row</span>, <span class="kw-2">&</span><span class="ident">options</span>); |
| 1511 | + <span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&</span><span class="ident">row</span>, <span class="kw-2">&</span><span class="ident">options</span>, <span class="bool-val">false</span>); |
1476 | 1512 | <span class="macro">assert_eq!</span>(
|
1477 | 1513 | <span class="ident">fmt</span>.<span class="ident">get_values</span>(),
|
1478 | 1514 | <span class="macro">vec!</span>(<span class="string">"my_device"</span>, <span class="string">"10"</span>, <span class="string">"2"</span>, <span class="string">"8"</span>, <span class="string">"20%"</span>, <span class="string">"my_mount"</span>)
|
|
1491 | 1527 | <span class="ident">inodes</span>: <span class="number">10</span>,
|
1492 | 1528 | ..<span class="ident">Default::default</span>()
|
1493 | 1529 | };
|
1494 |
| - <span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&</span><span class="ident">row</span>, <span class="kw-2">&</span><span class="ident">options</span>); |
| 1530 | + <span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&</span><span class="ident">row</span>, <span class="kw-2">&</span><span class="ident">options</span>, <span class="bool-val">false</span>); |
1495 | 1531 | <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">"1"</span>, <span class="string">"10"</span>));
|
1496 | 1532 | }
|
1497 | 1533 |
|
|
1514 | 1550 |
|
1515 | 1551 | ..<span class="ident">Default::default</span>()
|
1516 | 1552 | };
|
1517 |
| - <span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&</span><span class="ident">row</span>, <span class="kw-2">&</span><span class="ident">options</span>); |
| 1553 | + <span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&</span><span class="ident">row</span>, <span class="kw-2">&</span><span class="ident">options</span>, <span class="bool-val">false</span>); |
1518 | 1554 | <span class="macro">assert_eq!</span>(
|
1519 | 1555 | <span class="ident">fmt</span>.<span class="ident">get_values</span>(),
|
1520 | 1556 | <span class="macro">vec!</span>(<span class="string">"my_device"</span>, <span class="string">"my_type"</span>, <span class="string">"4k"</span>, <span class="string">"1k"</span>, <span class="string">"3k"</span>, <span class="string">"25%"</span>, <span class="string">"my_mount"</span>)
|
|
1540 | 1576 |
|
1541 | 1577 | ..<span class="ident">Default::default</span>()
|
1542 | 1578 | };
|
1543 |
| - <span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&</span><span class="ident">row</span>, <span class="kw-2">&</span><span class="ident">options</span>); |
| 1579 | + <span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&</span><span class="ident">row</span>, <span class="kw-2">&</span><span class="ident">options</span>, <span class="bool-val">false</span>); |
1544 | 1580 | <span class="macro">assert_eq!</span>(
|
1545 | 1581 | <span class="ident">fmt</span>.<span class="ident">get_values</span>(),
|
1546 | 1582 | <span class="macro">vec!</span>(<span class="string">"my_device"</span>, <span class="string">"my_type"</span>, <span class="string">"4K"</span>, <span class="string">"1K"</span>, <span class="string">"3K"</span>, <span class="string">"25%"</span>, <span class="string">"my_mount"</span>)
|
|
1557 | 1593 | <span class="ident">bytes_usage</span>: <span class="prelude-val">Some</span>(<span class="number">0.251</span>),
|
1558 | 1594 | ..<span class="ident">Default::default</span>()
|
1559 | 1595 | };
|
1560 |
| - <span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&</span><span class="ident">row</span>, <span class="kw-2">&</span><span class="ident">options</span>); |
| 1596 | + <span class="kw">let</span> <span class="ident">fmt</span> <span class="op">=</span> <span class="ident">RowFormatter::new</span>(<span class="kw-2">&</span><span class="ident">row</span>, <span class="kw-2">&</span><span class="ident">options</span>, <span class="bool-val">false</span>); |
1561 | 1597 | <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">"26%"</span>));
|
1562 | 1598 | }
|
1563 | 1599 |
|
|
1576 | 1612 | <span class="ident">bytes_avail</span>,
|
1577 | 1613 | ..<span class="ident">Default::default</span>()
|
1578 | 1614 | };
|
1579 |
| - <span class="ident">RowFormatter::new</span>(<span class="kw-2">&</span><span class="ident">row</span>, <span class="kw-2">&</span><span class="ident">options</span>).<span class="ident">get_values</span>() |
| 1615 | + <span class="ident">RowFormatter::new</span>(<span class="kw-2">&</span><span class="ident">row</span>, <span class="kw-2">&</span><span class="ident">options</span>, <span class="bool-val">false</span>).<span class="ident">get_values</span>() |
1580 | 1616 | }
|
1581 | 1617 |
|
1582 | 1618 | <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">"1"</span>, <span class="string">"1"</span>, <span class="string">"0"</span>));
|
|
0 commit comments