@pushto/cli 0.4.6 → 0.4.9

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
File without changes
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=npm-packaging.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm-packaging.test.d.ts","sourceRoot":"","sources":["../../../src/lib/__tests__/npm-packaging.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,81 @@
1
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
+ import { execFile } from 'node:child_process';
3
+ import { promisify } from 'node:util';
4
+ import { fileURLToPath } from 'node:url';
5
+ import path from 'node:path';
6
+ import fs from 'node:fs';
7
+ const execFileAsync = promisify(execFile);
8
+ const HERE = path.dirname(fileURLToPath(import.meta.url));
9
+ const CLI_ROOT = path.resolve(HERE, '../../..');
10
+ const VERSION_TS = path.join(CLI_ROOT, 'src', 'version.ts');
11
+ const PLACEHOLDER = '__PUSHTO_BUILD_VERSION__';
12
+ /**
13
+ * PINs the version-embed mechanism shared by both release channels.
14
+ *
15
+ * The npm channel shipped `pushto --version` printing the literal
16
+ * __PUSHTO_BUILD_VERSION__ because only build-binaries.sh substituted it —
17
+ * the tsc output npm ships never was. Worse, getCurrentVersion() feeds
18
+ * isNewer(), so every npm user's update check compared against that string.
19
+ *
20
+ * version.ts's own header records that `bun build --define` and a `cat >`
21
+ * overwrite both failed SILENTLY on darwin-arm64. That scar is why this is
22
+ * one extracted script rather than a second copy of the sed.
23
+ */
24
+ let original;
25
+ beforeEach(() => { original = fs.readFileSync(VERSION_TS, 'utf8'); });
26
+ afterEach(() => { fs.writeFileSync(VERSION_TS, original); });
27
+ describe('embed-version.sh', () => {
28
+ it('replaces the placeholder with the given version', async () => {
29
+ await execFileAsync('bash', ['scripts/embed-version.sh'], {
30
+ cwd: CLI_ROOT,
31
+ env: { ...process.env, VERSION: '9.9.9' },
32
+ });
33
+ expect(fs.readFileSync(VERSION_TS, 'utf8')).toContain('export const VERSION = "9.9.9"');
34
+ expect(fs.readFileSync(VERSION_TS, 'utf8')).not.toContain(PLACEHOLDER);
35
+ });
36
+ it('refuses when VERSION is unset, rather than embedding an empty string', async () => {
37
+ const env = { ...process.env };
38
+ delete env.VERSION;
39
+ await expect(execFileAsync('bash', ['scripts/embed-version.sh'], { cwd: CLI_ROOT, env })).rejects.toThrow();
40
+ expect(fs.readFileSync(VERSION_TS, 'utf8')).toContain(PLACEHOLDER);
41
+ });
42
+ it('refuses when the placeholder is already gone, so a double-run cannot corrupt it', async () => {
43
+ fs.writeFileSync(VERSION_TS, 'export const VERSION = "1.2.3";\n');
44
+ await expect(execFileAsync('bash', ['scripts/embed-version.sh'], {
45
+ cwd: CLI_ROOT,
46
+ env: { ...process.env, VERSION: '9.9.9' },
47
+ })).rejects.toThrow();
48
+ });
49
+ it('leaves no .bak file behind', async () => {
50
+ await execFileAsync('bash', ['scripts/embed-version.sh'], {
51
+ cwd: CLI_ROOT,
52
+ env: { ...process.env, VERSION: '9.9.9' },
53
+ });
54
+ expect(fs.existsSync(`${VERSION_TS}.bak`)).toBe(false);
55
+ });
56
+ });
57
+ describe('prepare-npm.sh', () => {
58
+ const PKG = path.join(CLI_ROOT, 'package.json');
59
+ let originalPkg;
60
+ beforeEach(() => { originalPkg = fs.readFileSync(PKG, 'utf8'); });
61
+ afterEach(() => { fs.writeFileSync(PKG, originalPkg); });
62
+ it('produces a package with the version embedded and no devDependencies', async () => {
63
+ await execFileAsync('bash', ['scripts/prepare-npm.sh'], {
64
+ cwd: CLI_ROOT,
65
+ env: { ...process.env, VERSION: '9.9.9' },
66
+ timeout: 120_000,
67
+ });
68
+ const pkg = JSON.parse(fs.readFileSync(PKG, 'utf8'));
69
+ expect(pkg.version).toBe('9.9.9');
70
+ expect(pkg.devDependencies).toBeUndefined();
71
+ expect(pkg.bin).toEqual({ pushto: 'dist/cli.js' });
72
+ // The workspace devDep is the reason stripping exists: pnpm rewrites
73
+ // `workspace:*` into a version that can never resolve publicly.
74
+ expect(JSON.stringify(pkg)).not.toContain('@pushto/shared');
75
+ expect(Object.keys(pkg.dependencies).sort()).toEqual(['archiver', 'chalk', 'commander', 'conf', 'ignore', 'ora']);
76
+ const built = fs.readFileSync(path.join(CLI_ROOT, 'dist', 'version.js'), 'utf8');
77
+ expect(built).toContain('9.9.9');
78
+ expect(built).not.toContain(PLACEHOLDER);
79
+ }, 180_000);
80
+ });
81
+ //# sourceMappingURL=npm-packaging.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npm-packaging.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/npm-packaging.test.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.4.6";
1
+ export declare const VERSION = "0.4.9";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // AUTO-GENERATED FILE — DO NOT EDIT BY HAND.
2
2
  //
3
- // The literal "0.4.6" below is a placeholder. In CI release
3
+ // The literal "0.4.9" below is a placeholder. In CI release
4
4
  // builds (scripts/build-binaries.sh), `sed` replaces it with the real version
5
5
  // string before each `bun build --compile` invocation, and the build asserts
6
6
  // the version was actually embedded by greping the binary. This is the
@@ -10,7 +10,7 @@
10
10
  // silent).
11
11
  //
12
12
  // In local dev (`tsx src/index.ts`) the placeholder stays put and `pushto
13
- // --version` reports the literal "0.4.6" — a giveaway
13
+ // --version` reports the literal "0.4.9" — a giveaway
14
14
  // that you're on the source tree, not a release build.
15
- export const VERSION = "0.4.6";
15
+ export const VERSION = "0.4.9";
16
16
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pushto/cli",
3
- "version": "0.4.6",
3
+ "version": "0.4.9",
4
4
  "description": "Deploy to pushto.host from your terminal",
5
5
  "type": "module",
6
6
  "bin": {