From bbce459896daf3a14c6537bf5aee5833d3eede31 Mon Sep 17 00:00:00 2001 From: Mark van Seventer Date: Tue, 21 Jun 2022 20:10:18 -0400 Subject: [PATCH 1/2] Add dry run command. --- CHANGELOG.md | 3 +++ README.md | 1 + lib/cli.js | 7 +++++++ lib/convert.js | 5 ++--- test/convert.js | 6 ++++++ 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a3a1ce1..dd5b542 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## 2.2.0 +* Added `dry` command (do everything except write files). + ## 2.1.0 (June 19, 2022) * Added AVIF support. * Added GIF support. diff --git a/README.md b/README.md index 78c3451..952ad30 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,7 @@ Global Options --compressionLevel, -c zlib compression level [number] [default: 6] --delay Delay(s) between animation frames [number] --density DPI for vector images [number] [default: 72] + --dry, -n Do everything except write files [boolean] --format, -f Force output to a given format [choices: "input", "avif", "gif", "heif", "jpeg", "jpg", "png", "raw", "tiff", "webp"] [default: "input"] diff --git a/lib/cli.js b/lib/cli.js index f4821ec..ea1360b 100644 --- a/lib/cli.js +++ b/lib/cli.js @@ -69,6 +69,13 @@ const options = { type: 'number' }, + dry: { + alias: 'n', + desc: 'Do everything except write files', + group: _global, + type: 'boolean' + }, + // @see https://sharp.pixelplumbing.com/api-output#toformat format: { alias: 'f', diff --git a/lib/convert.js b/lib/convert.js index 85aed9b..583020e 100644 --- a/lib/convert.js +++ b/lib/convert.js @@ -109,10 +109,9 @@ module.exports = { }) } - // Write, attach info and return. + // Write to file unless we're doing a dry run, attach info and return. fs.createReadStream(src).pipe(transformer) - return transformer - .toFile(dest) + return Promise.resolve(args.dry ? transformer : transformer.toFile(dest)) .then((info) => Object.assign(info, { src, path: dest })) }) return Promise.all(promises) diff --git a/test/convert.js b/test/convert.js index 8c26142..0395807 100644 --- a/test/convert.js +++ b/test/convert.js @@ -95,6 +95,12 @@ describe('convert', () => { return convert .files([input], dest, {}) }) + it('must not write to disk if the dry flag is set', () => { + const out = path.join(dest, `{name}-${Math.random()}{ext}`) + return convert + .files([input], out, { dry: true }) + .then(() => expect(fs.existsSync(out)).to.be.false()) + }) }) describe('stream', () => { // Default output. From 9853fff810f55a6b6a4e884074f8a854edf158df Mon Sep 17 00:00:00 2001 From: Mark van Seventer Date: Tue, 21 Jun 2022 20:14:05 -0400 Subject: [PATCH 2/2] Fix wording. --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dd5b542..159cb65 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # Changelog ## 2.2.0 -* Added `dry` command (do everything except write files). +* Added `dry` (do everything except write files). ## 2.1.0 (June 19, 2022) * Added AVIF support.