Skip to content

Commit cdd418e

Browse files
committed
chore: publish kubernetes-models-crd-generate fork package wip
1 parent acce30b commit cdd418e

File tree

1 file changed

+70
-3
lines changed

1 file changed

+70
-3
lines changed

.github/workflows/publish-kubernetes-models-crd-generate.yml

Lines changed: 70 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,80 @@ jobs:
4545

4646
- name: Build
4747
working-directory: kubernetes-models-ts
48-
run: pnpm build
48+
run: pnpm build -- --filter @kubernetes-models/crd-generate
4949

50-
- name: Rewrite package.json for publish
50+
- name: Rewrite package.json for publish (rename + resolve workspace deps via pnpm)
5151
working-directory: kubernetes-models-ts
5252
shell: bash
5353
run: |
54-
node -e "const fs=require('fs'); const p='utils/crd-generate/package.json'; const j=JSON.parse(fs.readFileSync(p,'utf8')); j.name='@crossplane-js/kubernetes-models-crd-generate'; j.publishConfig={...(j.publishConfig||{}), access:'public'}; if (j.private) delete j.private; fs.writeFileSync(p, JSON.stringify(j,null,2)+'\n');"
54+
node - <<'NODE'
55+
const fs = require('fs');
56+
const path = require('path');
57+
const cp = require('child_process');
58+
59+
const root = process.cwd();
60+
const pkgPath = path.join('utils', 'crd-generate', 'package.json');
61+
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
62+
63+
// Rename and ensure publishable
64+
pkg.name = '@crossplane-js/kubernetes-models-crd-generate';
65+
pkg.publishConfig = { ...(pkg.publishConfig || {}), access: 'public' };
66+
if (pkg.private) delete pkg.private;
67+
68+
// Use pnpm to list all workspaces once
69+
const out = cp.execSync('pnpm ls -r --depth -1 --json', { encoding: 'utf8' });
70+
const list = JSON.parse(out);
71+
const versions = new Map();
72+
for (const p of list) {
73+
if (p && p.name && p.version) versions.set(p.name, p.version);
74+
}
75+
76+
const depSets = ['dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies'];
77+
78+
function mapWorkspaceSpecifier(spec, version) {
79+
const s = spec.replace(/^workspace:/, '').trim();
80+
if (s === '^') return '^' + version;
81+
if (s === '~') return '~' + version;
82+
if (s === '' || s === '*') return version;
83+
if (s.startsWith('^')) return '^' + version;
84+
if (s.startsWith('~')) return '~' + version;
85+
return version;
86+
}
87+
88+
const unresolved = [];
89+
for (const set of depSets) {
90+
const deps = pkg[set];
91+
if (!deps) continue;
92+
for (const [name, spec] of Object.entries(deps)) {
93+
if (typeof spec === 'string' && spec.startsWith('workspace:')) {
94+
const v = versions.get(name);
95+
if (!v) {
96+
unresolved.push(name);
97+
} else {
98+
deps[name] = mapWorkspaceSpecifier(spec, v);
99+
}
100+
}
101+
}
102+
}
103+
104+
if (unresolved.length) {
105+
console.error('ERROR: Could not resolve workspace versions for:', unresolved.join(', '));
106+
process.exit(1);
107+
}
108+
109+
// Suffix version with commit and run identifiers (semver prerelease)
110+
const base = (pkg.version || '0.0.0').split('-')[0];
111+
const shortSha = cp.execSync('git rev-parse --short=12 HEAD', { encoding: 'utf8' }).trim();
112+
const runNum = process.env.GITHUB_RUN_NUMBER || '0';
113+
const runAttempt = process.env.GITHUB_RUN_ATTEMPT || '1';
114+
const suffix = `sha.${shortSha}.r${runNum}.a${runAttempt}`;
115+
pkg.version = `${base}-${suffix}`;
116+
117+
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
118+
console.log('Rewrote workspace dependencies to monorepo versions for', pkgPath);
119+
console.log('Final version:', pkg.version);
120+
NODE
121+
55122
echo "Updated package.json:"
56123
cat utils/crd-generate/package.json
57124

0 commit comments

Comments
 (0)