@joltdesign/scripts 0.19.2 → 0.20.0

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { Cli } from 'clipanion';
3
- import { CloudFrontInvalidateCommand, CodeBuildStartCommand, ECSDeployCommand, ECSDeploySpecificCommand, LogsTailCommand, S3SyncCommand, } from './Command/AWS.js';
3
+ import { CloudFrontInvalidateCommand, CodeBuildStartCommand, ECSDeployCommand, ECSDeploySpecificCommand, ECSStatusCommand, LogsTailCommand, S3SyncCommand, } from './Command/AWS.js';
4
4
  import { BuildCommand } from './Command/Build.js';
5
5
  import { CacheFlushCommand } from './Command/Cache.js';
6
6
  import { CmdCommand } from './Command/Cmd.js';
@@ -11,11 +11,13 @@ import { NexcessDeployCommand, NexcessDeployLocalCommand } from './Command/Nexce
11
11
  import { PrepareCommand } from './Command/Prepare.js';
12
12
  import { RsyncCommand, SSHCommand } from './Command/SSH.js';
13
13
  import { WPCommand } from './Command/WP.js';
14
+ import { getPackageJson } from './utils.js';
14
15
  const [_node, _app, ...args] = process.argv;
16
+ const packageInfo = await getPackageJson();
15
17
  const cli = new Cli({
16
18
  binaryLabel: 'Jolt Scripts',
17
- binaryName: 'jolt',
18
- binaryVersion: '1.0.0',
19
+ binaryName: Object.keys(packageInfo.bin)[0],
20
+ binaryVersion: packageInfo.version,
19
21
  });
20
22
  cli.register(BuildCommand);
21
23
  cli.register(ConfigCommand);
@@ -28,6 +30,7 @@ cli.register(DockerManifestCommand);
28
30
  cli.register(WPCommand);
29
31
  cli.register(ECSDeployCommand);
30
32
  cli.register(ECSDeploySpecificCommand);
33
+ cli.register(ECSStatusCommand);
31
34
  cli.register(DBDumpCommand);
32
35
  cli.register(DBResetCommand);
33
36
  cli.register(DBAwaitCommand);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,EACf,aAAa,GACd,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC/E,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAA;AAE3C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;IAClB,WAAW,EAAE,cAAc;IAC3B,UAAU,EAAE,MAAM;IAClB,aAAa,EAAE,OAAO;CACvB,CAAC,CAAA;AAEF,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;AAC1B,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;AAC3B,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;AAChC,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;AAChC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAA;AAC9B,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAA;AAC/B,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAA;AACnC,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAA;AACnC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;AACvB,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAA;AAC9B,GAAG,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAA;AACtC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;AAC3B,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;AAC5B,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;AAC5B,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAA;AAC/B,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;AAC3B,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;AAC7B,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAA;AACnC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;AAClC,GAAG,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAA;AACvC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;AACxB,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;AAC1B,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;AACxB,GAAG,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAA;AACzC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;AAC5B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/errors.js ADDED
@@ -0,0 +1,13 @@
1
+ export class ConfigValidationError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.name = 'ConfigValidationError';
5
+ }
6
+ }
7
+ export class ContainerRuntimeError extends Error {
8
+ constructor(message) {
9
+ super(message);
10
+ this.name = 'ContainerRuntimeError';
11
+ }
12
+ }
13
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACrC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACrC,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+ export const PrepareTimingSchema = z.enum(['early', 'normal']);
3
+ export const PrepareCommandSchema = z.object({
4
+ cmd: z.string(),
5
+ name: z.string().optional(),
6
+ fail: z.boolean().optional().default(true),
7
+ dir: z.string().optional(),
8
+ timing: PrepareTimingSchema.optional().default('normal'),
9
+ });
10
+ export const PrepareCommandsSchema = z.array(z.union([z.string(), PrepareCommandSchema]));
11
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;AAE9D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC1C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,MAAM,EAAE,mBAAmB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;CACzD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAA"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/dist/utils.js CHANGED
@@ -1,6 +1,9 @@
1
- import { stat } from 'node:fs/promises';
1
+ import { readFile, stat } from 'node:fs/promises';
2
+ import ansis from 'ansis';
3
+ import { camelCase, constantCase } from 'change-case';
2
4
  import { execa } from 'execa';
3
5
  import realWhich from 'which';
