mirror of
https://github.com/DeterminateSystems/update-flake-lock.git
synced 2024-12-23 13:32:07 +01:00
Finish initial rework into TS
This commit is contained in:
parent
502daa7e5e
commit
dde5487502
4 changed files with 88 additions and 18 deletions
|
@ -23,7 +23,6 @@ inputs:
|
||||||
path-to-flake-dir:
|
path-to-flake-dir:
|
||||||
description: "The path of the directory containing `flake.nix` file within your repository. Useful when `flake.nix` cannot reside at the root of your repository."
|
description: "The path of the directory containing `flake.nix` file within your repository. Useful when `flake.nix` cannot reside at the root of your repository."
|
||||||
required: false
|
required: false
|
||||||
default: ""
|
|
||||||
pr-title:
|
pr-title:
|
||||||
description: "The title of the PR to be created"
|
description: "The title of the PR to be created"
|
||||||
required: false
|
required: false
|
||||||
|
@ -115,7 +114,7 @@ runs:
|
||||||
uses: crazy-max/ghaction-import-gpg@v6
|
uses: crazy-max/ghaction-import-gpg@v6
|
||||||
with:
|
with:
|
||||||
gpg_private_key: ${{ inputs.gpg-private-key }}
|
gpg_private_key: ${{ inputs.gpg-private-key }}
|
||||||
fingerprint: ${{ inputs.gpg-fingerprint }}
|
fingerprint: ${{ inputs.gpg-fingerprint }}
|
||||||
passphrase: ${{ inputs.gpg-passphrase }}
|
passphrase: ${{ inputs.gpg-passphrase }}
|
||||||
git_config_global: true
|
git_config_global: true
|
||||||
git_user_signingkey: true
|
git_user_signingkey: true
|
||||||
|
|
45
dist/index.js
vendored
45
dist/index.js
vendored
|
@ -86423,16 +86423,16 @@ var __webpack_exports__ = {};
|
||||||
// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
|
// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
|
||||||
(() => {
|
(() => {
|
||||||
|
|
||||||
|
// EXTERNAL MODULE: ./node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/core.js
|
||||||
|
var core = __nccwpck_require__(9093);
|
||||||
|
// EXTERNAL MODULE: ./node_modules/.pnpm/@actions+exec@1.1.1/node_modules/@actions/exec/lib/exec.js
|
||||||
|
var exec = __nccwpck_require__(7775);
|
||||||
;// CONCATENATED MODULE: external "node:fs"
|
;// CONCATENATED MODULE: external "node:fs"
|
||||||
const external_node_fs_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:fs");
|
const external_node_fs_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:fs");
|
||||||
// EXTERNAL MODULE: external "node:os"
|
// EXTERNAL MODULE: external "node:os"
|
||||||
var external_node_os_ = __nccwpck_require__(612);
|
var external_node_os_ = __nccwpck_require__(612);
|
||||||
// EXTERNAL MODULE: external "node:util"
|
// EXTERNAL MODULE: external "node:util"
|
||||||
var external_node_util_ = __nccwpck_require__(7261);
|
var external_node_util_ = __nccwpck_require__(7261);
|
||||||
// EXTERNAL MODULE: ./node_modules/.pnpm/@actions+core@1.10.1/node_modules/@actions/core/lib/core.js
|
|
||||||
var core = __nccwpck_require__(9093);
|
|
||||||
// EXTERNAL MODULE: ./node_modules/.pnpm/@actions+exec@1.1.1/node_modules/@actions/exec/lib/exec.js
|
|
||||||
var exec = __nccwpck_require__(7775);
|
|
||||||
// EXTERNAL MODULE: external "os"
|
// EXTERNAL MODULE: external "os"
|
||||||
var external_os_ = __nccwpck_require__(2037);
|
var external_os_ = __nccwpck_require__(2037);
|
||||||
;// CONCATENATED MODULE: external "node:crypto"
|
;// CONCATENATED MODULE: external "node:crypto"
|
||||||
|
@ -94262,21 +94262,52 @@ function mungeDiagnosticEndpoint(inputUrl) {
|
||||||
;// CONCATENATED MODULE: ./dist/index.js
|
;// CONCATENATED MODULE: ./dist/index.js
|
||||||
// src/index.ts
|
// src/index.ts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var EVENT_EXECUTION_FAILURE = "execution_failure";
|
||||||
var UpdateFlakeLockAction = class {
|
var UpdateFlakeLockAction = class {
|
||||||
constructor() {
|
constructor() {
|
||||||
const options = {
|
const options = {
|
||||||
name: "update-flake-lock",
|
name: "update-flake-lock",
|
||||||
// We don't
|
|
||||||
fetchStyle: "universal",
|
fetchStyle: "universal",
|
||||||
requireNix: "fail"
|
requireNix: "fail"
|
||||||
};
|
};
|
||||||
this.idslib = new IdsToolbox(options);
|
this.idslib = new IdsToolbox(options);
|
||||||
this.nixOptions = inputs_exports.getString("nix-options");
|
this.nixOptions = inputs_exports.getString("nix-options");
|
||||||
this.targets = inputs_exports.getString("inputs");
|
this.targets = inputs_exports.getString("inputs").split(" ");
|
||||||
this.commitMessage = inputs_exports.getString("commit-msg");
|
this.commitMessage = inputs_exports.getString("commit-msg");
|
||||||
this.pathToFlakeDir = inputs_exports.getString("path-to-flake-dir");
|
this.pathToFlakeDir = inputs_exports.getStringOrNull("path-to-flake-dir");
|
||||||
}
|
}
|
||||||
async update() {
|
async update() {
|
||||||
|
const nixOptions = this.nixOptions.split(",");
|
||||||
|
const inputFlags = this.targets.length > 0 ? this.targets.map((input) => `--update-input ${input}`) : [];
|
||||||
|
if (this.pathToFlakeDir !== null) {
|
||||||
|
const returnCode = await exec.exec("cd", [this.pathToFlakeDir]);
|
||||||
|
if (returnCode !== 0) {
|
||||||
|
this.idslib.recordEvent(EVENT_EXECUTION_FAILURE, {
|
||||||
|
returnCode
|
||||||
|
});
|
||||||
|
core.setFailed(
|
||||||
|
`Error when trying to cd into flake directory ${this.pathToFlakeDir}. Make sure the check that the directory exists.`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const nixCommandArgs = nixOptions.concat(["flake", "lock"]).concat(inputFlags.length > 0 ? inputFlags : []).concat([
|
||||||
|
"--commit-lock-file",
|
||||||
|
"--commit-lock-file-summary",
|
||||||
|
this.commitMessage
|
||||||
|
]);
|
||||||
|
core.debug(`running nix command:
|
||||||
|
nix ${nixCommandArgs.join(" ")}`);
|
||||||
|
const exitCode = await exec.exec("nix", nixCommandArgs);
|
||||||
|
if (exitCode !== 0) {
|
||||||
|
this.idslib.recordEvent(EVENT_EXECUTION_FAILURE, {
|
||||||
|
exitCode
|
||||||
|
});
|
||||||
|
core.setFailed(`non-zero exit code of ${exitCode} detected`);
|
||||||
|
} else {
|
||||||
|
core.info(`flake.lock file was successfully updated`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
function main() {
|
function main() {
|
||||||
|
|
2
dist/index.js.map
vendored
2
dist/index.js.map
vendored
|
@ -1 +1 @@
|
||||||
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { ActionOptions, IdsToolbox, inputs } from \"detsys-ts\";\n\nclass UpdateFlakeLockAction {\n idslib: IdsToolbox;\n private nixOptions: string;\n private targets: string;\n private commitMessage: string;\n private pathToFlakeDir: string;\n\n constructor() {\n const options: ActionOptions = {\n name: \"update-flake-lock\",\n // We don't\n fetchStyle: \"universal\",\n requireNix: \"fail\",\n };\n\n this.idslib = new IdsToolbox(options);\n\n this.nixOptions = inputs.getString(\"nix-options\");\n this.targets = inputs.getString(\"inputs\");\n this.commitMessage = inputs.getString(\"commit-msg\");\n this.pathToFlakeDir = inputs.getString(\"path-to-flake-dir\");\n }\n\n async update(): Promise<void> {}\n}\n\nfunction main(): void {\n const updateFlakeLock = new UpdateFlakeLockAction();\n\n updateFlakeLock.idslib.onMain(async () => {\n await updateFlakeLock.update();\n });\n\n updateFlakeLock.idslib.execute();\n}\n\nmain();\n"],"mappings":";AAAA,SAAwB,YAAY,cAAc;AAElD,IAAM,wBAAN,MAA4B;AAAA,EAO1B,cAAc;AACZ,UAAM,UAAyB;AAAA,MAC7B,MAAM;AAAA;AAAA,MAEN,YAAY;AAAA,MACZ,YAAY;AAAA,IACd;AAEA,SAAK,SAAS,IAAI,WAAW,OAAO;AAEpC,SAAK,aAAa,OAAO,UAAU,aAAa;AAChD,SAAK,UAAU,OAAO,UAAU,QAAQ;AACxC,SAAK,gBAAgB,OAAO,UAAU,YAAY;AAClD,SAAK,iBAAiB,OAAO,UAAU,mBAAmB;AAAA,EAC5D;AAAA,EAEA,MAAM,SAAwB;AAAA,EAAC;AACjC;AAEA,SAAS,OAAa;AACpB,QAAM,kBAAkB,IAAI,sBAAsB;AAElD,kBAAgB,OAAO,OAAO,YAAY;AACxC,UAAM,gBAAgB,OAAO;AAAA,EAC/B,CAAC;AAED,kBAAgB,OAAO,QAAQ;AACjC;AAEA,KAAK;","names":[]}
|
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import * as actionsCore from \"@actions/core\";\nimport * as actionsExec from \"@actions/exec\";\nimport { ActionOptions, IdsToolbox, inputs } from \"detsys-ts\";\n\nconst EVENT_EXECUTION_FAILURE = \"execution_failure\";\n\nclass UpdateFlakeLockAction {\n idslib: IdsToolbox;\n private nixOptions: string;\n private targets: string[];\n private commitMessage: string;\n private pathToFlakeDir: string | null;\n\n constructor() {\n const options: ActionOptions = {\n name: \"update-flake-lock\",\n fetchStyle: \"universal\",\n requireNix: \"fail\",\n };\n\n this.idslib = new IdsToolbox(options);\n\n this.nixOptions = inputs.getString(\"nix-options\");\n this.targets = inputs.getString(\"inputs\").split(\" \");\n this.commitMessage = inputs.getString(\"commit-msg\");\n this.pathToFlakeDir = inputs.getStringOrNull(\"path-to-flake-dir\");\n }\n\n async update(): Promise<void> {\n const nixOptions: string[] = this.nixOptions.split(\",\");\n const inputFlags: string[] =\n this.targets.length > 0\n ? this.targets.map((input) => `--update-input ${input}`)\n : [];\n\n if (this.pathToFlakeDir !== null) {\n const returnCode = await actionsExec.exec(\"cd\", [this.pathToFlakeDir]);\n if (returnCode !== 0) {\n this.idslib.recordEvent(EVENT_EXECUTION_FAILURE, {\n returnCode,\n });\n actionsCore.setFailed(\n `Error when trying to cd into flake directory ${this.pathToFlakeDir}. Make sure the check that the directory exists.`,\n );\n }\n }\n\n // Nix command of this form:\n // nix ${nix options} flake lock ${input flags} --commit-lock-file --commit-lock-file-summary ${commit message}\n // Example command:\n // nix --extra-substituters https://example.com flake lock --update-input nixpkgs --commit-lock-file --commit-lock-file-summary\n const nixCommandArgs: string[] = nixOptions\n .concat([\"flake\", \"lock\"])\n .concat(inputFlags.length > 0 ? inputFlags : [])\n .concat([\n \"--commit-lock-file\",\n \"--commit-lock-file-summary\",\n this.commitMessage,\n ]);\n\n actionsCore.debug(`running nix command:\\nnix ${nixCommandArgs.join(\" \")}`);\n\n const exitCode = await actionsExec.exec(\"nix\", nixCommandArgs);\n\n if (exitCode !== 0) {\n this.idslib.recordEvent(EVENT_EXECUTION_FAILURE, {\n exitCode,\n });\n actionsCore.setFailed(`non-zero exit code of ${exitCode} detected`);\n } else {\n actionsCore.info(`flake.lock file was successfully updated`);\n }\n }\n}\n\nfunction main(): void {\n const updateFlakeLock = new UpdateFlakeLockAction();\n\n updateFlakeLock.idslib.onMain(async () => {\n await updateFlakeLock.update();\n });\n\n updateFlakeLock.idslib.execute();\n}\n\nmain();\n"],"mappings":";AAAA,YAAY,iBAAiB;AAC7B,YAAY,iBAAiB;AAC7B,SAAwB,YAAY,cAAc;AAElD,IAAM,0BAA0B;AAEhC,IAAM,wBAAN,MAA4B;AAAA,EAO1B,cAAc;AACZ,UAAM,UAAyB;AAAA,MAC7B,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,YAAY;AAAA,IACd;AAEA,SAAK,SAAS,IAAI,WAAW,OAAO;AAEpC,SAAK,aAAa,OAAO,UAAU,aAAa;AAChD,SAAK,UAAU,OAAO,UAAU,QAAQ,EAAE,MAAM,GAAG;AACnD,SAAK,gBAAgB,OAAO,UAAU,YAAY;AAClD,SAAK,iBAAiB,OAAO,gBAAgB,mBAAmB;AAAA,EAClE;AAAA,EAEA,MAAM,SAAwB;AAC5B,UAAM,aAAuB,KAAK,WAAW,MAAM,GAAG;AACtD,UAAM,aACJ,KAAK,QAAQ,SAAS,IAClB,KAAK,QAAQ,IAAI,CAAC,UAAU,kBAAkB,KAAK,EAAE,IACrD,CAAC;AAEP,QAAI,KAAK,mBAAmB,MAAM;AAChC,YAAM,aAAa,MAAkB,iBAAK,MAAM,CAAC,KAAK,cAAc,CAAC;AACrE,UAAI,eAAe,GAAG;AACpB,aAAK,OAAO,YAAY,yBAAyB;AAAA,UAC/C;AAAA,QACF,CAAC;AACD,QAAY;AAAA,UACV,gDAAgD,KAAK,cAAc;AAAA,QACrE;AAAA,MACF;AAAA,IACF;AAMA,UAAM,iBAA2B,WAC9B,OAAO,CAAC,SAAS,MAAM,CAAC,EACxB,OAAO,WAAW,SAAS,IAAI,aAAa,CAAC,CAAC,EAC9C,OAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA,KAAK;AAAA,IACP,CAAC;AAEH,IAAY,kBAAM;AAAA,MAA6B,eAAe,KAAK,GAAG,CAAC,EAAE;AAEzE,UAAM,WAAW,MAAkB,iBAAK,OAAO,cAAc;AAE7D,QAAI,aAAa,GAAG;AAClB,WAAK,OAAO,YAAY,yBAAyB;AAAA,QAC/C;AAAA,MACF,CAAC;AACD,MAAY,sBAAU,yBAAyB,QAAQ,WAAW;AAAA,IACpE,OAAO;AACL,MAAY,iBAAK,0CAA0C;AAAA,IAC7D;AAAA,EACF;AACF;AAEA,SAAS,OAAa;AACpB,QAAM,kBAAkB,IAAI,sBAAsB;AAElD,kBAAgB,OAAO,OAAO,YAAY;AACxC,UAAM,gBAAgB,OAAO;AAAA,EAC/B,CAAC;AAED,kBAAgB,OAAO,QAAQ;AACjC;AAEA,KAAK;","names":[]}
|
56
src/index.ts
56
src/index.ts
|
@ -1,16 +1,19 @@
|
||||||
|
import * as actionsCore from "@actions/core";
|
||||||
|
import * as actionsExec from "@actions/exec";
|
||||||
import { ActionOptions, IdsToolbox, inputs } from "detsys-ts";
|
import { ActionOptions, IdsToolbox, inputs } from "detsys-ts";
|
||||||
|
|
||||||
|
const EVENT_EXECUTION_FAILURE = "execution_failure";
|
||||||
|
|
||||||
class UpdateFlakeLockAction {
|
class UpdateFlakeLockAction {
|
||||||
idslib: IdsToolbox;
|
idslib: IdsToolbox;
|
||||||
private nixOptions: string;
|
private nixOptions: string;
|
||||||
private targets: string[];
|
private targets: string[];
|
||||||
private commitMessage: string;
|
private commitMessage: string;
|
||||||
private pathToFlakeDir: string;
|
private pathToFlakeDir: string | null;
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
const options: ActionOptions = {
|
const options: ActionOptions = {
|
||||||
name: "update-flake-lock",
|
name: "update-flake-lock",
|
||||||
// We don't
|
|
||||||
fetchStyle: "universal",
|
fetchStyle: "universal",
|
||||||
requireNix: "fail",
|
requireNix: "fail",
|
||||||
};
|
};
|
||||||
|
@ -20,16 +23,53 @@ class UpdateFlakeLockAction {
|
||||||
this.nixOptions = inputs.getString("nix-options");
|
this.nixOptions = inputs.getString("nix-options");
|
||||||
this.targets = inputs.getString("inputs").split(" ");
|
this.targets = inputs.getString("inputs").split(" ");
|
||||||
this.commitMessage = inputs.getString("commit-msg");
|
this.commitMessage = inputs.getString("commit-msg");
|
||||||
this.pathToFlakeDir = inputs.getString("path-to-flake-dir");
|
this.pathToFlakeDir = inputs.getStringOrNull("path-to-flake-dir");
|
||||||
}
|
}
|
||||||
|
|
||||||
async update(): Promise<void> {
|
async update(): Promise<void> {
|
||||||
const inputFlags = this.targets
|
const nixOptions: string[] = this.nixOptions.split(",");
|
||||||
.map((input) => `--update-input ${input}`)
|
const inputFlags: string[] =
|
||||||
.join(" ");
|
this.targets.length > 0
|
||||||
const inputStr = this.targets.length > 1 ? `${inputFlags}` : undefined;
|
? this.targets.map((input) => `--update-input ${input}`)
|
||||||
|
: [];
|
||||||
|
|
||||||
const nixCommand = `nix ${this.nixOptions} flake lock ${inputStr} --commit-lock-file --commit-lock-file-summary "${this.commitMessage}"`;
|
if (this.pathToFlakeDir !== null) {
|
||||||
|
const returnCode = await actionsExec.exec("cd", [this.pathToFlakeDir]);
|
||||||
|
if (returnCode !== 0) {
|
||||||
|
this.idslib.recordEvent(EVENT_EXECUTION_FAILURE, {
|
||||||
|
returnCode,
|
||||||
|
});
|
||||||
|
actionsCore.setFailed(
|
||||||
|
`Error when trying to cd into flake directory ${this.pathToFlakeDir}. Make sure the check that the directory exists.`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Nix command of this form:
|
||||||
|
// nix ${nix options} flake lock ${input flags} --commit-lock-file --commit-lock-file-summary ${commit message}
|
||||||
|
// Example command:
|
||||||
|
// nix --extra-substituters https://example.com flake lock --update-input nixpkgs --commit-lock-file --commit-lock-file-summary
|
||||||
|
const nixCommandArgs: string[] = nixOptions
|
||||||
|
.concat(["flake", "lock"])
|
||||||
|
.concat(inputFlags.length > 0 ? inputFlags : [])
|
||||||
|
.concat([
|
||||||
|
"--commit-lock-file",
|
||||||
|
"--commit-lock-file-summary",
|
||||||
|
this.commitMessage,
|
||||||
|
]);
|
||||||
|
|
||||||
|
actionsCore.debug(`running nix command:\nnix ${nixCommandArgs.join(" ")}`);
|
||||||
|
|
||||||
|
const exitCode = await actionsExec.exec("nix", nixCommandArgs);
|
||||||
|
|
||||||
|
if (exitCode !== 0) {
|
||||||
|
this.idslib.recordEvent(EVENT_EXECUTION_FAILURE, {
|
||||||
|
exitCode,
|
||||||
|
});
|
||||||
|
actionsCore.setFailed(`non-zero exit code of ${exitCode} detected`);
|
||||||
|
} else {
|
||||||
|
actionsCore.info(`flake.lock file was successfully updated`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue