@smoothbricks/cli 0.1.0 → 0.1.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.
- package/README.md +208 -83
- package/dist/cli.js +50 -20
- package/dist/lib/devenv.d.ts +6 -0
- package/dist/lib/devenv.d.ts.map +1 -0
- package/dist/lib/devenv.js +82 -0
- package/dist/lib/workspace.d.ts +5 -0
- package/dist/lib/workspace.d.ts.map +1 -1
- package/dist/lib/workspace.js +62 -5
- package/dist/monorepo/index.d.ts +6 -1
- package/dist/monorepo/index.d.ts.map +1 -1
- package/dist/monorepo/index.js +38 -5
- package/dist/monorepo/lockfile.d.ts +5 -1
- package/dist/monorepo/lockfile.d.ts.map +1 -1
- package/dist/monorepo/lockfile.js +45 -5
- package/dist/monorepo/managed-files.d.ts +1 -1
- package/dist/monorepo/managed-files.d.ts.map +1 -1
- package/dist/monorepo/managed-files.js +27 -10
- package/dist/monorepo/package-hygiene.js +1 -1
- package/dist/monorepo/package-policy.d.ts +3 -0
- package/dist/monorepo/package-policy.d.ts.map +1 -1
- package/dist/monorepo/package-policy.js +122 -19
- package/dist/monorepo/packed-manifest.d.ts +4 -0
- package/dist/monorepo/packed-manifest.d.ts.map +1 -0
- package/dist/monorepo/packed-manifest.js +51 -0
- package/dist/monorepo/packed-package.d.ts.map +1 -1
- package/dist/monorepo/packed-package.js +6 -0
- package/dist/monorepo/packs/index.d.ts.map +1 -1
- package/dist/monorepo/packs/index.js +4 -1
- package/dist/monorepo/publish-workflow.d.ts +86 -0
- package/dist/monorepo/publish-workflow.d.ts.map +1 -0
- package/dist/monorepo/publish-workflow.js +343 -0
- package/dist/nx-version-actions.cjs +25 -0
- package/dist/nx-version-actions.d.cts +6 -0
- package/dist/nx-version-actions.d.cts.map +1 -0
- package/dist/release/core.d.ts +50 -0
- package/dist/release/core.d.ts.map +1 -0
- package/dist/release/core.js +97 -0
- package/dist/release/github-release.d.ts +46 -0
- package/dist/release/github-release.d.ts.map +1 -0
- package/dist/release/github-release.js +97 -0
- package/dist/release/index.d.ts +14 -5
- package/dist/release/index.d.ts.map +1 -1
- package/dist/release/index.js +544 -109
- package/dist/release/npm-auth.d.ts +17 -0
- package/dist/release/npm-auth.d.ts.map +1 -0
- package/dist/release/npm-auth.js +51 -0
- package/dist/release/orchestration.d.ts +48 -0
- package/dist/release/orchestration.d.ts.map +1 -0
- package/dist/release/orchestration.js +105 -0
- package/dist/release/publish-plan.d.ts +17 -0
- package/dist/release/publish-plan.d.ts.map +1 -0
- package/dist/release/publish-plan.js +15 -0
- package/dist/release/retag-unpublished.d.ts +34 -0
- package/dist/release/retag-unpublished.d.ts.map +1 -0
- package/dist/release/retag-unpublished.js +77 -0
- package/managed/raw/tooling/git-hooks/pre-commit.sh +2 -7
- package/managed/templates/github/workflows/ci.yml +2 -0
- package/package.json +24 -3
- package/src/cli.ts +64 -25
- package/src/lib/devenv.test.ts +28 -0
- package/src/lib/devenv.ts +89 -0
- package/src/lib/workspace.ts +76 -5
- package/src/monorepo/__tests__/nx-version-actions.test.ts +75 -0
- package/src/monorepo/__tests__/publish-workflow.test.ts +315 -0
- package/src/monorepo/index.ts +45 -5
- package/src/monorepo/lockfile.ts +52 -7
- package/src/monorepo/managed-files.ts +42 -12
- package/src/monorepo/package-hygiene.ts +1 -1
- package/src/monorepo/package-policy.ts +134 -18
- package/src/monorepo/packed-manifest.ts +67 -0
- package/src/monorepo/packed-package.ts +7 -0
- package/src/monorepo/packs/index.ts +4 -0
- package/src/monorepo/publish-workflow.ts +430 -0
- package/src/nx-version-actions.cts +36 -0
- package/src/release/__tests__/core-properties.test.ts +149 -0
- package/src/release/__tests__/core-scenarios.test.ts +177 -0
- package/src/release/__tests__/core.test.ts +73 -0
- package/src/release/__tests__/fixture-repo.test.ts +305 -0
- package/src/release/__tests__/github-release.test.ts +144 -0
- package/src/release/__tests__/helpers/fixture-repo.ts +113 -0
- package/src/release/__tests__/npm-auth.test.ts +129 -0
- package/src/release/__tests__/orchestration.test.ts +202 -0
- package/src/release/__tests__/publish-plan.test.ts +61 -0
- package/src/release/__tests__/retag-unpublished.test.ts +160 -0
- package/src/release/core.ts +170 -0
- package/src/release/github-release.ts +134 -0
- package/src/release/index.ts +662 -116
- package/src/release/npm-auth.ts +122 -0
- package/src/release/orchestration.ts +186 -0
- package/src/release/publish-plan.ts +37 -0
- package/src/release/retag-unpublished.ts +122 -0
- package/managed/templates/github/workflows/publish.yml +0 -136
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { mkdtemp, rm, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { tmpdir } from 'node:os';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { releaseTag } from './core.js';
|
|
5
|
+
const nxRenderOnlyReleaseConfig = {
|
|
6
|
+
changelog: {
|
|
7
|
+
workspaceChangelog: false,
|
|
8
|
+
projectChangelogs: {
|
|
9
|
+
createRelease: false,
|
|
10
|
+
file: false,
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
export async function renderNxProjectChangelogContents(input) {
|
|
15
|
+
return withNxWorkspaceRoot(input.root, async () => {
|
|
16
|
+
const { createAPI } = await import('nx/src/command-line/release/changelog.js');
|
|
17
|
+
const result = await createAPI(nxRenderOnlyReleaseConfig, false)(nxProjectChangelogArgs(input.pkg, input.previousTag, input.dryRun));
|
|
18
|
+
return projectChangelogContents(result, input.pkg.name);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
export async function createOrUpdateGithubRelease(pkg, contents, shell) {
|
|
22
|
+
const tag = releaseTag(pkg);
|
|
23
|
+
const releaseExists = await shell.githubReleaseExists(tag);
|
|
24
|
+
shell.log(`${pkg.name}@${pkg.version}: ${releaseExists ? 'updating' : 'creating'} GitHub Release for ${tag}.`);
|
|
25
|
+
const tempDir = await mkdtemp(join(tmpdir(), 'smoo-github-release-'));
|
|
26
|
+
const notesFile = join(tempDir, 'notes.md');
|
|
27
|
+
try {
|
|
28
|
+
await writeFile(notesFile, contents);
|
|
29
|
+
await shell.runGhRelease(githubReleaseCommandArgs(tag, notesFile, releaseExists, pkg.version));
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
await rm(tempDir, { recursive: true, force: true });
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export function nxProjectChangelogArgs(pkg, previousTag, dryRun) {
|
|
36
|
+
const base = {
|
|
37
|
+
version: pkg.version,
|
|
38
|
+
projects: [pkg.name],
|
|
39
|
+
gitCommit: false,
|
|
40
|
+
gitTag: false,
|
|
41
|
+
gitPush: false,
|
|
42
|
+
stageChanges: false,
|
|
43
|
+
createRelease: false,
|
|
44
|
+
deleteVersionPlans: false,
|
|
45
|
+
dryRun,
|
|
46
|
+
};
|
|
47
|
+
return previousTag ? { ...base, from: previousTag } : { ...base, firstRelease: true };
|
|
48
|
+
}
|
|
49
|
+
export function projectChangelogContents(result, projectName) {
|
|
50
|
+
const changelog = result.projectChangelogs?.[projectName];
|
|
51
|
+
if (!changelog) {
|
|
52
|
+
throw new Error(`Nx did not generate a project changelog for ${projectName}.`);
|
|
53
|
+
}
|
|
54
|
+
return changelog.contents;
|
|
55
|
+
}
|
|
56
|
+
export function githubReleaseCommandArgs(tag, notesFile, releaseExists, version) {
|
|
57
|
+
const args = [
|
|
58
|
+
'release',
|
|
59
|
+
releaseExists ? 'edit' : 'create',
|
|
60
|
+
tag,
|
|
61
|
+
'--title',
|
|
62
|
+
tag,
|
|
63
|
+
'--notes-file',
|
|
64
|
+
notesFile,
|
|
65
|
+
'--verify-tag',
|
|
66
|
+
`--latest=${isPrereleaseVersion(version) ? 'false' : 'true'}`,
|
|
67
|
+
];
|
|
68
|
+
if (isPrereleaseVersion(version)) {
|
|
69
|
+
args.push('--prerelease');
|
|
70
|
+
}
|
|
71
|
+
return args;
|
|
72
|
+
}
|
|
73
|
+
function isPrereleaseVersion(version) {
|
|
74
|
+
return version.includes('-');
|
|
75
|
+
}
|
|
76
|
+
async function withNxWorkspaceRoot(root, run) {
|
|
77
|
+
const workspaceRootModule = await import('nx/src/utils/workspace-root.js');
|
|
78
|
+
const previousWorkspaceRoot = workspaceRootModule.workspaceRoot;
|
|
79
|
+
const previousEnvWorkspaceRoot = process.env.NX_WORKSPACE_ROOT_PATH;
|
|
80
|
+
const previousCwd = process.cwd();
|
|
81
|
+
process.env.NX_WORKSPACE_ROOT_PATH = root;
|
|
82
|
+
process.chdir(root);
|
|
83
|
+
workspaceRootModule.setWorkspaceRoot(root);
|
|
84
|
+
try {
|
|
85
|
+
return await run();
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
workspaceRootModule.setWorkspaceRoot(previousWorkspaceRoot);
|
|
89
|
+
if (previousEnvWorkspaceRoot === undefined) {
|
|
90
|
+
delete process.env.NX_WORKSPACE_ROOT_PATH;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
process.env.NX_WORKSPACE_ROOT_PATH = previousEnvWorkspaceRoot;
|
|
94
|
+
}
|
|
95
|
+
process.chdir(previousCwd);
|
|
96
|
+
}
|
|
97
|
+
}
|
package/dist/release/index.d.ts
CHANGED
|
@@ -1,24 +1,33 @@
|
|
|
1
1
|
export interface ReleaseVersionOptions {
|
|
2
2
|
bump: string;
|
|
3
3
|
dryRun?: boolean;
|
|
4
|
+
githubOutput?: string;
|
|
4
5
|
}
|
|
5
6
|
export interface ReleasePublishOptions {
|
|
6
7
|
bump: string;
|
|
7
|
-
tag?: string;
|
|
8
|
-
npmTag?: string;
|
|
9
8
|
dryRun?: boolean;
|
|
10
9
|
}
|
|
11
|
-
export interface
|
|
12
|
-
|
|
10
|
+
export interface ReleaseRepairPendingOptions {
|
|
11
|
+
dryRun?: boolean;
|
|
13
12
|
}
|
|
14
13
|
export interface ReleaseTrustPublisherOptions {
|
|
15
14
|
dryRun?: boolean;
|
|
16
15
|
otp?: string;
|
|
17
16
|
skipLogin?: boolean;
|
|
18
17
|
}
|
|
18
|
+
export interface ReleaseRetagUnpublishedOptions {
|
|
19
|
+
tags: string[];
|
|
20
|
+
to?: string;
|
|
21
|
+
push?: boolean;
|
|
22
|
+
dispatch?: boolean;
|
|
23
|
+
dryRun?: boolean;
|
|
24
|
+
remote?: string;
|
|
25
|
+
branch?: string;
|
|
26
|
+
}
|
|
19
27
|
export declare function releaseVersion(root: string, options: ReleaseVersionOptions): Promise<void>;
|
|
20
28
|
export declare function releasePublish(root: string, options: ReleasePublishOptions): Promise<void>;
|
|
21
|
-
export declare function
|
|
29
|
+
export declare function releaseRepairPending(root: string, options: ReleaseRepairPendingOptions): Promise<void>;
|
|
22
30
|
export declare function releaseTrustPublisher(root: string, options: ReleaseTrustPublisherOptions): Promise<void>;
|
|
31
|
+
export declare function releaseRetagUnpublished(root: string, options: ReleaseRetagUnpublishedOptions): Promise<void>;
|
|
23
32
|
export declare function printReleaseState(root: string): Promise<void>;
|
|
24
33
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/release/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/release/index.ts"],"names":[],"mappings":"AA+BA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBhG;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BhG;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB5G;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,IAAI,CAAC,CA0D9G;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,IAAI,CAAC,CAelH;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnE"}
|