@macrulez/devtoolz 0.3.3 → 0.4.1

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.
Files changed (85) hide show
  1. package/README.md +79 -3
  2. package/dist/cli.js +3 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/image-batch/backup.d.ts +22 -0
  5. package/dist/commands/image-batch/backup.js +55 -0
  6. package/dist/commands/image-batch/backup.js.map +1 -0
  7. package/dist/commands/image-batch/cache.d.ts +15 -0
  8. package/dist/commands/image-batch/cache.js +38 -0
  9. package/dist/commands/image-batch/cache.js.map +1 -0
  10. package/dist/commands/image-batch/cli.d.ts +15 -0
  11. package/dist/commands/image-batch/cli.js +307 -0
  12. package/dist/commands/image-batch/cli.js.map +1 -0
  13. package/dist/commands/image-batch/codecs.d.ts +38 -0
  14. package/dist/commands/image-batch/codecs.js +366 -0
  15. package/dist/commands/image-batch/codecs.js.map +1 -0
  16. package/dist/commands/image-batch/config.d.ts +120 -0
  17. package/dist/commands/image-batch/config.js +679 -0
  18. package/dist/commands/image-batch/config.js.map +1 -0
  19. package/dist/commands/image-batch/errors.d.ts +5 -0
  20. package/dist/commands/image-batch/errors.js +8 -0
  21. package/dist/commands/image-batch/errors.js.map +1 -0
  22. package/dist/commands/image-batch/geometry.d.ts +26 -0
  23. package/dist/commands/image-batch/geometry.js +90 -0
  24. package/dist/commands/image-batch/geometry.js.map +1 -0
  25. package/dist/commands/image-batch/inputs.d.ts +22 -0
  26. package/dist/commands/image-batch/inputs.js +87 -0
  27. package/dist/commands/image-batch/inputs.js.map +1 -0
  28. package/dist/commands/image-batch/manage-cli.d.ts +2 -0
  29. package/dist/commands/image-batch/manage-cli.js +276 -0
  30. package/dist/commands/image-batch/manage-cli.js.map +1 -0
  31. package/dist/commands/image-batch/manage.d.ts +51 -0
  32. package/dist/commands/image-batch/manage.js +1041 -0
  33. package/dist/commands/image-batch/manage.js.map +1 -0
  34. package/dist/commands/image-batch/overwrite.d.ts +14 -0
  35. package/dist/commands/image-batch/overwrite.js +31 -0
  36. package/dist/commands/image-batch/overwrite.js.map +1 -0
  37. package/dist/commands/image-batch/plan.d.ts +86 -0
  38. package/dist/commands/image-batch/plan.js +396 -0
  39. package/dist/commands/image-batch/plan.js.map +1 -0
  40. package/dist/commands/image-batch/process.d.ts +8 -0
  41. package/dist/commands/image-batch/process.js +97 -0
  42. package/dist/commands/image-batch/process.js.map +1 -0
  43. package/dist/commands/image-batch/report.d.ts +6 -0
  44. package/dist/commands/image-batch/report.js +251 -0
  45. package/dist/commands/image-batch/report.js.map +1 -0
  46. package/dist/commands/image-batch/restore.d.ts +29 -0
  47. package/dist/commands/image-batch/restore.js +125 -0
  48. package/dist/commands/image-batch/restore.js.map +1 -0
  49. package/dist/commands/image-batch/run.d.ts +123 -0
  50. package/dist/commands/image-batch/run.js +649 -0
  51. package/dist/commands/image-batch/run.js.map +1 -0
  52. package/dist/commands/image-batch/sharpen-ask.d.ts +6 -0
  53. package/dist/commands/image-batch/sharpen-ask.js +53 -0
  54. package/dist/commands/image-batch/sharpen-ask.js.map +1 -0
  55. package/dist/commands/image-batch/sharpen-manage.d.ts +26 -0
  56. package/dist/commands/image-batch/sharpen-manage.js +238 -0
  57. package/dist/commands/image-batch/sharpen-manage.js.map +1 -0
  58. package/dist/commands/image-batch/sharpen-presets.d.ts +24 -0
  59. package/dist/commands/image-batch/sharpen-presets.js +145 -0
  60. package/dist/commands/image-batch/sharpen-presets.js.map +1 -0
  61. package/dist/commands/image-batch/sharpen.d.ts +46 -0
  62. package/dist/commands/image-batch/sharpen.js +159 -0
  63. package/dist/commands/image-batch/sharpen.js.map +1 -0
  64. package/dist/commands/image-batch/template.d.ts +45 -0
  65. package/dist/commands/image-batch/template.js +142 -0
  66. package/dist/commands/image-batch/template.js.map +1 -0
  67. package/dist/commands/image-hash/sharp-loader.d.ts +2 -0
  68. package/dist/commands/image-hash/sharp-loader.js +7 -5
  69. package/dist/commands/image-hash/sharp-loader.js.map +1 -1
  70. package/dist/format/bytes.d.ts +2 -0
  71. package/dist/format/bytes.js +17 -0
  72. package/dist/format/bytes.js.map +1 -0
  73. package/dist/index.d.ts +5 -0
  74. package/dist/index.js +3 -0
  75. package/dist/index.js.map +1 -1
  76. package/dist/utils/closest.d.ts +2 -0
  77. package/dist/utils/closest.js +35 -0
  78. package/dist/utils/closest.js.map +1 -0
  79. package/dist/utils/glob.d.ts +4 -0
  80. package/dist/utils/glob.js +86 -0
  81. package/dist/utils/glob.js.map +1 -0
  82. package/dist/utils/tty.d.ts +60 -0
  83. package/dist/utils/tty.js +390 -0
  84. package/dist/utils/tty.js.map +1 -0
  85. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/image-batch/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare class ImageBatchUsageError extends Error {
2
+ }
3
+ export declare class ImageBatchAbortError extends Error {
4
+ constructor(message?: string);
5
+ }
@@ -0,0 +1,8 @@
1
+ export class ImageBatchUsageError extends Error {
2
+ }
3
+ export class ImageBatchAbortError extends Error {
4
+ constructor(message = 'aborted') {
5
+ super(message);
6
+ }
7
+ }
8
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/commands/image-batch/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;CAAG;AAElD,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAO,GAAG,SAAS;QAC7B,KAAK,CAAC,OAAO,CAAC,CAAA;IAChB,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ export declare const FIT_MODES: readonly ["cover", "contain", "inside", "outside", "fill"];
2
+ export type Fit = (typeof FIT_MODES)[number];
3
+ export interface Dimensions {
4
+ width: number;
5
+ height: number;
6
+ }
7
+ export interface Box {
8
+ width?: number;
9
+ height?: number;
10
+ }
11
+ export interface Geometry extends Dimensions {
12
+ resize: {
13
+ width: number;
14
+ height: number;
15
+ fit: Fit;
16
+ } | null;
17
+ }
18
+ export declare function computeGeometry(source: Dimensions, box: Box, fit: Fit, withoutEnlargement: boolean): Geometry;
19
+ export declare function boxForLongEdge(dims: Dimensions, edge: number): Box;
20
+ export declare function boxForShortEdge(dims: Dimensions, edge: number): Box;
21
+ export declare function boxForMegapixels(dims: Dimensions, megapixels: number): Box;
22
+ export declare function boxForPercent(dims: Dimensions, percent: number): Box;
23
+ export declare function matchBoxOrientation(box: Required<Box>, dims: Dimensions): Required<Box>;
24
+ export declare function parseSize(text: string, where: string): Required<Box>;
25
+ export declare function orientedSize(raw: Dimensions, orientation: number | undefined, autoOrient: boolean, rotate: number | undefined): Dimensions;
26
+ export declare function sizeLabel(width: number, height: number): string;
@@ -0,0 +1,90 @@
1
+ import { ImageBatchUsageError } from './errors.js';
2
+ export const FIT_MODES = ['cover', 'contain', 'inside', 'outside', 'fill'];
3
+ const atLeastOne = (n) => Math.max(1, Math.round(n));
4
+ export function computeGeometry(source, box, fit, withoutEnlargement) {
5
+ const untouched = { width: source.width, height: source.height, resize: null };
6
+ const { width: boxWidth, height: boxHeight } = box;
7
+ if (boxWidth !== undefined && boxHeight === undefined) {
8
+ if (withoutEnlargement && boxWidth >= source.width)
9
+ return untouched;
10
+ const height = atLeastOne((source.height * boxWidth) / source.width);
11
+ return { width: boxWidth, height, resize: { width: boxWidth, height, fit: 'fill' } };
12
+ }
13
+ if (boxHeight !== undefined && boxWidth === undefined) {
14
+ if (withoutEnlargement && boxHeight >= source.height)
15
+ return untouched;
16
+ const width = atLeastOne((source.width * boxHeight) / source.height);
17
+ return { width, height: boxHeight, resize: { width, height: boxHeight, fit: 'fill' } };
18
+ }
19
+ if (boxWidth === undefined || boxHeight === undefined)
20
+ return untouched;
21
+ if (fit === 'inside' || fit === 'outside') {
22
+ const ratioX = boxWidth / source.width;
23
+ const ratioY = boxHeight / source.height;
24
+ let ratio = fit === 'inside' ? Math.min(ratioX, ratioY) : Math.max(ratioX, ratioY);
25
+ if (withoutEnlargement && ratio >= 1)
26
+ return untouched;
27
+ ratio = Math.max(ratio, 0);
28
+ const width = atLeastOne(source.width * ratio);
29
+ const height = atLeastOne(source.height * ratio);
30
+ return { width, height, resize: { width, height, fit: 'fill' } };
31
+ }
32
+ let targetWidth = boxWidth;
33
+ let targetHeight = boxHeight;
34
+ if (withoutEnlargement && (boxWidth > source.width || boxHeight > source.height)) {
35
+ const factor = Math.min(source.width / boxWidth, source.height / boxHeight);
36
+ targetWidth = atLeastOne(boxWidth * factor);
37
+ targetHeight = atLeastOne(boxHeight * factor);
38
+ }
39
+ return {
40
+ width: targetWidth,
41
+ height: targetHeight,
42
+ resize: { width: targetWidth, height: targetHeight, fit },
43
+ };
44
+ }
45
+ export function boxForLongEdge(dims, edge) {
46
+ return dims.width >= dims.height ? { width: edge } : { height: edge };
47
+ }
48
+ export function boxForShortEdge(dims, edge) {
49
+ return dims.width <= dims.height ? { width: edge } : { height: edge };
50
+ }
51
+ export function boxForMegapixels(dims, megapixels) {
52
+ const factor = Math.sqrt((megapixels * 1_000_000) / (dims.width * dims.height));
53
+ return { width: atLeastOne(dims.width * factor) };
54
+ }
55
+ export function boxForPercent(dims, percent) {
56
+ return { width: atLeastOne((dims.width * percent) / 100) };
57
+ }
58
+ export function matchBoxOrientation(box, dims) {
59
+ const boxLandscape = box.width > box.height;
60
+ const boxPortrait = box.height > box.width;
61
+ const sourceLandscape = dims.width > dims.height;
62
+ const sourcePortrait = dims.height > dims.width;
63
+ if ((boxLandscape && sourcePortrait) || (boxPortrait && sourceLandscape)) {
64
+ return { width: box.height, height: box.width };
65
+ }
66
+ return box;
67
+ }
68
+ export function parseSize(text, where) {
69
+ const match = /^(\d+)\s*[x×]\s*(\d+)$/i.exec(text.trim());
70
+ const width = match ? Number(match[1]) : 0;
71
+ const height = match ? Number(match[2]) : 0;
72
+ if (!match || width < 1 || height < 1 || width > 65535 || height > 65535) {
73
+ throw new ImageBatchUsageError(`${where}: expected a size like 800x600 (got "${text}")`);
74
+ }
75
+ return { width, height };
76
+ }
77
+ export function orientedSize(raw, orientation, autoOrient, rotate) {
78
+ let size = { width: raw.width, height: raw.height };
79
+ if (autoOrient && (orientation ?? 1) >= 5) {
80
+ size = { width: size.height, height: size.width };
81
+ }
82
+ if (rotate === 90 || rotate === 270) {
83
+ size = { width: size.height, height: size.width };
84
+ }
85
+ return size;
86
+ }
87
+ export function sizeLabel(width, height) {
88
+ return `${width}x${height}`;
89
+ }
90
+ //# sourceMappingURL=geometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../../src/commands/image-batch/geometry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export declare const BATCH_IMAGE_EXTENSIONS: string[];
2
+ export interface InputFile {
3
+ abs: string;
4
+ root: string;
5
+ rel: string;
6
+ relDir: string;
7
+ base: string;
8
+ ext: string;
9
+ orig: string;
10
+ }
11
+ export interface InputOptions {
12
+ paths: string[];
13
+ cwd: string;
14
+ recursive?: boolean;
15
+ extensions: string[];
16
+ ignoreGlobs?: string[];
17
+ respectGitignore?: boolean;
18
+ include?: string[];
19
+ exclude?: string[];
20
+ outDir?: string;
21
+ }
22
+ export declare function collectInputs(options: InputOptions): InputFile[];
@@ -0,0 +1,87 @@
1
+ import { statSync } from 'node:fs';
2
+ import { basename, dirname, extname, isAbsolute, relative, resolve, sep } from 'node:path';
3
+ import { hasGlobChars, literalPrefix, matchGlob } from '../../utils/glob.js';
4
+ import { walk } from '../../utils/walk.js';
5
+ import { DEFAULT_IMAGE_EXTENSIONS } from '../image-hash/core.js';
6
+ import { ImageBatchUsageError } from './errors.js';
7
+ export const BATCH_IMAGE_EXTENSIONS = [...DEFAULT_IMAGE_EXTENSIONS, '.svg'];
8
+ function toPosix(path) {
9
+ return path.split(sep).join('/');
10
+ }
11
+ function isInside(parent, child) {
12
+ const rel = relative(parent, child);
13
+ return rel === '' || (!rel.startsWith('..') && !isAbsolute(rel));
14
+ }
15
+ function describe(abs, root) {
16
+ const rel = toPosix(relative(root, abs));
17
+ const orig = basename(abs);
18
+ const dot = extname(orig);
19
+ const relDir = toPosix(dirname(rel));
20
+ return {
21
+ abs,
22
+ root,
23
+ rel,
24
+ relDir: relDir === '.' ? '' : relDir,
25
+ base: dot ? orig.slice(0, -dot.length) : orig,
26
+ ext: dot.slice(1).toLowerCase(),
27
+ orig,
28
+ };
29
+ }
30
+ export function collectInputs(options) {
31
+ const outDir = options.outDir !== undefined ? resolve(options.cwd, options.outDir) : undefined;
32
+ const walkBase = {
33
+ cwd: options.cwd,
34
+ extensions: options.extensions,
35
+ ...(options.ignoreGlobs ? { ignoreGlobs: options.ignoreGlobs } : {}),
36
+ ...(options.respectGitignore !== undefined
37
+ ? { respectGitignore: options.respectGitignore }
38
+ : {}),
39
+ };
40
+ const found = new Map();
41
+ const add = (abs, root) => {
42
+ if (!found.has(abs))
43
+ found.set(abs, describe(abs, root));
44
+ };
45
+ const paths = options.paths.length > 0 ? options.paths : ['.'];
46
+ for (const arg of paths) {
47
+ const abs = resolve(options.cwd, arg);
48
+ const stat = statSync(abs, { throwIfNoEntry: false });
49
+ if (stat?.isDirectory()) {
50
+ for (const file of walk([abs], { ...walkBase, recursive: options.recursive ?? false })) {
51
+ add(file, abs);
52
+ }
53
+ }
54
+ else if (stat?.isFile()) {
55
+ add(abs, dirname(abs));
56
+ }
57
+ else if (hasGlobChars(arg)) {
58
+ const prefix = literalPrefix(arg);
59
+ const root = resolve(options.cwd, prefix === '' ? '.' : prefix);
60
+ if (!statSync(root, { throwIfNoEntry: false })?.isDirectory())
61
+ continue;
62
+ const pattern = toPosix(arg).replace(/^\.\//, '');
63
+ for (const file of walk([root], { ...walkBase, recursive: true })) {
64
+ const subject = isAbsolute(arg) ? toPosix(file) : toPosix(relative(options.cwd, file));
65
+ if (matchGlob(pattern, subject))
66
+ add(file, root);
67
+ }
68
+ }
69
+ else {
70
+ throw new ImageBatchUsageError(`path not found: ${arg}`);
71
+ }
72
+ }
73
+ let files = [...found.values()];
74
+ if (outDir !== undefined) {
75
+ files = files.filter((file) => !isInside(outDir, file.abs));
76
+ }
77
+ if (options.include?.length) {
78
+ const patterns = options.include;
79
+ files = files.filter((file) => patterns.some((pattern) => matchGlob(pattern, file.rel)));
80
+ }
81
+ if (options.exclude?.length) {
82
+ const patterns = options.exclude;
83
+ files = files.filter((file) => !patterns.some((pattern) => matchGlob(pattern, file.rel)));
84
+ }
85
+ return files.sort((a, b) => a.abs.localeCompare(b.abs));
86
+ }
87
+ //# sourceMappingURL=inputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../../src/commands/image-batch/inputs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerImageBatchManagement(parent: Command): void;
@@ -0,0 +1,276 @@
1
+ import { resolve } from 'node:path';
2
+ import { createStyle } from '../../format/style.js';
3
+ import { defaultTerminal } from '../../utils/tty.js';
4
+ import { splitList } from '../../utils/split-list.js';
5
+ import { ImageBatchUsageError } from './errors.js';
6
+ import { listSharpenRows, manageSharpenPresets, removeSharpenPreset, renderSharpenTable, runSharpenNew, sharpenLocationFor, showSharpenPreset, } from './sharpen-manage.js';
7
+ import { addSharpenFlags, parseSharpenFlags } from './sharpen.js';
8
+ import { renderRestoreReport, runRestore } from './restore.js';
9
+ import { configPathFor, listConfigRows, manageConfigs, removeConfigFile, renderConfigTable, runInit, showConfig, } from './manage.js';
10
+ function envFrom(options) {
11
+ return {
12
+ cwd: resolve(options.cwd),
13
+ io: defaultTerminal(),
14
+ style: { plain: options.plain, color: options.color },
15
+ log: (text) => console.log(text),
16
+ };
17
+ }
18
+ async function guarded(action) {
19
+ try {
20
+ await action();
21
+ }
22
+ catch (error) {
23
+ if (error instanceof ImageBatchUsageError) {
24
+ console.error(`error: ${error.message}`);
25
+ process.exitCode = 2;
26
+ return;
27
+ }
28
+ throw error;
29
+ }
30
+ }
31
+ function sizeFields(options) {
32
+ const fields = {};
33
+ const list = (value) => splitList(value).map(Number);
34
+ if (options.widths)
35
+ fields.widths = list(options.widths);
36
+ if (options.heights)
37
+ fields.heights = list(options.heights);
38
+ if (options.size)
39
+ fields.size = options.size;
40
+ if (options.long)
41
+ fields.longEdge = list(options.long);
42
+ if (options.short)
43
+ fields.shortEdge = list(options.short);
44
+ if (options.megapixels)
45
+ fields.megapixels = list(options.megapixels);
46
+ if (options.percent)
47
+ fields.percent = list(options.percent);
48
+ if (options.size && options.fit)
49
+ fields.fit = options.fit;
50
+ if (options.size && options.matchOrientation)
51
+ fields.matchOrientation = true;
52
+ return Object.keys(fields).length > 0 ? fields : undefined;
53
+ }
54
+ function addInitOptions(command) {
55
+ addSharpenFlags(command);
56
+ return command
57
+ .option('--cwd <path>', 'project folder the config is saved in', process.cwd())
58
+ .option('--name <name>', 'name of the config (asked when omitted)')
59
+ .option('--global', 'save it for all projects instead of this one')
60
+ .option('-w, --widths <list>', 'size by width in pixels, comma-separated')
61
+ .option('--heights <list>', 'size by height in pixels, comma-separated')
62
+ .option('--size <WxH>', 'size by a box, e.g. 1920x1080 (see --fit, --match-orientation)')
63
+ .option('--long <list>', 'size by the long side in pixels, comma-separated')
64
+ .option('--short <list>', 'size by the short side in pixels, comma-separated')
65
+ .option('--megapixels <list>', 'size by area in megapixels, comma-separated')
66
+ .option('--percent <list>', 'size as a percentage of the source, comma-separated')
67
+ .option('--fit <mode>', 'with --size: inside, cover, contain, outside or fill')
68
+ .option('--match-orientation', 'with --size: turn the box around for the other orientation')
69
+ .option('-f, --formats <list>', 'output formats, comma-separated')
70
+ .option('-q, --quality <level>', 'quality: a number, low, medium, high or best')
71
+ .option('--file-name <template>', 'file name template of the main recipe, e.g. {dir}/{name}-{width}w.{format} (default: chosen by the size method)')
72
+ .option('--thumbnail', 'add a 200x200 cropped thumbnail recipe')
73
+ .option('--hazehash', 'compute a hazehash for the --emit manifest')
74
+ .option('--force', 'replace a config of the same name', false)
75
+ .option('--plain', 'disable color/banner/celebration copy, even in a real terminal', false)
76
+ .option('--color', 'force colored output even when piped or in CI', false);
77
+ }
78
+ async function initAction(options) {
79
+ await guarded(async () => {
80
+ const fields = sizeFields(options);
81
+ const sharpen = parseSharpenFlags(options);
82
+ await runInit(envFrom(options), {
83
+ ...(options.name !== undefined ? { name: options.name } : {}),
84
+ ...(options.global !== undefined ? { global: options.global } : {}),
85
+ ...(fields ? { sizeFields: fields } : {}),
86
+ ...(options.formats ? { formats: splitList(options.formats) } : {}),
87
+ ...(options.quality ? { quality: options.quality } : {}),
88
+ ...(options.fileName ? { fileName: options.fileName } : {}),
89
+ ...(sharpen ? { sharpen } : {}),
90
+ ...(options.thumbnail !== undefined ? { thumbnail: options.thumbnail } : {}),
91
+ ...(options.hazehash !== undefined ? { hazehash: options.hazehash } : {}),
92
+ force: options.force,
93
+ });
94
+ });
95
+ }
96
+ async function listAction(options) {
97
+ await guarded(async () => {
98
+ const env = envFrom(options);
99
+ if (options.json) {
100
+ const rows = await listConfigRows(env);
101
+ console.log(JSON.stringify(rows.map((row) => ({
102
+ name: row.location.name,
103
+ scope: row.location.scope,
104
+ path: row.location.path,
105
+ kind: row.location.kind,
106
+ title: row.title,
107
+ recipes: row.recipes,
108
+ rules: row.rules,
109
+ error: row.error,
110
+ })), null, 2));
111
+ return;
112
+ }
113
+ if (options.list) {
114
+ const rows = await listConfigRows(env);
115
+ const s = createStyle(env.style);
116
+ console.log(rows.length === 0
117
+ ? s.warn('No configs found — create one with `devtoolz image-batch init`.')
118
+ : renderConfigTable(rows, env.style).join('\n'));
119
+ return;
120
+ }
121
+ await manageConfigs(env);
122
+ });
123
+ }
124
+ export function registerImageBatchManagement(parent) {
125
+ addInitOptions(parent
126
+ .command('init')
127
+ .description('Create a config (a reusable set of rules) with a short wizard')).action(initAction);
128
+ const config = parent
129
+ .command('config')
130
+ .description('Manage the saved configs: in a terminal pick one to apply, show, edit, copy or delete (subcommands: new, list, show, rm)')
131
+ .option('--cwd <path>', 'project folder the configs are looked up from', process.cwd())
132
+ .option('--plain', 'disable color/banner/celebration copy, even in a real terminal', false)
133
+ .option('--color', 'force colored output even when piped or in CI', false)
134
+ .action(async (options) => listAction({ ...options }));
135
+ addInitOptions(config.command('new').description('Create a config with a short wizard (same as init)')).action(initAction);
136
+ config
137
+ .command('list')
138
+ .description('Print a table of the saved configs')
139
+ .option('--cwd <path>', 'project folder the configs are looked up from', process.cwd())
140
+ .option('--json', 'machine-readable output', false)
141
+ .option('--plain', 'disable color/banner/celebration copy, even in a real terminal', false)
142
+ .option('--color', 'force colored output even when piped or in CI', false)
143
+ .action(async (options) => listAction({ ...options, list: true }));
144
+ config
145
+ .command('show')
146
+ .argument('<name>', 'config name')
147
+ .description('Print what a config produces')
148
+ .option('--cwd <path>', 'project folder the configs are looked up from', process.cwd())
149
+ .option('--plain', 'disable color/banner/celebration copy, even in a real terminal', false)
150
+ .option('--color', 'force colored output even when piped or in CI', false)
151
+ .action(async (name, options) => guarded(async () => {
152
+ const env = envFrom(options);
153
+ await showConfig(env, configPathFor(env, name));
154
+ }));
155
+ config
156
+ .command('rm')
157
+ .argument('<name>', 'config name')
158
+ .description('Delete a config (a .bak copy is kept unless --force)')
159
+ .option('--cwd <path>', 'project folder the configs are looked up from', process.cwd())
160
+ .option('-y, --yes', 'do not ask for confirmation', false)
161
+ .option('--force', 'delete for good, without a .bak copy', false)
162
+ .option('--plain', 'disable color/banner/celebration copy, even in a real terminal', false)
163
+ .option('--color', 'force colored output even when piped or in CI', false)
164
+ .action(async (name, options) => guarded(async () => {
165
+ const env = envFrom(options);
166
+ const location = configPathFor(env, name);
167
+ if (!options.yes) {
168
+ throw new ImageBatchUsageError(`this deletes ${location.path} — pass --yes to confirm`);
169
+ }
170
+ const kept = removeConfigFile(location, options.force);
171
+ console.log(options.force ? `Deleted ${location.path}` : `Deleted ${location.path} (backup: ${kept})`);
172
+ }));
173
+ const sharpen = parent
174
+ .command('sharpen')
175
+ .description('Manage saved sharpening presets that configs and runs can use: in a terminal pick one to show, edit, copy or delete (subcommands: new, list, show, rm)')
176
+ .option('--cwd <path>', 'project folder the presets are looked up from', process.cwd())
177
+ .option('--plain', 'disable color/banner/celebration copy, even in a real terminal', false)
178
+ .option('--color', 'force colored output even when piped or in CI', false)
179
+ .action(async (options) => guarded(async () => manageSharpenPresets(envFrom(options))));
180
+ addSharpenFlags(sharpen
181
+ .command('new')
182
+ .description('Create a sharpening preset (a short wizard, or the flags below)')
183
+ .option('--cwd <path>', 'project folder the preset is saved in', process.cwd())
184
+ .option('--name <name>', 'name of the preset (asked when omitted)')
185
+ .option('--global', 'save it for all projects instead of this one')
186
+ .option('--description <text>', 'a note shown in the list')
187
+ .option('--force', 'replace a preset of the same name', false)
188
+ .option('--plain', 'disable color/banner/celebration copy, even in a real terminal', false)
189
+ .option('--color', 'force colored output even when piped or in CI', false), false).action(async (options) => guarded(async () => {
190
+ const fields = parseSharpenFlags(options);
191
+ await runSharpenNew(envFrom(options), {
192
+ ...(options.name !== undefined ? { name: options.name } : {}),
193
+ ...(options.global !== undefined ? { global: options.global } : {}),
194
+ ...(options.description !== undefined ? { description: options.description } : {}),
195
+ ...(fields ? { fields } : {}),
196
+ force: options.force,
197
+ });
198
+ }));
199
+ sharpen
200
+ .command('list')
201
+ .description('Print a table of the saved sharpening presets')
202
+ .option('--cwd <path>', 'project folder the presets are looked up from', process.cwd())
203
+ .option('--json', 'machine-readable output', false)
204
+ .option('--plain', 'disable color/banner/celebration copy, even in a real terminal', false)
205
+ .option('--color', 'force colored output even when piped or in CI', false)
206
+ .action(async (options) => guarded(async () => {
207
+ const env = envFrom(options);
208
+ const rows = listSharpenRows(env);
209
+ if (options.json) {
210
+ console.log(JSON.stringify(rows.map((row) => ({
211
+ name: row.location.name,
212
+ scope: row.location.scope,
213
+ path: row.location.path,
214
+ description: row.description,
215
+ ...(row.fields ?? {}),
216
+ error: row.error,
217
+ })), null, 2));
218
+ return;
219
+ }
220
+ const style = createStyle(env.style);
221
+ console.log(rows.length === 0
222
+ ? style.warn('No sharpen presets found — create one with `devtoolz image-batch sharpen new`.')
223
+ : renderSharpenTable(rows, env.style).join('\n'));
224
+ }));
225
+ sharpen
226
+ .command('show')
227
+ .argument('<name>', 'preset name')
228
+ .description('Print the settings of a preset and the values sharp receives')
229
+ .option('--cwd <path>', 'project folder the presets are looked up from', process.cwd())
230
+ .option('--plain', 'disable color/banner/celebration copy, even in a real terminal', false)
231
+ .option('--color', 'force colored output even when piped or in CI', false)
232
+ .action(async (name, options) => guarded(async () => showSharpenPreset(envFrom(options), name)));
233
+ sharpen
234
+ .command('rm')
235
+ .argument('<name>', 'preset name')
236
+ .description('Delete a preset (a .bak copy is kept unless --force)')
237
+ .option('--cwd <path>', 'project folder the presets are looked up from', process.cwd())
238
+ .option('-y, --yes', 'do not ask for confirmation', false)
239
+ .option('--force', 'delete for good, without a .bak copy', false)
240
+ .option('--plain', 'disable color/banner/celebration copy, even in a real terminal', false)
241
+ .option('--color', 'force colored output even when piped or in CI', false)
242
+ .action(async (name, options) => guarded(async () => {
243
+ const location = sharpenLocationFor(envFrom(options), name);
244
+ if (!options.yes) {
245
+ throw new ImageBatchUsageError(`this deletes ${location.path} — pass --yes to confirm`);
246
+ }
247
+ const kept = removeSharpenPreset(location, options.force);
248
+ console.log(options.force ? `Deleted ${location.path}` : `Deleted ${location.path} (backup: ${kept})`);
249
+ }));
250
+ parent
251
+ .command('restore')
252
+ .argument('<dir>', 'the dated backup folder that --replace created')
253
+ .description('Put back the original files that --replace saved, using the journal in that folder')
254
+ .option('--cwd <path>', 'folder a relative <dir> is resolved against', process.cwd())
255
+ .option('--dry-run', 'show what would be restored, write nothing', false)
256
+ .option('--force', 'also restore files that changed after they were replaced', false)
257
+ .option('-y, --yes', 'restore without asking', false)
258
+ .option('--json', 'machine-readable output', false)
259
+ .option('--plain', 'disable color/banner/celebration copy, even in a real terminal', false)
260
+ .option('--color', 'force colored output even when piped or in CI', false)
261
+ .action(async (dir, options) => guarded(async () => {
262
+ const style = { plain: options.plain, color: options.color };
263
+ const report = await runRestore({
264
+ dir,
265
+ cwd: resolve(options.cwd),
266
+ dryRun: options.dryRun,
267
+ force: options.force,
268
+ assumeYes: options.yes,
269
+ interactive: Boolean(process.stdin.isTTY) && Boolean(process.stderr.isTTY) && !options.json,
270
+ style,
271
+ });
272
+ console.log(options.json ? JSON.stringify(report, null, 2) : renderRestoreReport(report, style));
273
+ process.exitCode = report.exitCode;
274
+ }));
275
+ }
276
+ //# sourceMappingURL=manage-cli.js.map