6
+ import { ContainerRuntimeError } from './errors.js';
4
7
  export async function fileExists(path) {
5
8
  try {
6
9
  return (await stat(path)).isFile();
@@ -18,17 +21,90 @@ export async function directoryExists(path) {
18
21
  }
19
22
  }
20
23
  export function constToCamel(key) {
21
- let parts = key.split('_');
22
- parts = parts.map((x) => x.toLocaleLowerCase().replace(/^./, (y) => y.toLocaleUpperCase()));
23
- parts[0] = parts[0].toLocaleLowerCase();
24
- return parts.join('');
24
+ return camelCase(key);
25
25
  }
26
26
  export function keyToConst(str) {
27
- var _a;
28
- return (((_a = str
29
- .match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g)) === null || _a === void 0 ? void 0 : _a.map((x) => x.toLowerCase()).join('_').toUpperCase()) || str);
27
+ return constantCase(str);
28
+ }
29
+ /**
30
+ * Detects if an error message indicates a container runtime daemon is not running
31
+ * Supports Docker, Podman, and Rancher Desktop
32
+ */
33
+ function isContainerRuntimeError(errorMessage) {
34
+ const containerRuntimeErrorPatterns = [
35
+ // Docker patterns
36
+ /cannot connect to the docker daemon/i,
37
+ /docker: error during connect/i,
38
+ /is the docker daemon running/i,
39
+ /connection refused.*docker/i,
40
+ /docker desktop is not running/i,
41
+ /error during connect.*docker/i,
42
+ /failed to connect to.*docker/i,
43
+ /dial unix.*docker\.sock.*connection refused/i,
44
+ /connect: no such file or directory.*docker\.sock/i,
45
+ // Podman patterns
46
+ /cannot connect to podman/i,
47
+ /error: unable to connect to podman/i,
48
+ /is the podman service running/i,
49
+ /connection refused.*podman/i,
50
+ /podman desktop is not running/i,
51
+ /unable to connect to podman socket/i,
52
+ /dial unix.*podman\.sock.*connection refused/i,
53
+ /connect: no such file or directory.*podman\.sock/i,
54
+ // Rancher Desktop patterns (uses Docker API but with Rancher-specific paths)
55
+ /rancher desktop is not running/i,
56
+ /connection refused.*rancher/i,
57
+ /dial unix.*rancher.*docker\.sock.*connection refused/i,
58
+ /connect: no such file or directory.*rancher.*docker\.sock/i,
59
+ /dial unix.*\.rd\/.*connection refused/i,
60
+ /connect: no such file or directory.*\.rd\//i,
61
+ ];
62
+ return containerRuntimeErrorPatterns.some((pattern) => pattern.test(errorMessage));
63
+ }
64
+ /**
65
+ * Detects the container runtime type from the command and error message
66
+ */
67
+ function detectContainerRuntime(command, errorMessage) {
68
+ if (command.includes('podman') || /podman/i.test(errorMessage)) {
69
+ return 'podman';
70
+ }
71
+ // Check for Rancher Desktop indicators in the error message
72
+ if (/rancher/i.test(errorMessage) || /\.rd\//i.test(errorMessage)) {
73
+ return 'rancher';
74
+ }
75
+ if (command.includes('docker') || /docker/i.test(errorMessage)) {
76
+ return 'docker';
77
+ }
78
+ return 'unknown';
79
+ }
80
+ /**
81
+ * Creates a user-friendly error message for container runtime issues
82
+ */
83
+ function createContainerRuntimeErrorMessage(command, originalError) {
84
+ const runtime = detectContainerRuntime(command, originalError);
85
+ let runtimeName;
86
+ let suggestion;
87
+ switch (runtime) {
88
+ case 'podman':
89
+ runtimeName = 'Podman';
90
+ suggestion = 'Please start Podman Desktop or ensure the Podman service is running before retrying.';
91
+ break;
92
+ case 'rancher':
93
+ runtimeName = 'Rancher Desktop';
94
+ suggestion = 'Please start Rancher Desktop or ensure the container runtime is running before retrying.';
95
+ break;
96
+ default:
97
+ runtimeName = 'Docker';
98
+ suggestion = 'Please start Docker Desktop or ensure the Docker daemon is running before retrying.';
99
+ break;
100
+ }
101
+ const header = ansis.red(`🐳 ${runtimeName} daemon is not running!`);
102
+ const suggestionText = ansis.yellow(suggestion);
103
+ const details = ansis.gray(`Original error: ${originalError}`);
104
+ return `${header}\n${suggestionText}\n${details}`;
30
105
  }
