Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit efc3028

Browse files
committedOct 6, 2022
deploy: c249eba
1 parent 7d30082 commit efc3028

File tree

76 files changed

+219
-109
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+219
-109
lines changed
 

‎dev/src/uu_ls/ls.rs.html

Lines changed: 86 additions & 30 deletions
Large diffs are not rendered by default.

‎dev/src/uu_rm/rm.rs.html

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,33 @@
492492
<span id="492">492</span>
493493
<span id="493">493</span>
494494
<span id="494">494</span>
495+
<span id="495">495</span>
496+
<span id="496">496</span>
497+
<span id="497">497</span>
498+
<span id="498">498</span>
499+
<span id="499">499</span>
500+
<span id="500">500</span>
501+
<span id="501">501</span>
502+
<span id="502">502</span>
503+
<span id="503">503</span>
504+
<span id="504">504</span>
505+
<span id="505">505</span>
506+
<span id="506">506</span>
507+
<span id="507">507</span>
508+
<span id="508">508</span>
509+
<span id="509">509</span>
510+
<span id="510">510</span>
511+
<span id="511">511</span>
512+
<span id="512">512</span>
513+
<span id="513">513</span>
514+
<span id="514">514</span>
515+
<span id="515">515</span>
516+
<span id="516">516</span>
517+
<span id="517">517</span>
518+
<span id="518">518</span>
519+
<span id="519">519</span>
520+
<span id="520">520</span>
521+
<span id="521">521</span>
495522
</pre><pre class="rust"><code><span class="comment">// * This file is part of the uutils coreutils package.</span>
496523
<span class="comment">// *</span>
497524
<span class="comment">// * (c) Alex Lyon &lt;arcterus@mail.com&gt;</span>
@@ -797,13 +824,36 @@
797824
}
798825
} <span class="kw">else</span> {
799826
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">dirs</span>: <span class="ident">VecDeque</span><span class="op">&lt;</span><span class="ident">DirEntry</span><span class="op">&gt;</span> <span class="op">=</span> <span class="ident">VecDeque::new</span>();
827+
<span class="comment">// The Paths to not descend into. We need to this because WalkDir doesn&#39;t have a way, afaik, to not descend into a directory</span>
828+
<span class="comment">// So we have to just ignore paths as they come up if they start with a path we aren&#39;t descending into</span>
829+
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">not_descended</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">PathBuf</span><span class="op">&gt;</span> <span class="op">=</span> <span class="ident">Vec::new</span>();
800830

801-
<span class="kw">for</span> <span class="ident">entry</span> <span class="kw">in</span> <span class="ident">WalkDir::new</span>(<span class="ident">path</span>) {
831+
<span class="lifetime">&#39;outer</span>: <span class="kw">for</span> <span class="ident">entry</span> <span class="kw">in</span> <span class="ident">WalkDir::new</span>(<span class="ident">path</span>) {
802832
<span class="kw">match</span> <span class="ident">entry</span> {
803833
<span class="prelude-val">Ok</span>(<span class="ident">entry</span>) =&gt; {
834+
<span class="kw">if</span> <span class="ident">options</span>.<span class="ident">interactive</span> <span class="op">==</span> <span class="ident">InteractiveMode::Always</span> {
835+
<span class="kw">for</span> <span class="ident">not_descend</span> <span class="kw">in</span> <span class="kw-2">&amp;</span><span class="ident">not_descended</span> {
836+
<span class="kw">if</span> <span class="ident">entry</span>.<span class="ident">path</span>().<span class="ident">starts_with</span>(<span class="ident">not_descend</span>) {
837+
<span class="comment">// We don&#39;t need to continue the rest of code in this loop if we are in a directory we don&#39;t want to descend into</span>
838+
<span class="kw">continue</span> <span class="lifetime">&#39;outer</span>;
839+
}
840+
}
841+
}
804842
<span class="kw">let</span> <span class="ident">file_type</span> <span class="op">=</span> <span class="ident">entry</span>.<span class="ident">file_type</span>();
805843
<span class="kw">if</span> <span class="ident">file_type</span>.<span class="ident">is_dir</span>() {
806-
<span class="ident">dirs</span>.<span class="ident">push_back</span>(<span class="ident">entry</span>);
844+
<span class="comment">// If we are in Interactive Mode Always and the directory isn&#39;t empty we ask if we should descend else we push this directory onto dirs vector</span>
845+
<span class="kw">if</span> <span class="ident">options</span>.<span class="ident">interactive</span> <span class="op">==</span> <span class="ident">InteractiveMode::Always</span>
846+
<span class="op">&amp;&amp;</span> <span class="ident">fs::read_dir</span>(<span class="ident">entry</span>.<span class="ident">path</span>()).<span class="ident">unwrap</span>().<span class="ident">count</span>() <span class="op">!</span><span class="op">=</span> <span class="number">0</span>
847+
{
848+
<span class="comment">// If we don&#39;t descend we push this directory onto our not_descended vector else we push this directory onto dirs vector</span>
849+
<span class="kw">if</span> <span class="ident">prompt_descend</span>(<span class="ident">entry</span>.<span class="ident">path</span>()) {
850+
<span class="ident">dirs</span>.<span class="ident">push_back</span>(<span class="ident">entry</span>);
851+
} <span class="kw">else</span> {
852+
<span class="ident">not_descended</span>.<span class="ident">push</span>(<span class="ident">entry</span>.<span class="ident">path</span>().<span class="ident">to_path_buf</span>());
853+
}
854+
} <span class="kw">else</span> {
855+
<span class="ident">dirs</span>.<span class="ident">push_back</span>(<span class="ident">entry</span>);
856+
}
807857
} <span class="kw">else</span> {
808858
<span class="ident">had_err</span> <span class="op">=</span> <span class="ident">remove_file</span>(<span class="ident">entry</span>.<span class="ident">path</span>(), <span class="ident">options</span>).<span class="ident">bitor</span>(<span class="ident">had_err</span>);
809859
}
@@ -941,6 +991,10 @@
941991
}
942992
}
943993

994+
<span class="kw">fn</span> <span class="ident">prompt_descend</span>(<span class="ident">path</span>: <span class="kw-2">&amp;</span><span class="ident">Path</span>) -&gt; <span class="ident">bool</span> {
995+
<span class="ident">prompt</span>(<span class="kw-2">&amp;</span>(<span class="macro">format!</span>(<span class="string">&quot;rm: descend into directory {}? &quot;</span>, <span class="ident">path</span>.<span class="ident">quote</span>())))
996+
}
997+
944998
<span class="kw">fn</span> <span class="ident">prompt_file</span>(<span class="ident">path</span>: <span class="kw-2">&amp;</span><span class="ident">Path</span>, <span class="ident">is_dir</span>: <span class="ident">bool</span>) -&gt; <span class="ident">bool</span> {
945999
<span class="kw">if</span> <span class="ident">is_dir</span> {
9461000
<span class="ident">prompt</span>(<span class="kw-2">&amp;</span>(<span class="macro">format!</span>(<span class="string">&quot;rm: remove directory {}? &quot;</span>, <span class="ident">path</span>.<span class="ident">quote</span>())))
There was a problem loading the remainder of the diff.

0 commit comments

Comments
 (0)
Failed to load comments.