@mannyc1/ts-release 0.0.2 → 0.0.5
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/ARCHITECTURE.md +55 -15
- package/README.md +229 -75
- package/SPEC.md +53 -9
- package/dist/config/errors.d.ts +2 -1
- package/dist/config/errors.d.ts.map +1 -1
- package/dist/config/errors.js +4 -3
- package/dist/config/errors.js.map +1 -1
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +5 -3
- package/dist/config/load.js.map +1 -1
- package/dist/config/schema.d.ts +4 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +13 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/domain/artifact.d.ts +3 -3
- package/dist/domain/artifact.d.ts.map +1 -1
- package/dist/domain/artifact.js +1 -1
- package/dist/domain/artifact.js.map +1 -1
- package/dist/domain/evidence.d.ts +18 -14
- package/dist/domain/evidence.d.ts.map +1 -1
- package/dist/domain/evidence.js +8 -3
- package/dist/domain/evidence.js.map +1 -1
- package/dist/domain/operation.d.ts +15 -14
- package/dist/domain/operation.d.ts.map +1 -1
- package/dist/domain/operation.js +117 -1
- package/dist/domain/operation.js.map +1 -1
- package/dist/domain/release.d.ts +84 -9
- package/dist/domain/release.d.ts.map +1 -1
- package/dist/domain/release.js +76 -5
- package/dist/domain/release.js.map +1 -1
- package/dist/domain/remote-state.d.ts +21 -16
- package/dist/domain/remote-state.d.ts.map +1 -1
- package/dist/domain/remote-state.js +14 -8
- package/dist/domain/remote-state.js.map +1 -1
- package/dist/domain/status.d.ts +4 -4
- package/dist/domain/status.d.ts.map +1 -1
- package/dist/domain/status.js +3 -2
- package/dist/domain/status.js.map +1 -1
- package/dist/domain/target.d.ts +7 -7
- package/dist/domain/target.d.ts.map +1 -1
- package/dist/domain/target.js +1 -1
- package/dist/domain/target.js.map +1 -1
- package/dist/host/host.d.ts +1 -0
- package/dist/host/host.d.ts.map +1 -1
- package/dist/host/host.js +2 -1
- package/dist/host/host.js.map +1 -1
- package/dist/host/http-live.d.ts.map +1 -1
- package/dist/host/http-live.js +7 -3
- package/dist/host/http-live.js.map +1 -1
- package/dist/host/http.d.ts +4 -1
- package/dist/host/http.d.ts.map +1 -1
- package/dist/host/http.js +5 -2
- package/dist/host/http.js.map +1 -1
- package/dist/host/platform.d.ts.map +1 -1
- package/dist/host/platform.js +2 -2
- package/dist/host/platform.js.map +1 -1
- package/dist/host/test.d.ts +1 -0
- package/dist/host/test.d.ts.map +1 -1
- package/dist/host/test.js +67 -7
- package/dist/host/test.js.map +1 -1
- package/dist/internal/workspace-path.d.ts +16 -0
- package/dist/internal/workspace-path.d.ts.map +1 -0
- package/dist/internal/workspace-path.js +33 -0
- package/dist/internal/workspace-path.js.map +1 -0
- package/dist/planner/artifact-inventory.d.ts.map +1 -1
- package/dist/planner/artifact-inventory.js +28 -9
- package/dist/planner/artifact-inventory.js.map +1 -1
- package/dist/planner/create-release-plan.d.ts +1 -1
- package/dist/planner/errors.d.ts +12 -6
- package/dist/planner/errors.d.ts.map +1 -1
- package/dist/planner/errors.js +20 -12
- package/dist/planner/errors.js.map +1 -1
- package/dist/planner/evidence-recorder.d.ts.map +1 -1
- package/dist/planner/evidence-recorder.js +32 -10
- package/dist/planner/evidence-recorder.js.map +1 -1
- package/dist/planner/executor.d.ts +4 -4
- package/dist/planner/executor.d.ts.map +1 -1
- package/dist/planner/executor.js +36 -4
- package/dist/planner/executor.js.map +1 -1
- package/dist/planner/normalize-release.d.ts +11 -2
- package/dist/planner/normalize-release.d.ts.map +1 -1
- package/dist/planner/normalize-release.js +98 -19
- package/dist/planner/normalize-release.js.map +1 -1
- package/dist/planner/reconcile.d.ts +1 -1
- package/dist/planner/reconcile.d.ts.map +1 -1
- package/dist/planner/reconcile.js +75 -92
- package/dist/planner/reconcile.js.map +1 -1
- package/dist/planner/release-eligibility.d.ts +20 -14
- package/dist/planner/release-eligibility.d.ts.map +1 -1
- package/dist/planner/release-eligibility.js +431 -25
- package/dist/planner/release-eligibility.js.map +1 -1
- package/dist/planner/render-plan.d.ts +10 -0
- package/dist/planner/render-plan.d.ts.map +1 -1
- package/dist/planner/render-plan.js +159 -0
- package/dist/planner/render-plan.js.map +1 -1
- package/dist/planner/status.d.ts +1 -1
- package/dist/planner/status.d.ts.map +1 -1
- package/dist/planner/status.js +8 -2
- package/dist/planner/status.js.map +1 -1
- package/dist/targets/adapter-helpers.d.ts +20 -2
- package/dist/targets/adapter-helpers.d.ts.map +1 -1
- package/dist/targets/adapter-helpers.js +32 -1
- package/dist/targets/adapter-helpers.js.map +1 -1
- package/dist/targets/github-release.d.ts +25 -0
- package/dist/targets/github-release.d.ts.map +1 -0
- package/dist/targets/github-release.js +82 -0
- package/dist/targets/github-release.js.map +1 -0
- package/dist/targets/github.d.ts +2 -2
- package/dist/targets/github.d.ts.map +1 -1
- package/dist/targets/github.js +28 -66
- package/dist/targets/github.js.map +1 -1
- package/dist/targets/homebrew.d.ts +2 -2
- package/dist/targets/homebrew.d.ts.map +1 -1
- package/dist/targets/homebrew.js +15 -31
- package/dist/targets/homebrew.js.map +1 -1
- package/dist/targets/scoop.d.ts +2 -2
- package/dist/targets/scoop.d.ts.map +1 -1
- package/dist/targets/scoop.js +13 -28
- package/dist/targets/scoop.js.map +1 -1
- package/dist/workflows/config.d.ts +191 -18
- package/dist/workflows/config.d.ts.map +1 -1
- package/dist/workflows/config.js +339 -61
- package/dist/workflows/config.js.map +1 -1
- package/dist/workflows/diagnostics.d.ts +62 -0
- package/dist/workflows/diagnostics.d.ts.map +1 -0
- package/dist/workflows/diagnostics.js +536 -0
- package/dist/workflows/diagnostics.js.map +1 -0
- package/dist/workflows/evidence.d.ts +8 -3
- package/dist/workflows/evidence.d.ts.map +1 -1
- package/dist/workflows/evidence.js +9 -0
- package/dist/workflows/evidence.js.map +1 -1
- package/dist/workflows/index.d.ts +7 -0
- package/dist/workflows/index.d.ts.map +1 -0
- package/dist/workflows/index.js +6 -0
- package/dist/workflows/index.js.map +1 -0
- package/dist/workflows/init.d.ts +84 -0
- package/dist/workflows/init.d.ts.map +1 -0
- package/dist/workflows/init.js +451 -0
- package/dist/workflows/init.js.map +1 -0
- package/dist/workflows/live.d.ts +2 -0
- package/dist/workflows/live.d.ts.map +1 -1
- package/dist/workflows/live.js +2 -0
- package/dist/workflows/live.js.map +1 -1
- package/dist/workflows/options.d.ts +30 -0
- package/dist/workflows/options.d.ts.map +1 -0
- package/dist/workflows/options.js +16 -0
- package/dist/workflows/options.js.map +1 -0
- package/examples/README.md +16 -12
- package/examples/github-release/release.config.json +1 -0
- package/examples/homebrew-tap/release.config.json +1 -0
- package/examples/multi-target/release.config.json +5 -1
- package/examples/non-strict-skips/release.config.json +1 -0
- package/examples/npm-first-publish/release.config.json +1 -0
- package/examples/npm-only/release.config.json +5 -1
- package/examples/pypi-registry/release.config.json +1 -0
- package/examples/scoop-bucket/release.config.json +1 -0
- package/package.json +37 -26
- package/templates/README.md +59 -0
- package/templates/github-actions/plan-and-approved-execute.yml +58 -0
- package/templates/github-actions/plan-only.yml +33 -0
- package/templates/github-actions/trusted-publishing.yml +61 -0
- package/templates/multi-target-homebrew/release.config.json +70 -0
- package/templates/multi-target-scoop/release.config.json +72 -0
- package/templates/npm-github/release.config.json +50 -0
- package/templates/npm-only/release.config.json +39 -0
- package/dist/cli/command.d.ts +0 -4
- package/dist/cli/command.d.ts.map +0 -1
- package/dist/cli/command.js +0 -173
- package/dist/cli/command.js.map +0 -1
- package/dist/cli/main.d.ts +0 -3
- package/dist/cli/main.d.ts.map +0 -1
- package/dist/cli/main.js +0 -9
- package/dist/cli/main.js.map +0 -1
- package/dist/runtime/bun.d.ts +0 -9
- package/dist/runtime/bun.d.ts.map +0 -1
- package/dist/runtime/bun.js +0 -10
- package/dist/runtime/bun.js.map +0 -1
- package/dist/version.d.ts +0 -2
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -2
- package/dist/version.js.map +0 -1
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { CommandSpec, HttpEnvHeader, HttpHeader, HttpRequestSpec } from "../domain/operation.js";
|
|
2
|
+
export const githubAuthEnvNames = (target) => target.tokenEnv === undefined ? [] : [target.tokenEnv];
|
|
3
|
+
export const githubGhCommand = (target, args, includeAuth) => CommandSpec.make({
|
|
4
|
+
executable: "gh",
|
|
5
|
+
args: [...args],
|
|
6
|
+
requiredEnv: includeAuth ? githubAuthEnvNames(target) : [],
|
|
7
|
+
redactedEnv: includeAuth ? githubAuthEnvNames(target) : []
|
|
8
|
+
});
|
|
9
|
+
export const githubTargetArtifacts = (target, context) => context.artifacts.filter((artifact) => artifact.consumers.includes(target.id));
|
|
10
|
+
export const githubReleaseAssetName = (pathName) => {
|
|
11
|
+
const parts = pathName.replaceAll("\\", "/").split("/");
|
|
12
|
+
return parts[parts.length - 1] ?? pathName;
|
|
13
|
+
};
|
|
14
|
+
export const githubTargetArtifactAssetNames = (target, context) => githubTargetArtifacts(target, context).map((artifact) => githubReleaseAssetName(artifact.path));
|
|
15
|
+
export const githubReleaseTag = (context) => context.identity.tag ?? context.identity.version;
|
|
16
|
+
export const githubReleaseTitle = (context) => `${context.identity.name} ${context.identity.version}`;
|
|
17
|
+
export const githubReleaseCreateArgs = (target, context) => {
|
|
18
|
+
const args = [
|
|
19
|
+
"release",
|
|
20
|
+
"create",
|
|
21
|
+
githubReleaseTag(context),
|
|
22
|
+
"--repo",
|
|
23
|
+
target.repository,
|
|
24
|
+
"--title",
|
|
25
|
+
githubReleaseTitle(context)
|
|
26
|
+
];
|
|
27
|
+
if (target.draft === true) {
|
|
28
|
+
args.push("--draft");
|
|
29
|
+
}
|
|
30
|
+
if (target.prerelease === true) {
|
|
31
|
+
args.push("--prerelease");
|
|
32
|
+
}
|
|
33
|
+
if (context.identity.notes !== undefined) {
|
|
34
|
+
args.push("--notes", context.identity.notes);
|
|
35
|
+
}
|
|
36
|
+
for (const artifact of githubTargetArtifacts(target, context)) {
|
|
37
|
+
args.push(artifact.path);
|
|
38
|
+
}
|
|
39
|
+
return args;
|
|
40
|
+
};
|
|
41
|
+
export const githubReleaseApiUrl = (target, tag) => `https://api.github.com/repos/${target.repository}/releases/tags/${encodeURIComponent(tag)}`;
|
|
42
|
+
export const githubApiHeaders = () => [
|
|
43
|
+
HttpHeader.make({ name: "Accept", value: "application/vnd.github+json" }),
|
|
44
|
+
HttpHeader.make({ name: "X-GitHub-Api-Version", value: "2022-11-28" })
|
|
45
|
+
];
|
|
46
|
+
export const githubApiEnvHeaders = (target) => target.tokenEnv === undefined
|
|
47
|
+
? []
|
|
48
|
+
: [
|
|
49
|
+
HttpEnvHeader.make({
|
|
50
|
+
name: "Authorization",
|
|
51
|
+
valueEnv: target.tokenEnv,
|
|
52
|
+
prefix: "Bearer "
|
|
53
|
+
})
|
|
54
|
+
];
|
|
55
|
+
export const githubApiGetRequestSpec = (target, url) => HttpRequestSpec.make({
|
|
56
|
+
method: "GET",
|
|
57
|
+
url,
|
|
58
|
+
headers: githubApiHeaders(),
|
|
59
|
+
envHeaders: githubApiEnvHeaders(target),
|
|
60
|
+
requiredEnv: githubAuthEnvNames(target),
|
|
61
|
+
redactedEnv: githubAuthEnvNames(target)
|
|
62
|
+
});
|
|
63
|
+
export const githubReleaseRequestSpec = (target, tag) => githubApiGetRequestSpec(target, githubReleaseApiUrl(target, tag));
|
|
64
|
+
export const githubReleaseCreateCommand = (target, context) => githubGhCommand(target, githubReleaseCreateArgs(target, context), true);
|
|
65
|
+
export const githubReleaseViewCommand = (target, context) => githubGhCommand(target, [
|
|
66
|
+
"release",
|
|
67
|
+
"view",
|
|
68
|
+
githubReleaseTag(context),
|
|
69
|
+
"--repo",
|
|
70
|
+
target.repository,
|
|
71
|
+
"--json",
|
|
72
|
+
"tagName,name,isDraft,isPrerelease,assets"
|
|
73
|
+
], true);
|
|
74
|
+
export const githubReleasePublishDraftCommand = (target, context) => githubGhCommand(target, [
|
|
75
|
+
"release",
|
|
76
|
+
"edit",
|
|
77
|
+
githubReleaseTag(context),
|
|
78
|
+
"--repo",
|
|
79
|
+
target.repository,
|
|
80
|
+
"--draft=false"
|
|
81
|
+
], true);
|
|
82
|
+
//# sourceMappingURL=github-release.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-release.js","sourceRoot":"","sources":["../../src/targets/github-release.ts"],"names":[],"mappings":"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"}
|
package/dist/targets/github.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
|
-
import { PublishCommandOperation, ValidateCommandOperation, VerifyHttpOperation } from "../domain/operation.js";
|
|
2
|
+
import { PublishCommandOperation, ValidateCommandOperation, VerifyHttpOperation, VerifyRemoteOperation } from "../domain/operation.js";
|
|
3
3
|
import { ReleaseModel } from "../domain/release.js";
|
|
4
4
|
import { GitHubReleaseTarget, TargetCapabilities } from "../domain/target.js";
|
|
5
5
|
import { PlanConstructionError } from "../planner/errors.js";
|
|
6
6
|
import { GitHubTargetAdapter } from "./adapter.js";
|
|
7
7
|
export type * from "../types/effect-internal.js";
|
|
8
8
|
export declare const githubTargetCapabilities: (target: GitHubReleaseTarget) => TargetCapabilities;
|
|
9
|
-
export declare const planGitHubOperations: (target: GitHubReleaseTarget, model: ReleaseModel) => Effect.Effect<(import("../domain/operation.js").RenderFileOperation | ValidateCommandOperation | import("../domain/operation.js").ValidationNoteOperation | PublishCommandOperation |
|
|
9
|
+
export declare const planGitHubOperations: (target: GitHubReleaseTarget, model: ReleaseModel) => Effect.Effect<(import("../domain/operation.js").RenderFileOperation | ValidateCommandOperation | import("../domain/operation.js").ValidationNoteOperation | PublishCommandOperation | VerifyRemoteOperation | VerifyHttpOperation)[], PlanConstructionError, never>;
|
|
10
10
|
export declare const GitHubAdapter: GitHubTargetAdapter;
|
|
11
11
|
//# sourceMappingURL=github.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/targets/github.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/targets/github.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAOL,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAGnB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAclD,mBAAmB,6BAA6B,CAAA;AAKhD,eAAO,MAAM,wBAAwB,GAAI,QAAQ,mBAAmB,KAAG,kBACN,CAAA;AA6FjE,eAAO,MAAM,oBAAoB,2TAoD/B,CAAA;AAEF,eAAO,MAAM,aAAa,EAAE,mBAI3B,CAAA"}
|
package/dist/targets/github.js
CHANGED
|
@@ -1,79 +1,40 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
|
-
import {
|
|
2
|
+
import { executeGate, HttpJsonArrayObjectFieldEqualsCheck, HttpJsonEqualsCheck, irreversibleGate, noApprovalGate, PublishCommandOperation, ValidateCommandOperation, VerifyHttpOperation, VerifyRemoteOperation } from "../domain/operation.js";
|
|
3
3
|
import { PlanConstructionError } from "../planner/errors.js";
|
|
4
4
|
import { rejectNoDryRunInStrictMode, targetCapabilitiesFor, validationNoteOperation } from "./adapter-helpers.js";
|
|
5
|
-
|
|
6
|
-
const ghCommand = (target, args, includeAuth) => CommandSpec.make({
|
|
7
|
-
executable: "gh",
|
|
8
|
-
args: [...args],
|
|
9
|
-
requiredEnv: includeAuth ? envNames(target) : [],
|
|
10
|
-
redactedEnv: includeAuth ? envNames(target) : []
|
|
11
|
-
});
|
|
5
|
+
import { githubGhCommand, githubReleaseAssetName, githubReleaseCreateCommand, githubReleaseRequestSpec, githubReleaseTag, githubReleaseTitle, githubReleaseViewCommand, githubTargetArtifacts } from "./github-release.js";
|
|
12
6
|
const githubValidationStrategy = (target) => target.dryRunSupport === "none" ? "skipped" : "simulated-plan";
|
|
13
7
|
export const githubTargetCapabilities = (target) => targetCapabilitiesFor(target, githubValidationStrategy(target));
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
};
|
|
19
|
-
const githubReleaseTag = (model) => model.identity.tag ?? model.identity.version;
|
|
20
|
-
const githubReleaseTitle = (model) => `${model.identity.name} ${model.identity.version}`;
|
|
21
|
-
const releaseArgs = (target, model) => {
|
|
22
|
-
const args = [
|
|
23
|
-
"release",
|
|
24
|
-
"create",
|
|
25
|
-
githubReleaseTag(model),
|
|
26
|
-
"--repo",
|
|
27
|
-
target.repository,
|
|
28
|
-
"--title",
|
|
29
|
-
githubReleaseTitle(model)
|
|
30
|
-
];
|
|
31
|
-
if (target.draft === true) {
|
|
32
|
-
args.push("--draft");
|
|
33
|
-
}
|
|
34
|
-
if (target.prerelease === true) {
|
|
35
|
-
args.push("--prerelease");
|
|
36
|
-
}
|
|
37
|
-
if (model.identity.notes !== undefined) {
|
|
38
|
-
args.push("--notes", model.identity.notes);
|
|
39
|
-
}
|
|
40
|
-
for (const artifact of targetArtifacts(target, model)) {
|
|
41
|
-
args.push(artifact.path);
|
|
8
|
+
const rejectDirectoryAssets = Effect.fn("github.rejectDirectoryAssets")(function* (target, model) {
|
|
9
|
+
const directoryAsset = githubTargetArtifacts(target, model).find((artifact) => artifact.format === "directory");
|
|
10
|
+
if (directoryAsset === undefined) {
|
|
11
|
+
return;
|
|
42
12
|
}
|
|
43
|
-
return
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
HttpHeader.make({ name: "Accept", value: "application/vnd.github+json" }),
|
|
48
|
-
HttpHeader.make({ name: "X-GitHub-Api-Version", value: "2022-11-28" })
|
|
49
|
-
];
|
|
50
|
-
const githubApiEnvHeaders = (target) => target.tokenEnv === undefined
|
|
51
|
-
? []
|
|
52
|
-
: [
|
|
53
|
-
HttpEnvHeader.make({
|
|
54
|
-
name: "Authorization",
|
|
55
|
-
valueEnv: target.tokenEnv,
|
|
56
|
-
prefix: "Bearer "
|
|
57
|
-
})
|
|
58
|
-
];
|
|
59
|
-
const githubReleaseRequestSpec = (target, tag) => HttpRequestSpec.make({
|
|
60
|
-
method: "GET",
|
|
61
|
-
url: githubReleaseApiUrl(target, tag),
|
|
62
|
-
headers: githubApiHeaders(),
|
|
63
|
-
envHeaders: githubApiEnvHeaders(target),
|
|
64
|
-
requiredEnv: envNames(target),
|
|
65
|
-
redactedEnv: envNames(target)
|
|
13
|
+
return yield* Effect.fail(PlanConstructionError.make({
|
|
14
|
+
targetId: target.id,
|
|
15
|
+
reason: "GitHub release assets must be file-like, not directories."
|
|
16
|
+
}));
|
|
66
17
|
});
|
|
67
|
-
const githubReleaseCreateCommand = (target, model) => ghCommand(target, releaseArgs(target, model), true);
|
|
68
18
|
const githubVerificationOperations = (target, model) => {
|
|
19
|
+
if (target.draft === true) {
|
|
20
|
+
return [
|
|
21
|
+
VerifyRemoteOperation.make({
|
|
22
|
+
id: `${target.id}:github-release-verify-gh`,
|
|
23
|
+
targetId: target.id,
|
|
24
|
+
description: "Verify the GitHub draft release through the GitHub CLI.",
|
|
25
|
+
risk: "read-only",
|
|
26
|
+
gate: noApprovalGate("GitHub CLI release verification is read-only."),
|
|
27
|
+
command: githubReleaseViewCommand(target, model)
|
|
28
|
+
})
|
|
29
|
+
];
|
|
30
|
+
}
|
|
69
31
|
const tag = githubReleaseTag(model);
|
|
70
32
|
const title = githubReleaseTitle(model);
|
|
71
|
-
const isDraft = target.draft === true;
|
|
72
33
|
const isPrerelease = target.prerelease === true;
|
|
73
|
-
const artifactChecks =
|
|
34
|
+
const artifactChecks = githubTargetArtifacts(target, model).map((artifact) => HttpJsonArrayObjectFieldEqualsCheck.make({
|
|
74
35
|
path: ["assets"],
|
|
75
36
|
field: "name",
|
|
76
|
-
expected:
|
|
37
|
+
expected: githubReleaseAssetName(artifact.path)
|
|
77
38
|
}));
|
|
78
39
|
return [
|
|
79
40
|
VerifyHttpOperation.make({
|
|
@@ -95,7 +56,7 @@ const githubVerificationOperations = (target, model) => {
|
|
|
95
56
|
}),
|
|
96
57
|
HttpJsonEqualsCheck.make({
|
|
97
58
|
path: ["draft"],
|
|
98
|
-
expected:
|
|
59
|
+
expected: false
|
|
99
60
|
}),
|
|
100
61
|
HttpJsonEqualsCheck.make({
|
|
101
62
|
path: ["prerelease"],
|
|
@@ -124,6 +85,7 @@ export const planGitHubOperations = Effect.fn("planGitHubOperations")(function*
|
|
|
124
85
|
}));
|
|
125
86
|
}
|
|
126
87
|
yield* rejectNoDryRunInStrictMode(target, model, "GitHub release target declares no dry-run support in strict mode.");
|
|
88
|
+
yield* rejectDirectoryAssets(target, model);
|
|
127
89
|
const publishRisk = target.mutability === "immutable" ? "irreversible" : "externally-visible";
|
|
128
90
|
const publishGate = publishRisk === "irreversible"
|
|
129
91
|
? irreversibleGate("Creating this GitHub release is externally visible and configured as immutable.")
|
|
@@ -135,7 +97,7 @@ export const planGitHubOperations = Effect.fn("planGitHubOperations")(function*
|
|
|
135
97
|
description: "Check GitHub CLI availability.",
|
|
136
98
|
risk: "read-only",
|
|
137
99
|
gate: noApprovalGate("CLI availability validation is read-only."),
|
|
138
|
-
command:
|
|
100
|
+
command: githubGhCommand(target, ["--version"], false)
|
|
139
101
|
}),
|
|
140
102
|
ValidateCommandOperation.make({
|
|
141
103
|
id: `${target.id}:gh-auth-status`,
|
|
@@ -143,7 +105,7 @@ export const planGitHubOperations = Effect.fn("planGitHubOperations")(function*
|
|
|
143
105
|
description: "Validate GitHub CLI authentication.",
|
|
144
106
|
risk: "read-only",
|
|
145
107
|
gate: noApprovalGate("gh auth status checks authentication without publishing."),
|
|
146
|
-
command:
|
|
108
|
+
command: githubGhCommand(target, ["auth", "status"], true)
|
|
147
109
|
}),
|
|
148
110
|
githubDryRunOperation(target, dryRunSupport),
|
|
149
111
|
PublishCommandOperation.make({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/targets/github.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EACL,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/targets/github.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
|
-
import {
|
|
2
|
+
import { RenderFileOperation, ValidateCommandOperation } from "../domain/operation.js";
|
|
3
3
|
import { ReleaseModel } from "../domain/release.js";
|
|
4
4
|
import { HomebrewTapTarget, TargetCapabilities } from "../domain/target.js";
|
|
5
5
|
import { PlanConstructionError } from "../planner/errors.js";
|
|
6
6
|
import { HomebrewTargetAdapter } from "./adapter.js";
|
|
7
7
|
export type * from "../types/effect-internal.js";
|
|
8
8
|
export declare const homebrewTargetCapabilities: (target: HomebrewTapTarget) => TargetCapabilities;
|
|
9
|
-
export declare const planHomebrewOperations: (target: HomebrewTapTarget, model: ReleaseModel) => Effect.Effect<(RenderFileOperation | ValidateCommandOperation | import("../domain/operation.js").ValidationNoteOperation | PublishCommandOperation | import("../domain/operation.js").VerifyRemoteOperation | import("../domain/operation.js").VerifyHttpOperation)[], PlanConstructionError, never>;
|
|
9
|
+
export declare const planHomebrewOperations: (target: HomebrewTapTarget, model: ReleaseModel) => Effect.Effect<(RenderFileOperation | ValidateCommandOperation | import("../domain/operation.js").ValidationNoteOperation | import("../domain/operation.js").PublishCommandOperation | import("../domain/operation.js").VerifyRemoteOperation | import("../domain/operation.js").VerifyHttpOperation)[], PlanConstructionError, never>;
|
|
10
10
|
export declare const HomebrewAdapter: HomebrewTargetAdapter;
|
|
11
11
|
//# sourceMappingURL=homebrew.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homebrew.d.ts","sourceRoot":"","sources":["../../src/targets/homebrew.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"homebrew.d.ts","sourceRoot":"","sources":["../../src/targets/homebrew.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAIL,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAcpD,mBAAmB,6BAA6B,CAAA;AAUhD,eAAO,MAAM,0BAA0B,GAAI,QAAQ,iBAAiB,KAAG,kBACW,CAAA;AAqElF,eAAO,MAAM,sBAAsB,2XA+CjC,CAAA;AAEF,eAAO,MAAM,eAAe,EAAE,qBAI7B,CAAA"}
|
package/dist/targets/homebrew.js
CHANGED
|
@@ -1,26 +1,14 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { findRequiredArtifact, requireSha256FileArtifact, rejectNoDryRunInStrictMode, targetCapabilitiesFor, validationNoteOperation, validationStrategyForDryRun } from "./adapter-helpers.js";
|
|
5
|
-
const command = (executable, args) => CommandSpec.make({
|
|
6
|
-
executable,
|
|
7
|
-
args: [...args],
|
|
8
|
-
requiredEnv: [],
|
|
9
|
-
redactedEnv: []
|
|
10
|
-
});
|
|
2
|
+
import { executeGate, noApprovalGate, RenderFileOperation, ValidateCommandOperation } from "../domain/operation.js";
|
|
3
|
+
import { catalogGitPushOperation, catalogPathBaseName, findRequiredArtifact, noAuthCommand, requireSha256FileArtifact, rejectNoDryRunInStrictMode, rejectUnsupportedCatalogTokenEnv, targetCapabilitiesFor, validationNoteOperation, validationStrategyForDryRun } from "./adapter-helpers.js";
|
|
11
4
|
const rejectUnsupportedTokenEnv = Effect.fn("rejectUnsupportedHomebrewTokenEnv")(function* (target) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
5
|
+
return yield* rejectUnsupportedCatalogTokenEnv({
|
|
6
|
+
targetId: target.id,
|
|
7
|
+
targetLabel: "Homebrew tap",
|
|
8
|
+
tokenEnv: target.tokenEnv
|
|
9
|
+
});
|
|
18
10
|
});
|
|
19
11
|
export const homebrewTargetCapabilities = (target) => targetCapabilitiesFor(target, validationStrategyForDryRun(target.dryRunSupport));
|
|
20
|
-
const pathBaseName = (path) => {
|
|
21
|
-
const parts = path.replaceAll("\\", "/").split("/");
|
|
22
|
-
return parts[parts.length - 1] ?? path;
|
|
23
|
-
};
|
|
24
12
|
const rubyString = (value) => JSON.stringify(value);
|
|
25
13
|
const formulaClassName = (formulaName) => {
|
|
26
14
|
const parts = formulaName.split(/[^A-Za-z0-9]+/).filter((part) => part.length > 0);
|
|
@@ -63,7 +51,7 @@ const dryRunOperation = (target) => {
|
|
|
63
51
|
description: "Validate generated Homebrew formula with brew audit.",
|
|
64
52
|
risk: "read-only",
|
|
65
53
|
gate: noApprovalGate("brew audit validates the generated formula without publishing."),
|
|
66
|
-
command:
|
|
54
|
+
command: noAuthCommand("brew", ["audit", "--strict", "--formula", target.formulaPath])
|
|
67
55
|
})
|
|
68
56
|
: validationNoteOperation({
|
|
69
57
|
id: `${target.id}:brew-audit`,
|
|
@@ -79,16 +67,11 @@ export const planHomebrewOperations = Effect.fn("planHomebrewOperations")(functi
|
|
|
79
67
|
yield* rejectUnsupportedTokenEnv(target);
|
|
80
68
|
yield* rejectNoDryRunInStrictMode(target, model, "Homebrew tap target declares no dry-run support in strict mode.");
|
|
81
69
|
const formula = yield* renderFormula(target, model);
|
|
82
|
-
const publishRisk = target.mutability === "immutable" ? "irreversible" : "externally-visible";
|
|
83
|
-
const publishGate = publishRisk === "irreversible"
|
|
84
|
-
? irreversibleGate("Pushing a Homebrew tap update is configured as irreversible.")
|
|
85
|
-
: executeGate("Pushing a Homebrew tap update is externally visible.");
|
|
86
|
-
const tapDirectory = target.tapDirectory ?? ".";
|
|
87
70
|
const operations = [
|
|
88
71
|
RenderFileOperation.make({
|
|
89
72
|
id: `${target.id}:homebrew-render-formula`,
|
|
90
73
|
targetId: target.id,
|
|
91
|
-
description: `Render Homebrew formula ${
|
|
74
|
+
description: `Render Homebrew formula ${catalogPathBaseName(target.formulaPath)}.`,
|
|
92
75
|
risk: "writes-local",
|
|
93
76
|
gate: executeGate("Rendering a Homebrew formula writes a local generated file."),
|
|
94
77
|
path: target.formulaPath,
|
|
@@ -102,16 +85,17 @@ export const planHomebrewOperations = Effect.fn("planHomebrewOperations")(functi
|
|
|
102
85
|
description: "Check Homebrew CLI availability.",
|
|
103
86
|
risk: "read-only",
|
|
104
87
|
gate: noApprovalGate("CLI availability validation is read-only."),
|
|
105
|
-
command:
|
|
88
|
+
command: noAuthCommand("brew", ["--version"])
|
|
106
89
|
}));
|
|
107
90
|
}
|
|
108
|
-
operations.push(dryRunOperation(target),
|
|
91
|
+
operations.push(dryRunOperation(target), catalogGitPushOperation({
|
|
109
92
|
id: `${target.id}:homebrew-push`,
|
|
110
93
|
targetId: target.id,
|
|
111
94
|
description: `Push Homebrew tap update for ${model.identity.name}@${model.identity.version}.`,
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
95
|
+
mutability: target.mutability,
|
|
96
|
+
directory: target.tapDirectory,
|
|
97
|
+
irreversibleReason: "Pushing a Homebrew tap update is configured as irreversible.",
|
|
98
|
+
externallyVisibleReason: "Pushing a Homebrew tap update is externally visible."
|
|
115
99
|
}));
|
|
116
100
|
return operations;
|
|
117
101
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homebrew.js","sourceRoot":"","sources":["../../src/targets/homebrew.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EACL,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"homebrew.js","sourceRoot":"","sources":["../../src/targets/homebrew.ts"],"names":[],"mappings":"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"}
|
package/dist/targets/scoop.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
|
-
import {
|
|
2
|
+
import { RenderFileOperation } from "../domain/operation.js";
|
|
3
3
|
import { ReleaseModel } from "../domain/release.js";
|
|
4
4
|
import { ScoopBucketTarget, TargetCapabilities } from "../domain/target.js";
|
|
5
5
|
import { PlanConstructionError } from "../planner/errors.js";
|
|
6
6
|
import { ScoopTargetAdapter } from "./adapter.js";
|
|
7
7
|
export type * from "../types/effect-internal.js";
|
|
8
8
|
export declare const scoopTargetCapabilities: (target: ScoopBucketTarget) => TargetCapabilities;
|
|
9
|
-
export declare const planScoopOperations: (target: ScoopBucketTarget, model: ReleaseModel) => Effect.Effect<(RenderFileOperation | import("../domain/operation.js").ValidateCommandOperation | import("../domain/operation.js").ValidationNoteOperation | PublishCommandOperation | import("../domain/operation.js").VerifyRemoteOperation | import("../domain/operation.js").VerifyHttpOperation)[], PlanConstructionError, never>;
|
|
9
|
+
export declare const planScoopOperations: (target: ScoopBucketTarget, model: ReleaseModel) => Effect.Effect<(RenderFileOperation | import("../domain/operation.js").ValidateCommandOperation | import("../domain/operation.js").ValidationNoteOperation | import("../domain/operation.js").PublishCommandOperation | import("../domain/operation.js").VerifyRemoteOperation | import("../domain/operation.js").VerifyHttpOperation)[], PlanConstructionError, never>;
|
|
10
10
|
export declare const ScoopAdapter: ScoopTargetAdapter;
|
|
11
11
|
//# sourceMappingURL=scoop.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scoop.d.ts","sourceRoot":"","sources":["../../src/targets/scoop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"scoop.d.ts","sourceRoot":"","sources":["../../src/targets/scoop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAGL,mBAAmB,EACpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAajD,mBAAmB,6BAA6B,CAAA;AAUhD,eAAO,MAAM,uBAAuB,GAAI,QAAQ,iBAAiB,KAAG,kBACc,CAAA;AAqDlF,eAAO,MAAM,mBAAmB,4ZAuC9B,CAAA;AAEF,eAAO,MAAM,YAAY,EAAE,kBAI1B,CAAA"}
|
package/dist/targets/scoop.js
CHANGED
|
@@ -1,26 +1,15 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
|
-
import {
|
|
2
|
+
import { executeGate, RenderFileOperation, } from "../domain/operation.js";
|
|
3
3
|
import { PlanConstructionError } from "../planner/errors.js";
|
|
4
|
-
import { findRequiredArtifact, requireSha256FileArtifact, rejectNoDryRunInStrictMode, targetCapabilitiesFor, validationNoteOperation, validationStrategyForDryRun } from "./adapter-helpers.js";
|
|
5
|
-
const command = (executable, args) => CommandSpec.make({
|
|
6
|
-
executable,
|
|
7
|
-
args: [...args],
|
|
8
|
-
requiredEnv: [],
|
|
9
|
-
redactedEnv: []
|
|
10
|
-
});
|
|
4
|
+
import { catalogGitPushOperation, catalogPathBaseName, findRequiredArtifact, requireSha256FileArtifact, rejectNoDryRunInStrictMode, rejectUnsupportedCatalogTokenEnv, targetCapabilitiesFor, validationNoteOperation, validationStrategyForDryRun } from "./adapter-helpers.js";
|
|
11
5
|
const rejectUnsupportedTokenEnv = Effect.fn("rejectUnsupportedScoopTokenEnv")(function* (target) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
6
|
+
return yield* rejectUnsupportedCatalogTokenEnv({
|
|
7
|
+
targetId: target.id,
|
|
8
|
+
targetLabel: "Scoop bucket",
|
|
9
|
+
tokenEnv: target.tokenEnv
|
|
10
|
+
});
|
|
18
11
|
});
|
|
19
12
|
export const scoopTargetCapabilities = (target) => targetCapabilitiesFor(target, validationStrategyForDryRun(target.dryRunSupport));
|
|
20
|
-
const pathBaseName = (path) => {
|
|
21
|
-
const parts = path.replaceAll("\\", "/").split("/");
|
|
22
|
-
return parts[parts.length - 1] ?? path;
|
|
23
|
-
};
|
|
24
13
|
const renderManifest = (target, model) => Effect.gen(function* () {
|
|
25
14
|
const artifact = yield* findRequiredArtifact(model, target.id, target.artifactId, `Scoop target references missing artifact ${target.artifactId}.`);
|
|
26
15
|
const validated = yield* requireSha256FileArtifact(artifact, {
|
|
@@ -59,29 +48,25 @@ export const planScoopOperations = Effect.fn("planScoopOperations")(function* (t
|
|
|
59
48
|
}
|
|
60
49
|
yield* rejectNoDryRunInStrictMode(target, model, "Scoop bucket target declares no dry-run support in strict mode.");
|
|
61
50
|
const manifest = yield* renderManifest(target, model);
|
|
62
|
-
const publishRisk = target.mutability === "immutable" ? "irreversible" : "externally-visible";
|
|
63
|
-
const publishGate = publishRisk === "irreversible"
|
|
64
|
-
? irreversibleGate("Pushing a Scoop bucket update is configured as irreversible.")
|
|
65
|
-
: executeGate("Pushing a Scoop bucket update is externally visible.");
|
|
66
|
-
const bucketDirectory = target.bucketDirectory ?? ".";
|
|
67
51
|
return [
|
|
68
52
|
RenderFileOperation.make({
|
|
69
53
|
id: `${target.id}:scoop-render-manifest`,
|
|
70
54
|
targetId: target.id,
|
|
71
|
-
description: `Render Scoop manifest ${
|
|
55
|
+
description: `Render Scoop manifest ${catalogPathBaseName(target.manifestPath)}.`,
|
|
72
56
|
risk: "writes-local",
|
|
73
57
|
gate: executeGate("Rendering a Scoop manifest writes a local generated file."),
|
|
74
58
|
path: target.manifestPath,
|
|
75
59
|
contents: manifest
|
|
76
60
|
}),
|
|
77
61
|
dryRunOperation(target, dryRunSupport),
|
|
78
|
-
|
|
62
|
+
catalogGitPushOperation({
|
|
79
63
|
id: `${target.id}:scoop-push`,
|
|
80
64
|
targetId: target.id,
|
|
81
65
|
description: `Push Scoop bucket update for ${model.identity.name}@${model.identity.version}.`,
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
66
|
+
mutability: target.mutability,
|
|
67
|
+
directory: target.bucketDirectory,
|
|
68
|
+
irreversibleReason: "Pushing a Scoop bucket update is configured as irreversible.",
|
|
69
|
+
externallyVisibleReason: "Pushing a Scoop bucket update is externally visible."
|
|
85
70
|
})
|
|
86
71
|
];
|
|
87
72
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scoop.js","sourceRoot":"","sources":["../../src/targets/scoop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EACL,WAAW,
|
|
1
|
+
{"version":3,"file":"scoop.js","sourceRoot":"","sources":["../../src/targets/scoop.ts"],"names":[],"mappings":"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"}
|