@tahminator/pipeline 1.0.95 → 1.0.96-beta.gd0b9c905
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 +13 -0
- package/dist/docker/client.js +2 -2
- package/dist/flux/client.js +6 -10
- package/dist/flux/format.js +5 -3
- package/dist/flux/render.js +8 -4
- package/dist/protobuf/backend/publisher/go.js +4 -4
- package/dist/protobuf/client.js +8 -4
- package/dist/pulumi/strategy/workspace.js +10 -10
- package/package.json +24 -28
package/README.md
CHANGED
|
@@ -30,6 +30,13 @@ bun run src/index.ts
|
|
|
30
30
|
> [!WARNING]
|
|
31
31
|
> This repository is iterating quickly & as such may have rough edges. I will always be happy to respond to & fix any issues anyone may have :)
|
|
32
32
|
|
|
33
|
+
The setup action's `INSTALL_BREW`, `INSTALL_PROTOC`, and
|
|
34
|
+
`INSTALL_PROTO_DEPENDENCIES` options use Homebrew preinstalled at
|
|
35
|
+
`/home/linuxbrew/.linuxbrew` on GitHub-hosted Ubuntu runners. Setup adds it to
|
|
36
|
+
the job's `PATH` and disables automatic updates, using the runner image's
|
|
37
|
+
Homebrew version rather than fetching the latest release. Runners without
|
|
38
|
+
Homebrew at that location are not supported by these options.
|
|
39
|
+
|
|
33
40
|
## CI script checks
|
|
34
41
|
|
|
35
42
|
Enable `LINT_CI` to typecheck, lint, and check formatting without a `test` script:
|
|
@@ -507,6 +514,12 @@ Language toolchains are installed and cached by the setup action, so jobs don't
|
|
|
507
514
|
RUST_COMPONENTS: "clippy, rustfmt"
|
|
508
515
|
```
|
|
509
516
|
|
|
517
|
+
Java version and distribution are configurable with `JAVA_VERSION` and `JAVA_DISTRIBUTION`. For built-in dependency caching, `JAVA_CACHE` selects `maven` (default), `gradle`, or `sbt`; set it to `""` to disable built-in caching. `JAVA_CACHE_DEPENDENCY_PATH` accepts newline-separated dependency files/globs for the generated key, and `JAVA_CACHE_PATH` overrides the cached directories. Empty paths keep setup-java's defaults.
|
|
518
|
+
|
|
519
|
+
For an explicit cache key, set both `JAVA_CACHE_KEY` and `JAVA_CACHE_PATH`. This uses `actions/cache` and disables setup-java's built-in caching to avoid duplicate restore/save operations. `JAVA_CACHE_RESTORE_KEYS` optionally supplies newline-separated fallback prefixes. `JAVA_CACHE_DEPENDENCY_PATH` is ignored in this mode; compute dependency hashes in `JAVA_CACHE_KEY` yourself. Both cache modes require `INSTALL_JAVA: "true"`.
|
|
520
|
+
|
|
521
|
+
With `INSTALL_PNPM: "true"`, set `PNPM_CACHE: "true"` to cache the pnpm store. `PNPM_CACHE_DEPENDENCY_PATH` accepts newline-separated lockfiles (default `pnpm-lock.yaml`), and `PNPM_PACKAGE_JSON_FILE` selects the package manifest (default `package.json`). Project dependencies must still be installed separately.
|
|
522
|
+
|
|
510
523
|
### `NPMClient`
|
|
511
524
|
|
|
512
525
|
Interface with NPM registry in order to publish packages to `npmjs.com`
|
package/dist/docker/client.js
CHANGED
|
@@ -75,8 +75,8 @@ export class DockerClient {
|
|
|
75
75
|
--allow network.host \
|
|
76
76
|
${tagFlags} \
|
|
77
77
|
.`;
|
|
78
|
-
console.log(shouldUpload
|
|
79
|
-
`Image build & successfully uploaded to ${this.username}/${dockerRepository}`
|
|
78
|
+
console.log(shouldUpload
|
|
79
|
+
? `Image build & successfully uploaded to ${this.username}/${dockerRepository}`
|
|
80
80
|
: "Image has been built (upload skipped.)");
|
|
81
81
|
}
|
|
82
82
|
async [Symbol.asyncDispose]() {
|
package/dist/flux/client.js
CHANGED
|
@@ -110,11 +110,11 @@ export class FluxClient {
|
|
|
110
110
|
head ? renderKustomization(root, head) : undefined,
|
|
111
111
|
]);
|
|
112
112
|
const buildError = headRender?.error;
|
|
113
|
-
const objects = buildError
|
|
114
|
-
[]
|
|
113
|
+
const objects = buildError
|
|
114
|
+
? []
|
|
115
115
|
: await diffObjects(baseRender?.objects ?? [], headRender?.objects ?? [], nextDiffDir);
|
|
116
|
-
const unchanged = buildError
|
|
117
|
-
buildError === baseRender?.error
|
|
116
|
+
const unchanged = buildError
|
|
117
|
+
? buildError === baseRender?.error
|
|
118
118
|
: objects.length === 0;
|
|
119
119
|
if (unchanged) {
|
|
120
120
|
return;
|
|
@@ -130,9 +130,7 @@ export class FluxClient {
|
|
|
130
130
|
name,
|
|
131
131
|
namespace,
|
|
132
132
|
path: current.path,
|
|
133
|
-
status: !base ? "added"
|
|
134
|
-
: !head ? "removed"
|
|
135
|
-
: "changed",
|
|
133
|
+
status: !base ? "added" : !head ? "removed" : "changed",
|
|
136
134
|
objects,
|
|
137
135
|
...(buildError ? { buildError } : {}),
|
|
138
136
|
additions: objects.reduce((sum, o) => sum + o.additions, 0),
|
|
@@ -178,9 +176,7 @@ async function diffObjects(baseObjects, headObjects, nextDir) {
|
|
|
178
176
|
namespace,
|
|
179
177
|
name,
|
|
180
178
|
...(file ? { file } : {}),
|
|
181
|
-
status: !base ? "added"
|
|
182
|
-
: !head ? "removed"
|
|
183
|
-
: "changed",
|
|
179
|
+
status: !base ? "added" : !head ? "removed" : "changed",
|
|
184
180
|
diff,
|
|
185
181
|
additions: lines.filter((line) => line.startsWith("+") && !line.startsWith("+++")).length,
|
|
186
182
|
deletions: lines.filter((line) => line.startsWith("-") && !line.startsWith("---")).length,
|
package/dist/flux/format.js
CHANGED
|
@@ -5,8 +5,8 @@ export function formatFluxDiff(result, { title = "Flux diff", description, artif
|
|
|
5
5
|
if (description) {
|
|
6
6
|
lines.push(description, "");
|
|
7
7
|
}
|
|
8
|
-
lines.push(result.changed.length === 0
|
|
9
|
-
`No Flux Kustomization renders differently against ${base}.`
|
|
8
|
+
lines.push(result.changed.length === 0
|
|
9
|
+
? `No Flux Kustomization renders differently against ${base}.`
|
|
10
10
|
: `${result.changed.length} Flux Kustomization(s) render differently against ${base}.`, "");
|
|
11
11
|
if (artifactUrl) {
|
|
12
12
|
lines.push(`> [!WARNING]`, `> The rendered diff is too long for a GitHub comment. [Download the full diff from the workflow run](${artifactUrl}).`, "");
|
|
@@ -40,7 +40,9 @@ export function label({ name, namespace, }) {
|
|
|
40
40
|
return namespace ? `${namespace}/${name}` : name;
|
|
41
41
|
}
|
|
42
42
|
function summary(change) {
|
|
43
|
-
const counts = change.buildError
|
|
43
|
+
const counts = change.buildError
|
|
44
|
+
? "build failed"
|
|
45
|
+
: `${change.objects.length} object(s), +${change.additions} −${change.deletions}`;
|
|
44
46
|
return `<code>${label(change)}</code> — <code>${change.path}</code> (${change.status}, ${counts})`;
|
|
45
47
|
}
|
|
46
48
|
function objectSummary(object) {
|
package/dist/flux/render.js
CHANGED
|
@@ -21,8 +21,12 @@ const NAME_HASH = /-[2456789bcdfghkmt]{10}$/;
|
|
|
21
21
|
* from their name so an edited ConfigMap/Secret pairs with its previous version.
|
|
22
22
|
*/
|
|
23
23
|
export function objectKey(object) {
|
|
24
|
-
const group = object.apiVersion.includes("/")
|
|
25
|
-
|
|
24
|
+
const group = object.apiVersion.includes("/")
|
|
25
|
+
? object.apiVersion.split("/")[0]
|
|
26
|
+
: "";
|
|
27
|
+
const name = object.generated
|
|
28
|
+
? object.name.replace(NAME_HASH, "")
|
|
29
|
+
: object.name;
|
|
26
30
|
return [group, object.kind, object.namespace, name].join("\0");
|
|
27
31
|
}
|
|
28
32
|
/**
|
|
@@ -56,8 +60,8 @@ export async function renderKustomization(root, kustomization) {
|
|
|
56
60
|
components: spec.components?.map((component) => relative(path.join(targetDir, component))),
|
|
57
61
|
images: spec.images,
|
|
58
62
|
patches: spec.patches,
|
|
59
|
-
labels: spec.commonMetadata?.labels
|
|
60
|
-
[{ pairs: spec.commonMetadata.labels, includeSelectors: false }]
|
|
63
|
+
labels: spec.commonMetadata?.labels
|
|
64
|
+
? [{ pairs: spec.commonMetadata.labels, includeSelectors: false }]
|
|
61
65
|
: undefined,
|
|
62
66
|
commonAnnotations: spec.commonMetadata?.annotations,
|
|
63
67
|
buildMetadata: ["originAnnotations"],
|
|
@@ -89,8 +89,8 @@ export class ArtifactKeeperGoPublisher {
|
|
|
89
89
|
}
|
|
90
90
|
for (const entry of entries) {
|
|
91
91
|
if (entry.isDirectory()) {
|
|
92
|
-
packages.push(...(await this.findPackageDirectories(path.join(directory, entry.name), relativeDirectory
|
|
93
|
-
`${relativeDirectory}/${entry.name}`
|
|
92
|
+
packages.push(...(await this.findPackageDirectories(path.join(directory, entry.name), relativeDirectory
|
|
93
|
+
? `${relativeDirectory}/${entry.name}`
|
|
94
94
|
: entry.name)));
|
|
95
95
|
}
|
|
96
96
|
}
|
|
@@ -103,8 +103,8 @@ export class ArtifactKeeperGoPublisher {
|
|
|
103
103
|
*/
|
|
104
104
|
const major = semver.major(version);
|
|
105
105
|
const pathMajor = modulePath.match(/\/v([0-9]+)$/)?.[1] ??
|
|
106
|
-
(modulePath.startsWith("gopkg.in/")
|
|
107
|
-
modulePath.match(/\.v([0-9]+)$/)?.[1]
|
|
106
|
+
(modulePath.startsWith("gopkg.in/")
|
|
107
|
+
? modulePath.match(/\.v([0-9]+)$/)?.[1]
|
|
108
108
|
: undefined);
|
|
109
109
|
if ((pathMajor &&
|
|
110
110
|
!modulePath.startsWith("gopkg.in/") &&
|
package/dist/protobuf/client.js
CHANGED
|
@@ -18,7 +18,9 @@ export class ProtobufCompilerClient {
|
|
|
18
18
|
await this.requireToolchains(targets);
|
|
19
19
|
const outputDirectoryPath = path.resolve(outputDirectory ??
|
|
20
20
|
(await mkdtemp(path.join(tmpdir(), "protobuf-compiler-"))));
|
|
21
|
-
const compilerBackend = backend
|
|
21
|
+
const compilerBackend = backend
|
|
22
|
+
? createProtobufCompilerBackendStrategy(backend)
|
|
23
|
+
: undefined;
|
|
22
24
|
await mkdir(outputDirectoryPath, { recursive: true });
|
|
23
25
|
await this.generateWithBuf({
|
|
24
26
|
bufToken,
|
|
@@ -83,8 +85,8 @@ export class ProtobufCompilerClient {
|
|
|
83
85
|
}))),
|
|
84
86
|
}));
|
|
85
87
|
try {
|
|
86
|
-
const command = bufToken
|
|
87
|
-
$.env({
|
|
88
|
+
const command = bufToken
|
|
89
|
+
? $.env({
|
|
88
90
|
...process.env,
|
|
89
91
|
BUF_TOKEN: bufToken,
|
|
90
92
|
}) `buf generate ${input} --template ${templatePath} ${pathFlag}`.cwd(outputDirectory)
|
|
@@ -116,7 +118,9 @@ export class ProtobufCompilerClient {
|
|
|
116
118
|
if (stats.isFile() && !resolvedLocation.endsWith(".proto")) {
|
|
117
119
|
throw new Error(`${protoFilesLocation} is not a .proto file.`);
|
|
118
120
|
}
|
|
119
|
-
const sourceDirectory = stats.isFile()
|
|
121
|
+
const sourceDirectory = stats.isFile()
|
|
122
|
+
? path.dirname(resolvedLocation)
|
|
123
|
+
: resolvedLocation;
|
|
120
124
|
const moduleDirectory = (await this.findBufModuleDirectory(sourceDirectory)) ?? sourceDirectory;
|
|
121
125
|
return {
|
|
122
126
|
input: moduleDirectory,
|
|
@@ -29,8 +29,8 @@ export class LocalWorkspacePulumiClientStrategy {
|
|
|
29
29
|
refresh: false,
|
|
30
30
|
diff,
|
|
31
31
|
});
|
|
32
|
-
const stdout = rewriteStdoutToDiffFriendly
|
|
33
|
-
this.rewritePulumiPreviewAsDiffFriendlyText(previewResult.stdout)
|
|
32
|
+
const stdout = rewriteStdoutToDiffFriendly
|
|
33
|
+
? this.rewritePulumiPreviewAsDiffFriendlyText(previewResult.stdout)
|
|
34
34
|
: previewResult.stdout;
|
|
35
35
|
return {
|
|
36
36
|
...previewResult,
|
|
@@ -45,14 +45,14 @@ export class LocalWorkspacePulumiClientStrategy {
|
|
|
45
45
|
return line;
|
|
46
46
|
}
|
|
47
47
|
const trimmed = line.trimStart();
|
|
48
|
-
const symbol = trimmed.startsWith("+-")
|
|
49
|
-
"-" // replace
|
|
50
|
-
: trimmed.startsWith("+")
|
|
51
|
-
"+" // create
|
|
52
|
-
: trimmed.startsWith("-")
|
|
53
|
-
"-" // delete
|
|
54
|
-
: trimmed.startsWith("~")
|
|
55
|
-
"!" // modify
|
|
48
|
+
const symbol = trimmed.startsWith("+-")
|
|
49
|
+
? "-" // replace
|
|
50
|
+
: trimmed.startsWith("+")
|
|
51
|
+
? "+" // create
|
|
52
|
+
: trimmed.startsWith("-")
|
|
53
|
+
? "-" // delete
|
|
54
|
+
: trimmed.startsWith("~")
|
|
55
|
+
? "!" // modify
|
|
56
56
|
: null;
|
|
57
57
|
if (!symbol) {
|
|
58
58
|
return line;
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tahminator/pipeline",
|
|
3
|
-
"
|
|
4
|
-
"author": "Tahmid Ahmed",
|
|
3
|
+
"version": "1.0.96-beta.gd0b9c905",
|
|
5
4
|
"description": "A collection of Bun shell scripts that can be re-used in various CICD pipelines.",
|
|
6
|
-
"
|
|
5
|
+
"author": "Tahmid Ahmed",
|
|
7
6
|
"repository": {
|
|
8
7
|
"url": "git+https://github.com/tahminator/pipeline.git"
|
|
9
8
|
},
|
|
10
|
-
"main": "./dist/index.js",
|
|
11
|
-
"module": "./dist/index.js",
|
|
12
|
-
"types": "./dist/index.d.ts",
|
|
13
9
|
"files": [
|
|
14
10
|
"dist"
|
|
15
11
|
],
|
|
12
|
+
"type": "module",
|
|
13
|
+
"main": "./dist/index.js",
|
|
14
|
+
"module": "./dist/index.js",
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
18
18
|
"types": "./dist/index.d.ts",
|
|
@@ -22,30 +22,12 @@
|
|
|
22
22
|
"scripts": {
|
|
23
23
|
"typecheck": "tsc --noEmit",
|
|
24
24
|
"test": "bun run typecheck && bun run fmt && bun run lint && bun test",
|
|
25
|
-
"
|
|
26
|
-
"lint": "
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"prettier": "prettier --check .",
|
|
30
|
-
"prettier:fix": "prettier --write .",
|
|
25
|
+
"lint": "oxlint .",
|
|
26
|
+
"lint:fix": "oxlint . --fix",
|
|
27
|
+
"fmt": "oxfmt --check .",
|
|
28
|
+
"fmt:fix": "oxfmt --write .",
|
|
31
29
|
"build": "tsc -p tsconfig.build.json"
|
|
32
30
|
},
|
|
33
|
-
"devDependencies": {
|
|
34
|
-
"@eslint/js": "^10.0.1",
|
|
35
|
-
"@types/bun": "latest",
|
|
36
|
-
"@types/semver": "^7.7.1",
|
|
37
|
-
"@types/yargs": "^17.0.35",
|
|
38
|
-
"eslint": "^10.0.3",
|
|
39
|
-
"eslint-plugin-perfectionist": "^5.7.0",
|
|
40
|
-
"globals": "^17.4.0",
|
|
41
|
-
"jiti": "^2.6.1",
|
|
42
|
-
"prettier": "^3.8.1",
|
|
43
|
-
"typescript-eslint": "^8.57.1",
|
|
44
|
-
"vitest": "^4.1.0"
|
|
45
|
-
},
|
|
46
|
-
"peerDependencies": {
|
|
47
|
-
"typescript": "^5"
|
|
48
|
-
},
|
|
49
31
|
"dependencies": {
|
|
50
32
|
"@actions/artifact": "^6.2.1",
|
|
51
33
|
"@octokit/auth-app": "^8.2.0",
|
|
@@ -55,10 +37,24 @@
|
|
|
55
37
|
"fast-xml-builder": "^1.1.5",
|
|
56
38
|
"fast-xml-parser": "^5.7.2",
|
|
57
39
|
"neverthrow": "^8.2.0",
|
|
40
|
+
"oxlint-tsgolint": "^7.0.2003",
|
|
58
41
|
"semver": "^7.7.4",
|
|
59
42
|
"xml-trueformat": "^0.9.5",
|
|
60
43
|
"yaml": "^2.8.2",
|
|
61
44
|
"yargs": "^18.0.0",
|
|
62
45
|
"zod": "^4.3.6"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@types/bun": "latest",
|
|
49
|
+
"@types/semver": "^7.7.1",
|
|
50
|
+
"@types/yargs": "^17.0.35",
|
|
51
|
+
"globals": "^17.4.0",
|
|
52
|
+
"jiti": "^2.6.1",
|
|
53
|
+
"oxfmt": "^0.72.0",
|
|
54
|
+
"oxlint": "^1.87.0",
|
|
55
|
+
"vitest": "^4.1.0"
|
|
56
|
+
},
|
|
57
|
+
"peerDependencies": {
|
|
58
|
+
"typescript": "^7"
|
|
63
59
|
}
|
|
64
60
|
}
|