putitoutthere 0.2.28 → 0.2.30
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/CHANGELOG.md +40 -0
- package/MIGRATIONS.md +1274 -0
- package/README.md +343 -41
- package/action.yml +9 -0
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js +28 -6
- package/dist/action.js.map +1 -1
- package/dist/cascade.js +14 -7
- package/dist/cascade.js.map +1 -1
- package/dist/check-crate-size.d.ts +26 -0
- package/dist/check-crate-size.d.ts.map +1 -0
- package/dist/check-crate-size.js +99 -0
- package/dist/check-crate-size.js.map +1 -0
- package/dist/check.d.ts.map +1 -1
- package/dist/check.js +116 -16
- package/dist/check.js.map +1 -1
- package/dist/cli.d.ts +17 -4
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +156 -19
- package/dist/cli.js.map +1 -1
- package/dist/completeness.js +6 -3
- package/dist/completeness.js.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +20 -5
- package/dist/config.js.map +1 -1
- package/dist/ensure-tag.d.ts +17 -0
- package/dist/ensure-tag.d.ts.map +1 -0
- package/dist/ensure-tag.js +28 -0
- package/dist/ensure-tag.js.map +1 -0
- package/dist/env.js +6 -3
- package/dist/env.js.map +1 -1
- package/dist/error-codes.d.ts +89 -0
- package/dist/error-codes.d.ts.map +1 -1
- package/dist/error-codes.js +102 -0
- package/dist/error-codes.js.map +1 -1
- package/dist/git.d.ts +5 -0
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +19 -6
- package/dist/git.js.map +1 -1
- package/dist/glob.d.ts +9 -0
- package/dist/glob.d.ts.map +1 -1
- package/dist/glob.js +29 -1
- package/dist/glob.js.map +1 -1
- package/dist/handlers/crates.d.ts +15 -0
- package/dist/handlers/crates.d.ts.map +1 -1
- package/dist/handlers/crates.js +84 -9
- package/dist/handlers/crates.js.map +1 -1
- package/dist/handlers/npm-platform.d.ts +11 -0
- package/dist/handlers/npm-platform.d.ts.map +1 -1
- package/dist/handlers/npm-platform.js +91 -8
- package/dist/handlers/npm-platform.js.map +1 -1
- package/dist/handlers/npm.d.ts.map +1 -1
- package/dist/handlers/npm.js +59 -9
- package/dist/handlers/npm.js.map +1 -1
- package/dist/handlers/pypi.d.ts +0 -6
- package/dist/handlers/pypi.d.ts.map +1 -1
- package/dist/handlers/pypi.js +28 -10
- package/dist/handlers/pypi.js.map +1 -1
- package/dist/log.js +16 -8
- package/dist/log.js.map +1 -1
- package/dist/normalize-artifacts.js +8 -4
- package/dist/normalize-artifacts.js.map +1 -1
- package/dist/plan.d.ts +8 -0
- package/dist/plan.d.ts.map +1 -1
- package/dist/plan.js +125 -25
- package/dist/plan.js.map +1 -1
- package/dist/preflight.d.ts +79 -0
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +715 -33
- package/dist/preflight.js.map +1 -1
- package/dist/publish.d.ts +7 -0
- package/dist/publish.d.ts.map +1 -1
- package/dist/publish.js +49 -18
- package/dist/publish.js.map +1 -1
- package/dist/python-versions.d.ts +40 -0
- package/dist/python-versions.d.ts.map +1 -0
- package/dist/python-versions.js +142 -0
- package/dist/python-versions.js.map +1 -0
- package/dist/reconcile-types.d.ts +36 -0
- package/dist/reconcile-types.d.ts.map +1 -0
- package/dist/reconcile-types.js +9 -0
- package/dist/reconcile-types.js.map +1 -0
- package/dist/reconcile.d.ts +21 -0
- package/dist/reconcile.d.ts.map +1 -0
- package/dist/reconcile.js +54 -0
- package/dist/reconcile.js.map +1 -0
- package/dist/release-packages.d.ts +33 -0
- package/dist/release-packages.d.ts.map +1 -0
- package/dist/release-packages.js +74 -0
- package/dist/release-packages.js.map +1 -0
- package/dist/resolve-tag-commit.d.ts +22 -0
- package/dist/resolve-tag-commit.d.ts.map +1 -0
- package/dist/resolve-tag-commit.js +26 -0
- package/dist/resolve-tag-commit.js.map +1 -0
- package/dist/retry.js +14 -7
- package/dist/retry.js.map +1 -1
- package/dist/status-classify.d.ts +17 -0
- package/dist/status-classify.d.ts.map +1 -0
- package/dist/status-classify.js +37 -0
- package/dist/status-classify.js.map +1 -0
- package/dist/status-format.d.ts +9 -0
- package/dist/status-format.d.ts.map +1 -0
- package/dist/status-format.js +19 -0
- package/dist/status-format.js.map +1 -0
- package/dist/status-types.d.ts +31 -0
- package/dist/status-types.d.ts.map +1 -0
- package/dist/status-types.js +8 -0
- package/dist/status-types.js.map +1 -0
- package/dist/status.d.ts +28 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +72 -0
- package/dist/status.js.map +1 -0
- package/dist/tag-template.js +2 -1
- package/dist/tag-template.js.map +1 -1
- package/dist/trailer.js +16 -9
- package/dist/trailer.js.map +1 -1
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -2
- package/dist/types.js.map +1 -1
- package/dist/verbose.js +7 -4
- package/dist/verbose.js.map +1 -1
- package/dist/wheel-abi.d.ts +37 -0
- package/dist/wheel-abi.d.ts.map +1 -0
- package/dist/wheel-abi.js +118 -0
- package/dist/wheel-abi.js.map +1 -0
- package/dist/write-crate-version.d.ts +32 -0
- package/dist/write-crate-version.d.ts.map +1 -0
- package/dist/write-crate-version.js +52 -0
- package/dist/write-crate-version.js.map +1 -0
- package/dist/write-launcher.d.ts +82 -0
- package/dist/write-launcher.d.ts.map +1 -0
- package/dist/write-launcher.js +236 -0
- package/dist/write-launcher.js.map +1 -0
- package/dist/write-version.js +2 -1
- package/dist/write-version.js.map +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Author the npm bundled-cli launcher (`bin/<bin>.js`) at build time.
|
|
3
|
+
*
|
|
4
|
+
* Bundled-CLI consumers used to ship a templated launcher whose only
|
|
5
|
+
* per-consumer inputs are the package name and the configured `targets`
|
|
6
|
+
* list — both of which the engine has at plan time. Issue #299
|
|
7
|
+
* absorbs that template into the engine: the build job invokes
|
|
8
|
+
* `write-launcher` on the main row of every `kind = "npm" && build =
|
|
9
|
+
* "bundled-cli"` package and the launcher is generated in place.
|
|
10
|
+
*
|
|
11
|
+
* Override semantics: existing `bin/<bin>.js` files are never
|
|
12
|
+
* overwritten, and an existing `package.json#bin` field is left as-is.
|
|
13
|
+
* Consumers who need a custom launcher commit it under the same path
|
|
14
|
+
* and the workflow respects it.
|
|
15
|
+
*/
|
|
16
|
+
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
17
|
+
import { dirname, isAbsolute, join, resolve } from 'node:path';
|
|
18
|
+
import { loadConfig } from './config.js';
|
|
19
|
+
import { normalizeBuild } from './handlers/npm-platform.js';
|
|
20
|
+
/**
|
|
21
|
+
* Generate the launcher source for the given configuration.
|
|
22
|
+
*
|
|
23
|
+
* Exported only so test fixtures can pin the on-the-wire shape; the
|
|
24
|
+
* build path goes through `writeLauncher` / `writeLauncherFromConfig`.
|
|
25
|
+
*/
|
|
26
|
+
export function generateLauncherSource(opts) {
|
|
27
|
+
const { npmName, bin, platformNameTemplate, triples } = opts;
|
|
28
|
+
// Resolve every template placeholder except {triple}, which stays as
|
|
29
|
+
// a JS-template substitution. Pre-resolving here keeps the published
|
|
30
|
+
// launcher dependency-free (no runtime read of the platform template).
|
|
31
|
+
const partial = platformNameTemplate
|
|
32
|
+
.replaceAll('{name}', npmName)
|
|
33
|
+
.replaceAll('{scope}', extractScope(npmName))
|
|
34
|
+
.replaceAll('{base}', extractBase(npmName))
|
|
35
|
+
.replaceAll('{mode}', 'bundled-cli');
|
|
36
|
+
const triplesTable = triples
|
|
37
|
+
.map((triple) => {
|
|
38
|
+
const key = nodePlatformKey(triple);
|
|
39
|
+
return ` ${jsString(key)}: ${jsString(triple)},`;
|
|
40
|
+
})
|
|
41
|
+
.join('\n');
|
|
42
|
+
// Backtick template + ${triple} substitution at install time keeps the
|
|
43
|
+
// launcher's branching minimal: one Node platform-key lookup, one
|
|
44
|
+
// require.resolve, one spawnSync. Same shape as the README example
|
|
45
|
+
// bundled-cli consumers wrote by hand before #299.
|
|
46
|
+
return [
|
|
47
|
+
`#!/usr/bin/env node`,
|
|
48
|
+
`// Generated by putitoutthere. Commit your own bin/${bin}.js to override.`,
|
|
49
|
+
`const { spawnSync } = require('node:child_process');`,
|
|
50
|
+
`const { platform, arch } = process;`,
|
|
51
|
+
``,
|
|
52
|
+
`const triples = {`,
|
|
53
|
+
triplesTable,
|
|
54
|
+
`};`,
|
|
55
|
+
``,
|
|
56
|
+
`const triple = triples[\`\${platform}-\${arch}\`];`,
|
|
57
|
+
`if (!triple) {`,
|
|
58
|
+
` console.error(\`${bin}: unsupported platform \${platform}-\${arch}\`);`,
|
|
59
|
+
` process.exit(1);`,
|
|
60
|
+
`}`,
|
|
61
|
+
``,
|
|
62
|
+
`const pkg = \`${partial.replaceAll('{triple}', '${triple}')}\`;`,
|
|
63
|
+
`const binary = require.resolve(\`\${pkg}/${bin}\${platform === 'win32' ? '.exe' : ''}\`);`,
|
|
64
|
+
`const result = spawnSync(binary, process.argv.slice(2), { stdio: 'inherit' });`,
|
|
65
|
+
`process.exit(result.status ?? 1);`,
|
|
66
|
+
``,
|
|
67
|
+
].join('\n');
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Author the launcher + `package.json#bin` entry for a bundled-cli npm
|
|
71
|
+
* package. Idempotent: existing files / fields are left as-is so
|
|
72
|
+
* consumers can override either piece independently.
|
|
73
|
+
*
|
|
74
|
+
* Returns the list of paths that were actually written.
|
|
75
|
+
*/
|
|
76
|
+
export function writeLauncher(opts) {
|
|
77
|
+
const written = [];
|
|
78
|
+
const launcherPath = join(opts.pkgDir, 'bin', `${opts.bin}.js`);
|
|
79
|
+
// CodeQL TOCTOU: use `wx` (write-exclusive) rather than `existsSync`
|
|
80
|
+
// precheck so the "absent only" guarantee is atomic. EEXIST means a
|
|
81
|
+
// consumer-authored launcher (or a concurrent write) won this race —
|
|
82
|
+
// exactly the override path we want to respect.
|
|
83
|
+
mkdirSync(dirname(launcherPath), { recursive: true });
|
|
84
|
+
try {
|
|
85
|
+
writeFileSync(launcherPath, generateLauncherSource(opts), { encoding: 'utf8', flag: 'wx' });
|
|
86
|
+
written.push(launcherPath);
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
if (err.code !== 'EEXIST') {
|
|
90
|
+
throw err;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const pkgJsonPath = join(opts.pkgDir, 'package.json');
|
|
94
|
+
const raw = readFileSync(pkgJsonPath, 'utf8');
|
|
95
|
+
const parsed = JSON.parse(raw);
|
|
96
|
+
if (parsed['bin'] === undefined) {
|
|
97
|
+
parsed['bin'] = { [opts.bin]: `bin/${opts.bin}.js` };
|
|
98
|
+
const indent = detectIndent(raw);
|
|
99
|
+
const trailing = raw.endsWith('\n') ? '\n' : '';
|
|
100
|
+
writeFileSync(pkgJsonPath, JSON.stringify(parsed, null, indent) + trailing, 'utf8');
|
|
101
|
+
written.push(pkgJsonPath);
|
|
102
|
+
}
|
|
103
|
+
return written;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Config-driven entry point used by the CLI. Loads the config, finds
|
|
107
|
+
* the `[[package]]` entry matching `packagePath`, derives the launcher
|
|
108
|
+
* inputs, and delegates to `writeLauncher`. Non-npm packages and npm
|
|
109
|
+
* packages without a bundled-cli build entry are no-ops — the build
|
|
110
|
+
* job invokes this on every main row and only bundled-cli rows need
|
|
111
|
+
* the launcher.
|
|
112
|
+
*/
|
|
113
|
+
export function writeLauncherFromConfig(opts) {
|
|
114
|
+
const cfg = loadConfig(opts.configPath ?? join(opts.cwd, 'putitoutthere.toml'));
|
|
115
|
+
const absPkg = isAbsolute(opts.packagePath)
|
|
116
|
+
? opts.packagePath
|
|
117
|
+
: resolve(opts.cwd, opts.packagePath);
|
|
118
|
+
const pkg = cfg.packages.find((p) => resolve(opts.cwd, p.path) === absPkg);
|
|
119
|
+
if (!pkg) {
|
|
120
|
+
throw new Error(`write-launcher: no [[package]] entry with path "${opts.packagePath}" in ${opts.configPath ?? join(opts.cwd, 'putitoutthere.toml')}`);
|
|
121
|
+
}
|
|
122
|
+
if (pkg.kind !== 'npm') {
|
|
123
|
+
return [];
|
|
124
|
+
}
|
|
125
|
+
const npmPkg = pkg;
|
|
126
|
+
const buildEntries = normalizeBuild(npmPkg.build);
|
|
127
|
+
const bundledCli = buildEntries.find((e) => e.mode === 'bundled-cli');
|
|
128
|
+
if (!bundledCli) {
|
|
129
|
+
return [];
|
|
130
|
+
}
|
|
131
|
+
// `[package.bundle_cli]` is optional on a bundled-cli npm package — #298
|
|
132
|
+
// kept the table opt-in. When it's declared the reusable workflow
|
|
133
|
+
// cross-compiles the Rust binary and we author the launcher from
|
|
134
|
+
// `bundle_cli.bin`. When it's absent the consumer is on the legacy
|
|
135
|
+
// "bring your own scripts/build.cjs + bin/<bin>.js" path: the
|
|
136
|
+
// cross-compile step already skips them (it gates on `matrix.bundle_cli`),
|
|
137
|
+
// and the engine has no binary name to author a launcher from. No-op so
|
|
138
|
+
// the consumer's committed launcher + package.json#bin stand untouched.
|
|
139
|
+
// The workflow can't make this distinction — the main row this runs on
|
|
140
|
+
// never carries `bundle_cli` (plan.ts attaches it only to per-target
|
|
141
|
+
// bundled-cli rows) — so the gate lives here, where the full config is
|
|
142
|
+
// loaded. Skipping it dereferenced the absent table and crashed every
|
|
143
|
+
// legacy bundled-cli package's main row once #299 moved launcher
|
|
144
|
+
// generation into the engine.
|
|
145
|
+
const bundleCli = npmPkg.bundle_cli;
|
|
146
|
+
if (bundleCli === undefined) {
|
|
147
|
+
return [];
|
|
148
|
+
}
|
|
149
|
+
// bundle_cli present ⇒ `targets` is non-empty (config.ts refinement), so
|
|
150
|
+
// the assertion is sound on this path.
|
|
151
|
+
const targets = npmPkg.targets;
|
|
152
|
+
const triples = targets.map((t) => (typeof t === 'string' ? t : t.triple));
|
|
153
|
+
const npmName = npmPkg.npm ?? npmPkg.name;
|
|
154
|
+
return writeLauncher({
|
|
155
|
+
pkgDir: resolve(opts.cwd, npmPkg.path),
|
|
156
|
+
npmName,
|
|
157
|
+
bin: bundleCli.bin,
|
|
158
|
+
platformNameTemplate: bundledCli.name,
|
|
159
|
+
triples,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
/* ----------------------------- internals ----------------------------- */
|
|
163
|
+
function extractScope(npmName) {
|
|
164
|
+
const m = /^@([^/]+)\/(.+)$/.exec(npmName);
|
|
165
|
+
return m ? m[1] : '';
|
|
166
|
+
}
|
|
167
|
+
function extractBase(npmName) {
|
|
168
|
+
const m = /^@([^/]+)\/(.+)$/.exec(npmName);
|
|
169
|
+
return m ? m[2] : npmName;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Map a target triple (napi-rs short form or Rust target) to the Node
|
|
173
|
+
* `${platform}-${arch}` lookup key used in the generated launcher's
|
|
174
|
+
* `triples` table.
|
|
175
|
+
*
|
|
176
|
+
* Mirrors the TRIPLE_MAP in `src/handlers/npm-platform.ts`, but
|
|
177
|
+
* collapses `os`/`cpu`/`libc` into the `<node-platform>-<node-arch>`
|
|
178
|
+
* key Node exposes at install time. Unmapped triples throw — plan-
|
|
179
|
+
* time guard (`assertTripleSupported`) already rejects them before the
|
|
180
|
+
* matrix runs, so reaching the throw implies map drift between the
|
|
181
|
+
* two files; the vocabulary matches `targetToOsCpu` so the drift is
|
|
182
|
+
* obvious.
|
|
183
|
+
*/
|
|
184
|
+
export function nodePlatformKey(triple) {
|
|
185
|
+
const t = triple.toLowerCase();
|
|
186
|
+
// napi-rs short form (`linux-x64-gnu`) already starts with the Node
|
|
187
|
+
// platform + arch; lop off the libc suffix if present.
|
|
188
|
+
for (const [prefix, key] of NAPI_PREFIXES) {
|
|
189
|
+
if (t.startsWith(prefix)) {
|
|
190
|
+
return key;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// Rust target triples — explicit lookup.
|
|
194
|
+
const rust = RUST_TARGET_KEYS[t];
|
|
195
|
+
if (rust === undefined) {
|
|
196
|
+
throw new Error(`write-launcher: target triple "${triple}" is not mapped to Node platform+arch`);
|
|
197
|
+
}
|
|
198
|
+
return rust;
|
|
199
|
+
}
|
|
200
|
+
const NAPI_PREFIXES = [
|
|
201
|
+
['linux-x64', 'linux-x64'],
|
|
202
|
+
['linux-arm64', 'linux-arm64'],
|
|
203
|
+
['linux-arm-', 'linux-arm'],
|
|
204
|
+
['darwin-x64', 'darwin-x64'],
|
|
205
|
+
['darwin-arm64', 'darwin-arm64'],
|
|
206
|
+
['win32-x64', 'win32-x64'],
|
|
207
|
+
['win32-arm64', 'win32-arm64'],
|
|
208
|
+
];
|
|
209
|
+
const RUST_TARGET_KEYS = {
|
|
210
|
+
'x86_64-unknown-linux-gnu': 'linux-x64',
|
|
211
|
+
'x86_64-unknown-linux-musl': 'linux-x64',
|
|
212
|
+
'aarch64-unknown-linux-gnu': 'linux-arm64',
|
|
213
|
+
'aarch64-unknown-linux-musl': 'linux-arm64',
|
|
214
|
+
'armv7-unknown-linux-gnueabihf': 'linux-arm',
|
|
215
|
+
'armv7-unknown-linux-musleabihf': 'linux-arm',
|
|
216
|
+
'x86_64-apple-darwin': 'darwin-x64',
|
|
217
|
+
'aarch64-apple-darwin': 'darwin-arm64',
|
|
218
|
+
'x86_64-pc-windows-msvc': 'win32-x64',
|
|
219
|
+
'aarch64-pc-windows-msvc': 'win32-arm64',
|
|
220
|
+
};
|
|
221
|
+
function jsString(s) {
|
|
222
|
+
return `'${s.replaceAll('\\', '\\\\').replaceAll("'", "\\'")}'`;
|
|
223
|
+
}
|
|
224
|
+
/** 2 / 4 / tab. Defaults to 2 when undetectable. Mirrors npm.ts. */
|
|
225
|
+
export function detectIndent(source) {
|
|
226
|
+
const m = /^(?<indent>[ \t]+)"/m.exec(source);
|
|
227
|
+
if (!m?.groups?.indent) {
|
|
228
|
+
return 2;
|
|
229
|
+
}
|
|
230
|
+
const indent = m.groups.indent;
|
|
231
|
+
if (indent.includes('\t')) {
|
|
232
|
+
return '\t';
|
|
233
|
+
}
|
|
234
|
+
return indent.length;
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=write-launcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-launcher.js","sourceRoot":"","sources":["../src/write-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAmB,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAoB5D;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAA0B;IAC/D,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,oBAAoB,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC7D,qEAAqE;IACrE,qEAAqE;IACrE,uEAAuE;IACvE,MAAM,OAAO,GAAG,oBAAoB;SACjC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC;SAC7B,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;SAC5C,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;SAC1C,UAAU,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAEvC,MAAM,YAAY,GAAG,OAAO;SACzB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACd,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,KAAK,QAAQ,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;IACpD,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,uEAAuE;IACvE,kEAAkE;IAClE,mEAAmE;IACnE,mDAAmD;IACnD,OAAO;QACL,qBAAqB;QACrB,sDAAsD,GAAG,kBAAkB;QAC3E,sDAAsD;QACtD,qCAAqC;QACrC,EAAE;QACF,mBAAmB;QACnB,YAAY;QACZ,IAAI;QACJ,EAAE;QACF,oDAAoD;QACpD,gBAAgB;QAChB,qBAAqB,GAAG,kDAAkD;QAC1E,oBAAoB;QACpB,GAAG;QACH,EAAE;QACF,iBAAiB,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,KAAK;QACjE,4CAA4C,GAAG,4CAA4C;QAC3F,gFAAgF;QAChF,mCAAmC;QACnC,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAA0B;IACtD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;IAChE,qEAAqE;IACrE,oEAAoE;IACpE,qEAAqE;IACrE,gDAAgD;IAChD,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,IAAI,CAAC;QACH,aAAa,CAAC,YAAY,EAAE,sBAAsB,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAAA,MAAM,GAAG,CAAC;QAAA,CAAC;IACpE,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;IAC1D,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpF,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAYD;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAoC;IAEpC,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAChF,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;QACzC,CAAC,CAAC,IAAI,CAAC,WAAW;QAClB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAC5C,CAAC;IACF,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,mDAAmD,IAAI,CAAC,WAAW,QAAQ,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,EAAE,CACrI,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAAA,OAAO,EAAE,CAAC;IAAA,CAAC;IAEpC,MAAM,MAAM,GAAe,GAAG,CAAC;IAC/B,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;IACtE,IAAI,CAAC,UAAU,EAAE,CAAC;QAAA,OAAO,EAAE,CAAC;IAAA,CAAC;IAC7B,yEAAyE;IACzE,kEAAkE;IAClE,iEAAiE;IACjE,mEAAmE;IACnE,8DAA8D;IAC9D,2EAA2E;IAC3E,wEAAwE;IACxE,wEAAwE;IACxE,uEAAuE;IACvE,qEAAqE;IACrE,uEAAuE;IACvE,sEAAsE;IACtE,iEAAiE;IACjE,8BAA8B;IAC9B,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;IACpC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAAA,OAAO,EAAE,CAAC;IAAA,CAAC;IACzC,yEAAyE;IACzE,uCAAuC;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAQ,CAAC;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC;IAC1C,OAAO,aAAa,CAAC;QACnB,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;QACtC,OAAO;QACP,GAAG,EAAE,SAAS,CAAC,GAAG;QAClB,oBAAoB,EAAE,UAAU,CAAC,IAAI;QACrC,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,2EAA2E;AAE3E,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAClC,MAAM,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAC/B,oEAAoE;IACpE,uDAAuD;IACvD,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,aAAa,EAAE,CAAC;QAC1C,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAAA,OAAO,GAAG,CAAC;QAAA,CAAC;IACzC,CAAC;IACD,yCAAyC;IACzC,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,kCAAkC,MAAM,uCAAuC,CAChF,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,aAAa,GAAgC;IACjD,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,aAAa,EAAE,aAAa,CAAC;IAC9B,CAAC,YAAY,EAAE,WAAW,CAAC;IAC3B,CAAC,YAAY,EAAE,YAAY,CAAC;IAC5B,CAAC,cAAc,EAAE,cAAc,CAAC;IAChC,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1B,CAAC,aAAa,EAAE,aAAa,CAAC;CAC/B,CAAC;AAEF,MAAM,gBAAgB,GAA2B;IAC/C,0BAA0B,EAAE,WAAW;IACvC,2BAA2B,EAAE,WAAW;IACxC,2BAA2B,EAAE,aAAa;IAC1C,4BAA4B,EAAE,aAAa;IAC3C,+BAA+B,EAAE,WAAW;IAC5C,gCAAgC,EAAE,WAAW;IAC7C,qBAAqB,EAAE,YAAY;IACnC,sBAAsB,EAAE,cAAc;IACtC,wBAAwB,EAAE,WAAW;IACrC,yBAAyB,EAAE,aAAa;CACzC,CAAC;AAEF,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;AAClE,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,MAAM,CAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAA,OAAO,CAAC,CAAC;IAAA,CAAC;IACnC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAC/B,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAAA,OAAO,IAAI,CAAC;IAAA,CAAC;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC"}
|
package/dist/write-version.js
CHANGED
|
@@ -83,8 +83,9 @@ export function writeVersionForBuild(pkgDir, version) {
|
|
|
83
83
|
throw err;
|
|
84
84
|
}
|
|
85
85
|
const cargoUpdated = replaceCargoVersion(cargoOriginal, version);
|
|
86
|
-
if (cargoUpdated !== cargoOriginal)
|
|
86
|
+
if (cargoUpdated !== cargoOriginal) {
|
|
87
87
|
writeFileSync(cargoPath, cargoUpdated, 'utf8');
|
|
88
|
+
}
|
|
88
89
|
return [cargoPath];
|
|
89
90
|
}
|
|
90
91
|
function isDynamicVersion(project) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-version.js","sourceRoot":"","sources":["../src/write-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,2BAA2B,GAC/B,sEAAsE,CAAC;AAEzE;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,OAAe;IAClE,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACrD,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACH,UAAU,GAAG,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,8CAA8C,aAAa,EAAE,EAAE;gBAC7E,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;QACL,CAAC;QACD,4DAA4D;QAC5D,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,kCAAkC,aAAa,KAAK,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,OAAO,GAAI,MAAiE,EAAE,OAAO,CAAC;IAC5F,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,kBAAkB,aAAa,2EAA2E,2BAA2B,GAAG,CACzI,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,IAAI,UAAU,CAAC,mBAAmB,oBAAoB,aAAa,mPAAmP,2BAA2B,GAAG,CACrV,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,KAAK,CACb,kBAAkB,aAAa,sFAAsF,2BAA2B,GAAG,CACpJ,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC7C,IAAI,aAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,aAAa,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CACb,6FAA6F,SAAS,+GAA+G,EACrN,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAC;QACJ,CAAC;QACD,4DAA4D;QAC5D,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,MAAM,YAAY,GAAG,mBAAmB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACjE,IAAI,YAAY,KAAK,aAAa;
|
|
1
|
+
{"version":3,"file":"write-version.js","sourceRoot":"","sources":["../src/write-version.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "putitoutthere",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.30",
|
|
4
4
|
"description": "Polyglot release orchestrator for crates.io, PyPI, and npm",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,10 +38,12 @@
|
|
|
38
38
|
"test:unit": "vitest run",
|
|
39
39
|
"test:unit:watch": "vitest",
|
|
40
40
|
"test:unit:coverage": "vitest run --coverage",
|
|
41
|
-
"test:integration": "vitest run --config test/integration/vitest.integration.config.ts"
|
|
41
|
+
"test:integration": "vitest run --config test/integration/vitest.integration.config.ts",
|
|
42
|
+
"test:e2e": "pnpm build && vitest run --config test/e2e/vitest.e2e.config.ts"
|
|
42
43
|
},
|
|
43
44
|
"devDependencies": {
|
|
44
45
|
"@eslint/js": "^10.0.1",
|
|
46
|
+
"@stylistic/eslint-plugin": "^5.10.0",
|
|
45
47
|
"@types/node": "^25.6.0",
|
|
46
48
|
"@vercel/ncc": "^0.38.0",
|
|
47
49
|
"@vitest/coverage-v8": "^2.1.0",
|