@lexmanh/shed-cli 0.2.0-beta.5 → 0.2.0-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +122 -2
- package/package.json +2 -2
package/dist/cli.js
CHANGED
|
@@ -230,6 +230,122 @@ async function cleanCommand(path = ".", options = {}) {
|
|
|
230
230
|
p.outro(outro6);
|
|
231
231
|
}
|
|
232
232
|
|
|
233
|
+
// src/commands/completions.ts
|
|
234
|
+
var BASH = `# shed bash completion
|
|
235
|
+
_shed_completions() {
|
|
236
|
+
local cur prev cmds
|
|
237
|
+
COMPREPLY=()
|
|
238
|
+
cur="\${COMP_WORDS[COMP_CWORD]}"
|
|
239
|
+
prev="\${COMP_WORDS[COMP_CWORD-1]}"
|
|
240
|
+
cmds="scan clean undo doctor config completions"
|
|
241
|
+
|
|
242
|
+
case "\${prev}" in
|
|
243
|
+
scan)
|
|
244
|
+
COMPREPLY=( $(compgen -W "--json --max-age --all" -- "\${cur}") )
|
|
245
|
+
return 0
|
|
246
|
+
;;
|
|
247
|
+
clean)
|
|
248
|
+
COMPREPLY=( $(compgen -W "--dry-run --execute --hard-delete --include-red --yes" -- "\${cur}") )
|
|
249
|
+
return 0
|
|
250
|
+
;;
|
|
251
|
+
config)
|
|
252
|
+
COMPREPLY=( $(compgen -W "get set list reset" -- "\${cur}") )
|
|
253
|
+
return 0
|
|
254
|
+
;;
|
|
255
|
+
completions)
|
|
256
|
+
COMPREPLY=( $(compgen -W "bash zsh fish" -- "\${cur}") )
|
|
257
|
+
return 0
|
|
258
|
+
;;
|
|
259
|
+
esac
|
|
260
|
+
|
|
261
|
+
if [ "\${COMP_CWORD}" -eq 1 ]; then
|
|
262
|
+
COMPREPLY=( $(compgen -W "\${cmds} --version --help --verbose" -- "\${cur}") )
|
|
263
|
+
return 0
|
|
264
|
+
fi
|
|
265
|
+
}
|
|
266
|
+
complete -F _shed_completions shed
|
|
267
|
+
`;
|
|
268
|
+
var ZSH = `#compdef shed
|
|
269
|
+
# shed zsh completion
|
|
270
|
+
|
|
271
|
+
_shed() {
|
|
272
|
+
local -a commands
|
|
273
|
+
commands=(
|
|
274
|
+
'scan:Scan for cleanable items without modifying anything'
|
|
275
|
+
'clean:Interactive cleanup of detected items'
|
|
276
|
+
'undo:List and restore items from previous cleanups'
|
|
277
|
+
'doctor:Check environment and configuration'
|
|
278
|
+
'config:Manage user preferences'
|
|
279
|
+
'completions:Print shell completion script (bash | zsh | fish)'
|
|
280
|
+
)
|
|
281
|
+
|
|
282
|
+
if (( CURRENT == 2 )); then
|
|
283
|
+
_describe -t commands 'shed command' commands
|
|
284
|
+
return
|
|
285
|
+
fi
|
|
286
|
+
|
|
287
|
+
case "\${words[2]}" in
|
|
288
|
+
scan)
|
|
289
|
+
_arguments \\
|
|
290
|
+
'--json[Output machine-readable JSON]' \\
|
|
291
|
+
'--max-age[Only include items older than N days]:days' \\
|
|
292
|
+
'--all[Show every item (default: compact summary)]'
|
|
293
|
+
;;
|
|
294
|
+
clean)
|
|
295
|
+
_arguments \\
|
|
296
|
+
'--dry-run[Preview operations without executing]' \\
|
|
297
|
+
'--execute[Actually perform the cleanup]' \\
|
|
298
|
+
'--hard-delete[Skip Trash, delete permanently]' \\
|
|
299
|
+
'--include-red[Include Red-tier (high-risk) items]' \\
|
|
300
|
+
'--yes[Skip interactive confirmations (CI mode)]'
|
|
301
|
+
;;
|
|
302
|
+
config)
|
|
303
|
+
_values 'config action' get set list reset
|
|
304
|
+
;;
|
|
305
|
+
completions)
|
|
306
|
+
_values 'shell' bash zsh fish
|
|
307
|
+
;;
|
|
308
|
+
esac
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
_shed "$@"
|
|
312
|
+
`;
|
|
313
|
+
var FISH = `# shed fish completion
|
|
314
|
+
complete -c shed -f
|
|
315
|
+
|
|
316
|
+
# subcommands
|
|
317
|
+
complete -c shed -n '__fish_use_subcommand' -a 'scan' -d 'Scan for cleanable items'
|
|
318
|
+
complete -c shed -n '__fish_use_subcommand' -a 'clean' -d 'Interactive cleanup'
|
|
319
|
+
complete -c shed -n '__fish_use_subcommand' -a 'undo' -d 'Restore from previous cleanups'
|
|
320
|
+
complete -c shed -n '__fish_use_subcommand' -a 'doctor' -d 'Check environment'
|
|
321
|
+
complete -c shed -n '__fish_use_subcommand' -a 'config' -d 'Manage preferences'
|
|
322
|
+
complete -c shed -n '__fish_use_subcommand' -a 'completions' -d 'Print shell completion script'
|
|
323
|
+
|
|
324
|
+
# scan flags
|
|
325
|
+
complete -c shed -n '__fish_seen_subcommand_from scan' -l json -d 'Output JSON'
|
|
326
|
+
complete -c shed -n '__fish_seen_subcommand_from scan' -l max-age -d 'Min age in days'
|
|
327
|
+
complete -c shed -n '__fish_seen_subcommand_from scan' -l all -d 'Show every item'
|
|
328
|
+
|
|
329
|
+
# clean flags
|
|
330
|
+
complete -c shed -n '__fish_seen_subcommand_from clean' -l dry-run -d 'Preview only'
|
|
331
|
+
complete -c shed -n '__fish_seen_subcommand_from clean' -l execute -d 'Actually delete'
|
|
332
|
+
complete -c shed -n '__fish_seen_subcommand_from clean' -l hard-delete -d 'Skip Trash'
|
|
333
|
+
complete -c shed -n '__fish_seen_subcommand_from clean' -l include-red -d 'Include Red tier'
|
|
334
|
+
complete -c shed -n '__fish_seen_subcommand_from clean' -l yes -d 'Skip confirmations'
|
|
335
|
+
|
|
336
|
+
# config + completions argument values
|
|
337
|
+
complete -c shed -n '__fish_seen_subcommand_from config' -a 'get set list reset'
|
|
338
|
+
complete -c shed -n '__fish_seen_subcommand_from completions' -a 'bash zsh fish'
|
|
339
|
+
`;
|
|
340
|
+
var SCRIPTS = { bash: BASH, zsh: ZSH, fish: FISH };
|
|
341
|
+
function completionsCommand(shell) {
|
|
342
|
+
if (shell !== "bash" && shell !== "zsh" && shell !== "fish") {
|
|
343
|
+
console.error("shed completions: shell must be one of: bash, zsh, fish");
|
|
344
|
+
process.exit(1);
|
|
345
|
+
}
|
|
346
|
+
process.stdout.write(SCRIPTS[shell]);
|
|
347
|
+
}
|
|
348
|
+
|
|
233
349
|
// src/commands/config.ts
|
|
234
350
|
import * as p2 from "@clack/prompts";
|
|
235
351
|
import Conf from "conf";
|
|
@@ -446,10 +562,12 @@ function aggregateForDisplay(items) {
|
|
|
446
562
|
if (!first) continue;
|
|
447
563
|
const totalBytes = arr.reduce((s, i) => s + i.sizeBytes, 0);
|
|
448
564
|
const kind = first.metadata?.kind;
|
|
565
|
+
const parentDir = dirname(first.path);
|
|
566
|
+
const displayPath = parentDir === "." ? kind : parentDir;
|
|
449
567
|
result.push({
|
|
450
568
|
type: "aggregate",
|
|
451
569
|
risk: first.risk,
|
|
452
|
-
displayPath
|
|
570
|
+
displayPath,
|
|
453
571
|
description: `${arr.length} ${kind} files`,
|
|
454
572
|
totalBytes,
|
|
455
573
|
detector: first.detector,
|
|
@@ -744,11 +862,13 @@ program.command("clean [path]").description("Interactive cleanup of detected ite
|
|
|
744
862
|
program.command("undo").description("List and restore items from previous cleanups").action(undoCommand);
|
|
745
863
|
program.command("doctor").description("Check environment and configuration").action(doctorCommand);
|
|
746
864
|
program.command("config").description("Manage user preferences").argument("[action]", "get | set | list | reset").argument("[key]", "Configuration key").argument("[value]", "Configuration value (for set)").action(configCommand);
|
|
865
|
+
program.command("completions").description("Print shell completion script").argument("<shell>", "bash | zsh | fish").action(completionsCommand);
|
|
747
866
|
program.hook("preAction", (_thisCommand, actionCommand) => {
|
|
748
867
|
const opts = program.opts();
|
|
749
868
|
setVerbose(opts.verbose ?? false);
|
|
750
869
|
const cmdOpts = actionCommand.opts();
|
|
751
|
-
|
|
870
|
+
const isCompletions = actionCommand.name() === "completions";
|
|
871
|
+
if (!cmdOpts.json && !isCompletions) printLogo(version);
|
|
752
872
|
});
|
|
753
873
|
program.parseAsync(process.argv).catch((err) => {
|
|
754
874
|
console.error("shed: fatal error:", err instanceof Error ? err.message : err);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lexmanh/shed-cli",
|
|
3
|
-
"version": "0.2.0-beta.
|
|
3
|
+
"version": "0.2.0-beta.7",
|
|
4
4
|
"description": "Safe disk cleanup CLI for dev machines and Linux servers — git-aware, cross-stack, trash-by-default",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"conf": "^13.1.0",
|
|
24
24
|
"execa": "^9.5.0",
|
|
25
25
|
"picocolors": "^1.1.1",
|
|
26
|
-
"@lexmanh/shed-core": "0.2.0-beta.
|
|
26
|
+
"@lexmanh/shed-core": "0.2.0-beta.7"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@types/node": "^22.10.0",
|