Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions scripts/test-all.sh
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,11 @@ assert_ok "rtk ls multi paths" rtk ls src/ scripts/
assert_contains "rtk ls -a shows hidden" ".git" rtk ls -a .
assert_contains "rtk ls shows sizes" "K" rtk ls src/
assert_contains "rtk ls shows dirs with /" "/" rtk ls .
assert_ok "rtk ls -1 (filters no-metadata)" rtk ls -1 .
assert_ok "rtk ls -F (filters duplicate /)" rtk ls -F .
assert_ok "rtk ls -p (filters duplicate /)" rtk ls -p .
assert_ok "rtk ls -CmDgiosx (parser breakers)" rtk ls -CmDgiosx .
assert_ok "rtk ls -1Fp combined" rtk ls -1Fp .

# ── 2b. Tree ─────────────────────────────────────────

Expand Down
22 changes: 20 additions & 2 deletions src/cmds/system/ls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@ pub fn run(args: &[String], verbose: u8) -> Result<()> {
.collect();

// Build ls -la + any extra flags the user passed (e.g. -R)
// Strip -l, -a, -h (we handle all of these ourselves)
// Filter flags that break parsing (-1, -C, -m, -D, -g, -o, -i, -s, -x),
// cause visual issues (-F, -p), or are RTK-handled (-l, -a, -h).
let mut cmd = resolved_command("ls");
cmd.arg("-la");
for flag in &flags {
Expand All @@ -65,7 +66,24 @@ pub fn run(args: &[String], verbose: u8) -> Result<()> {
let stripped = flag.trim_start_matches('-');
let extra: String = stripped
.chars()
.filter(|c| *c != 'l' && *c != 'a' && *c != 'h')
.filter(|c| {
!matches!(
c,
'l' | 'a'
| 'h'
| '1'
| 'C'
| 'm'
| 'D'
| 'g'
| 'o'
| 'i'
| 's'
| 'x'
| 'F'
| 'p'
)
})
.collect();
if !extra.is_empty() {
cmd.arg(format!("-{}", extra));
Expand Down