diff --git a/cli.js b/cli.js index cf7059d..9d76ac9 100755 --- a/cli.js +++ b/cli.js @@ -3,6 +3,14 @@ import process from 'node:process'; import meow from 'meow'; import {deleteAsync} from 'del'; +const logEvent = event => { + if (event.path !== undefined) { + console.log(event.path); + } +}; + +const noop = () => {}; + const cli = meow(` Usage $ del … @@ -10,6 +18,7 @@ const cli = meow(` Options --force, -f Allow deleting the current working directory and outside --dry-run, -d List what would be deleted instead of deleting + --verbose, -v Display the absolute path of files and directories as they are deleted Examples $ del unicorn.png rainbow.png @@ -25,6 +34,10 @@ const cli = meow(` type: 'boolean', alias: 'd', }, + verbose: { + type: 'boolean', + alias: 'v', + }, }, }); @@ -32,7 +45,11 @@ if (cli.input.length === 0) { console.error('Specify at least one path'); process.exitCode = 1; } else { - const files = await deleteAsync(cli.input, cli.flags); + const {verbose, ...flags} = cli.flags; + + const onProgress = verbose ? logEvent : noop; + + const files = await deleteAsync(cli.input, {onProgress, ...flags}); if (cli.flags.dryRun) { console.log(files.join('\n')); diff --git a/package.json b/package.json index 1e7ebac..5e50428 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "cross-platform" ], "dependencies": { - "del": "^7.0.0", + "del": "^7.1.0", "meow": "^10.1.3" }, "devDependencies": { diff --git a/readme.md b/readme.md index edd6aee..35bb8bd 100644 --- a/readme.md +++ b/readme.md @@ -23,6 +23,7 @@ $ del --help Options --force, -f Allow deleting the current working directory and outside --dry-run, -d List what would be deleted instead of deleting + --verbose, -v Display the absolute path of files and directories as they are deleted Examples $ del unicorn.png rainbow.png diff --git a/test.js b/test.js index 9266673..a619a3a 100644 --- a/test.js +++ b/test.js @@ -8,3 +8,14 @@ test('main', async t => { await execa('./cli.js', ['--force', filename]); t.false(fs.existsSync(filename)); }); + +test('verbose file exists', async t => { + const filename = tempWrite.sync('foo'); + const {stdout} = await execa('./cli.js', ['--force', '--verbose', filename]); + t.is(stdout, filename); +}); + +test('verbose file does not exist', async t => { + const {stdout} = await execa('./cli.js', ['--verbose', 'does-not-exist.txt']); + t.is(stdout, ''); +});