31
106
  export async function execC(command, args = [], options = {}) {
107
+ var _a;
32
108
  const allOptions = {
33
109
  shell: true,
34
110
  cleanArgs: true,
@@ -43,7 +119,29 @@ export async function execC(command, args = [], options = {}) {
43
119
  if (allOptions.cleanArgs) {
44
120
  argsToUse = args.filter((x) => !!x);
45
121
  }
46
- return await execa(command, argsToUse, allOptions);
122
+ try {
123
+ return await execa(command, argsToUse, allOptions);
124
+ }
125
+ catch (error) {
126
+ // Check if this is a container runtime command that failed due to daemon not running
127
+ if (error instanceof Error &&
128
+ 'stderr' in error &&
129
+ typeof error.stderr === 'string' &&
130
+ (command.includes('docker') || command.includes('podman'))) {
131
+ const errorMessage = error.stderr || error.message || '';
132
+ if (isContainerRuntimeError(errorMessage)) {
133
+ const friendlyMessage = createContainerRuntimeErrorMessage(command, errorMessage);
134
+ // Write the friendly error to stderr if available
135
+ if ((_a = options.context) === null || _a === void 0 ? void 0 : _a.stderr) {
136
+ options.context.stderr.write(`${friendlyMessage}\n`);
137
+ }
138
+ // Throw a specific ContainerRuntimeError for programmatic handling
139
+ throw new ContainerRuntimeError(friendlyMessage);
140
+ }
141
+ }
142
+ // Re-throw the original error if it's not a container runtime daemon issue
143
+ throw error;
144
+ }
47
145
  }
48
146
  export function delay(ms) {
49
147
  return new Promise((res) => setTimeout(res, ms, null));
@@ -59,12 +157,52 @@ asyncFn) {
59
157
  const data = await Promise.all(promises);
60
158
  return str.replace(replace, () => data.shift() || '');
61
159
  }
160
+ // Cache for memoizing which() results since command availability doesn't change during execution
161
+ const whichCache = new Map();
162
+ /**
163
+ * Clear the which() cache - primarily for testing purposes
164
+ */
165
+ export function clearWhichCache() {
166
+ whichCache.clear();
167
+ }
62
168
  export async function which(cmd) {
169
+ var _a;
170
+ // Check cache first
171
+ if (whichCache.has(cmd)) {
172
+ return (_a = whichCache.get(cmd)) !== null && _a !== void 0 ? _a : null;
173
+ }
174
+ let result = null;
63
175
  const parts = cmd.split(' ');
64
176
  if (parts[1] === 'compose') {
65
- // TODO: Check for compose extension?
66
- return await which(parts[0]);
177
+ // First check if docker exists
178
+ const dockerPath = await which(parts[0]);
179
+ if (!dockerPath) {
180
+ result = null;
181
+ }
182
+ else {
183
+ // Then verify docker compose plugin is available
184
+ try {
185
+ await execa(parts[0], ['compose', 'version'], {
186
+ stdio: 'ignore',
187
+ timeout: 5000,
188
+ });
189
+ result = dockerPath;
190
+ }
191
+ catch (_b) {
192
+ // docker compose plugin not available
193
+ result = null;
194
+ }
195
+ }
67
196
  }
68
- return await realWhich(cmd, { nothrow: true });
197
+ else {
198
+ result = await realWhich(cmd, { nothrow: true });
199
+ }
200
+ // Cache the result
201
+ whichCache.set(cmd, result);
202
+ return result;
203
+ }
204
+ export async function getPackageJson() {
205
+ const contents = await readFile(`${import.meta.dirname}/../package.json`);
206
+ return JSON.parse(contents.toString());
69
207
  }
70
208
  //# sourceMappingURL=utils.js.map
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -4,13 +4,16 @@
4
4
  "bin": {
5
5
  "jolt": "./dist/cli.js"
6
6
  },
7
- "version": "0.19.2",
7
+ "version": "0.20.0",
8
8
  "type": "module",
9
9
  "devDependencies": {
10
- "@biomejs/biome": "^2.2.2",
11
- "@types/node": "^24.3.0",
10
+ "@biomejs/biome": "^2.2.4",
11
+ "@types/node": "^24.5.2",
12
12
  "@types/which": "^3.0.4",
13
- "typescript": "^5.9.2"
13
+ "@vitest/coverage-v8": "^3.2.4",
14
+ "@vitest/ui": "3.2.4",
15
+ "typescript": "^5.9.2",
16
+ "vitest": "^3.2.4"
14
17
  },
15
18
  "files": [
16
19
  "/dist"
@@ -22,15 +25,20 @@
22
25
  "fmt": "biome format",
23
26
  "prepack": "run build",
24
27
  "prepare": "jolt prepare",
28
+ "test": "vitest",
29
+ "test:coverage": "vitest --coverage.enabled=true",
30
+ "test:run": "vitest run",
25
31
  "watch": "tsc -w"
26
32
  },
27
33
  "dependencies": {
28
34
  "ansis": "^4.1.0",
35
+ "change-case": "^5.4.4",
29
36
  "clipanion": "^4.0.0-rc.4",
30
37
  "dotenv": "^17.2.2",
31
38
  "execa": "^9.6.0",
32
39
  "object-resolve-path": "^1.1.1",
33
40
  "typanion": "^3.14.0",
34
- "which": "^5.0.0"
41
+ "which": "^5.0.0",
42
+ "zod": "^4.1.9"
35
43
  }
36
44
  }