diff --git a/.eslintrc.json b/.eslintrc.json index 6499d3b..5966041 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -29,6 +29,7 @@ "accessibility": "no-public" } ], + "@typescript-eslint/no-base-to-string": "error", "@typescript-eslint/no-require-imports": "error", "@typescript-eslint/array-type": "error", "@typescript-eslint/await-thenable": "error", diff --git a/dist/index.js b/dist/index.js index 613da9f..e37f256 100644 --- a/dist/index.js +++ b/dist/index.js @@ -86333,6 +86333,8 @@ var external_node_util_ = __nccwpck_require__(7261); var external_os_ = __nccwpck_require__(2037); ;// CONCATENATED MODULE: external "node:crypto" const external_node_crypto_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:crypto"); +;// CONCATENATED MODULE: external "node:dns/promises" +const promises_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:dns/promises"); // EXTERNAL MODULE: ./node_modules/.pnpm/@actions+cache@3.2.4/node_modules/@actions/cache/lib/cache.js var cache = __nccwpck_require__(6878); ;// CONCATENATED MODULE: ./node_modules/.pnpm/@sindresorhus+is@6.3.1/node_modules/@sindresorhus/is/dist/index.js @@ -93726,14 +93728,14 @@ const got = source_create(defaults); ;// CONCATENATED MODULE: external "node:child_process" const external_node_child_process_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:child_process"); ;// CONCATENATED MODULE: external "node:fs/promises" -const promises_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:fs/promises"); +const external_node_fs_promises_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:fs/promises"); ;// CONCATENATED MODULE: external "node:path" const external_node_path_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:path"); ;// CONCATENATED MODULE: external "node:stream/promises" const external_node_stream_promises_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:stream/promises"); ;// CONCATENATED MODULE: external "node:zlib" const external_node_zlib_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:zlib"); -;// CONCATENATED MODULE: ./node_modules/.pnpm/github.com+DeterminateSystems+detsys-ts@5fcb0532d85556ebc2de286e483885976531339d_uqngfub4ls4loys67iy653x57e/node_modules/detsys-ts/dist/index.js +;// CONCATENATED MODULE: ./node_modules/.pnpm/github.com+DeterminateSystems+detsys-ts@9d66d2c89c150f796165fdcc20b3be538807c0f4_46ybmzqhaua4eiwu3nj2qm63te/node_modules/detsys-ts/dist/index.js var __defProp = Object.defineProperty; var __export = (target, all) => { for (var name in all) @@ -93819,9 +93821,9 @@ async function readAsyncOsReleaseFile(fileList, options) { ${fileData}`); } break; - } catch (error2) { + } catch (error3) { if (options.debug) { - console.error(error2); + console.error(error3); } } } @@ -93843,9 +93845,9 @@ function readSyncOsreleaseFile(releaseFileList, options) { ${fileData}`); } break; - } catch (error2) { + } catch (error3) { if (options.debug) { - console.error(error2); + console.error(error3); } } } @@ -94037,6 +94039,192 @@ function hashEnvironmentVariables(prefix, variables) { return `${prefix}-${hash.digest("hex")}`; } +// src/errors.ts +function stringifyError(e) { + if (e instanceof Error) { + return e.message; + } else if (typeof e === "string") { + return e; + } else { + return JSON.stringify(e); + } +} + +// src/ids-host.ts + + +var DEFAULT_LOOKUP = "_detsys_ids._tcp.install.determinate.systems."; +var ALLOWED_SUFFIXES = [ + ".install.determinate.systems", + ".install.detsys.dev" +]; +var DEFAULT_IDS_HOST = "https://install.determinate.systems"; +var LOOKUP = process.env["IDS_LOOKUP"] ?? DEFAULT_LOOKUP; +var IdsHost = class { + constructor(idsProjectName, diagnosticsSuffix, runtimeDiagnosticsUrl) { + this.idsProjectName = idsProjectName; + this.diagnosticsSuffix = diagnosticsSuffix; + this.runtimeDiagnosticsUrl = runtimeDiagnosticsUrl; + } + markCurrentHostBroken() { + this.prioritizedURLs?.shift(); + } + setPrioritizedUrls(urls) { + this.prioritizedURLs = urls; + } + async getRootUrl() { + const idsHost = process.env["IDS_HOST"]; + if (idsHost !== void 0) { + try { + return new URL(idsHost); + } catch (err) { + core.error( + `IDS_HOST environment variable is not a valid URL. Ignoring. ${stringifyError(err)}` + ); + } + } + let url = void 0; + try { + const urls = await this.getUrlsByPreference(); + url = urls[0]; + } catch (err) { + core.error( + `Error collecting IDS URLs by preference: ${stringifyError(err)}` + ); + } + if (url === void 0) { + url = new URL(DEFAULT_IDS_HOST); + } + return new URL(url); + } + async getDiagnosticsUrl() { + if (this.runtimeDiagnosticsUrl === "") { + return void 0; + } + if (this.runtimeDiagnosticsUrl !== "-" && this.runtimeDiagnosticsUrl !== void 0) { + try { + return new URL(this.runtimeDiagnosticsUrl); + } catch (err) { + core.info( + `User-provided diagnostic endpoint ignored: not a valid URL: ${stringifyError(err)}` + ); + } + } + try { + const diagnosticUrl = await this.getRootUrl(); + diagnosticUrl.pathname += this.idsProjectName; + diagnosticUrl.pathname += "/"; + diagnosticUrl.pathname += this.diagnosticsSuffix || "diagnostics"; + return diagnosticUrl; + } catch (err) { + core.info( + `Generated diagnostic endpoint ignored, and diagnostics are disabled: not a valid URL: ${stringifyError(err)}` + ); + return void 0; + } + } + async getUrlsByPreference() { + if (this.prioritizedURLs === void 0) { + this.prioritizedURLs = orderRecordsByPriorityWeight( + await discoverServiceRecords() + ).flatMap((record) => recordToUrl(record) || []); + } + return this.prioritizedURLs; + } +}; +function recordToUrl(record) { + const urlStr = `https://${record.name}:${record.port}`; + try { + return new URL(urlStr); + } catch (err) { + core.debug( + `Record ${JSON.stringify(record)} produced an invalid URL: ${urlStr} (${err})` + ); + return void 0; + } +} +async function discoverServiceRecords() { + return await discoverServicesStub((0,promises_namespaceObject.resolveSrv)(LOOKUP), 1e3); +} +async function discoverServicesStub(lookup, timeout) { + const defaultFallback = new Promise( + (resolve, _reject) => { + setTimeout(resolve, timeout, []); + } + ); + let records; + try { + records = await Promise.race([lookup, defaultFallback]); + } catch (reason) { + core.debug(`Error resolving SRV records: ${stringifyError(reason)}`); + records = []; + } + const acceptableRecords = records.filter((record) => { + for (const suffix of ALLOWED_SUFFIXES) { + if (record.name.endsWith(suffix)) { + return true; + } + } + core.debug( + `Unacceptable domain due to an invalid suffix: ${record.name}` + ); + return false; + }); + if (acceptableRecords.length === 0) { + core.debug(`No records found for ${LOOKUP}`); + } else { + core.debug( + `Resolved ${LOOKUP} to ${JSON.stringify(acceptableRecords)}` + ); + } + return acceptableRecords; +} +function orderRecordsByPriorityWeight(records) { + const byPriorityWeight = /* @__PURE__ */ new Map(); + for (const record of records) { + const existing = byPriorityWeight.get(record.priority); + if (existing) { + existing.push(record); + } else { + byPriorityWeight.set(record.priority, [record]); + } + } + const prioritizedRecords = []; + const keys = Array.from(byPriorityWeight.keys()).sort( + (a, b) => a - b + ); + for (const priority of keys) { + const recordsByPrio = byPriorityWeight.get(priority); + if (recordsByPrio === void 0) { + continue; + } + prioritizedRecords.push(...weightedRandom(recordsByPrio)); + } + return prioritizedRecords; +} +function weightedRandom(records) { + const scratchRecords = records.slice(); + const result = []; + while (scratchRecords.length > 0) { + const weights = []; + { + for (let i = 0; i < scratchRecords.length; i++) { + weights.push( + scratchRecords[i].weight + (i > 0 ? scratchRecords[i - 1].weight : 0) + ); + } + } + const point = Math.random() * weights[weights.length - 1]; + for (let selectedIndex = 0; selectedIndex < weights.length; selectedIndex++) { + if (weights[selectedIndex] > point) { + result.push(scratchRecords.splice(selectedIndex, 1)[0]); + break; + } + } + } + return result; +} + // src/inputs.ts var inputs_exports = {}; __export(inputs_exports, { @@ -94197,21 +94385,6 @@ function noisilyGetInput(suffix, legacyPrefix) { - -// src/errors.ts -function stringifyError(e) { - if (e instanceof Error) { - return e.message; - } else if (typeof e === "string") { - return e; - } else { - return JSON.stringify(e); - } -} - -// src/index.ts -var DEFAULT_IDS_HOST = "https://install.determinate.systems"; -var IDS_HOST = process.env["IDS_HOST"] ?? DEFAULT_IDS_HOST; var EVENT_EXCEPTION = "exception"; var EVENT_ARTIFACT_CACHE_HIT = "artifact_cache_hit"; var EVENT_ARTIFACT_CACHE_MISS = "artifact_cache_miss"; @@ -94245,6 +94418,13 @@ var DetSysAction = class { } constructor(actionOptions) { this.actionOptions = makeOptionsConfident(actionOptions); + this.idsHost = new IdsHost( + this.actionOptions.idsProjectName, + actionOptions.diagnosticsSuffix, + // Note: we don't use actionsCore.getInput('diagnostic-endpoint') on purpose: + // getInput silently converts absent data to an empty string. + process.env["INPUT_DIAGNOSTIC-ENDPOINT"] + ); this.exceptionAttachments = /* @__PURE__ */ new Map(); this.nixStoreTrust = "unknown"; this.strictMode = getBool("_internal-strict-mode"); @@ -94256,9 +94436,9 @@ var DetSysAction = class { }, hooks: { beforeRetry: [ - (error2, retryCount) => { + (error3, retryCount) => { core.info( - `Retrying after error ${error2.code}, retry #: ${retryCount}` + `Retrying after error ${error3.code}, retry #: ${retryCount}` ); } ] @@ -94335,8 +94515,8 @@ var DetSysAction = class { * Execute the Action as defined. */ execute() { - this.executeAsync().catch((error2) => { - console.log(error2); + this.executeAsync().catch((error3) => { + console.log(error3); process.exitCode = 1; }); } @@ -94347,8 +94527,8 @@ var DetSysAction = class { addFact(key, value) { this.facts[key] = value; } - getDiagnosticsUrl() { - return this.actionOptions.diagnosticsUrl; + async getDiagnosticsUrl() { + return await this.idsHost.getDiagnosticsUrl(); } getUniqueId() { return this.identity.run_differentiator || process.env.RUNNER_TRACKING_ID || (0,external_node_crypto_namespaceObject.randomUUID)(); @@ -94386,7 +94566,7 @@ var DetSysAction = class { */ async fetchExecutable() { const binaryPath = await this.fetchArtifact(); - await (0,promises_namespaceObject.chmod)(binaryPath, promises_namespaceObject.constants.S_IXUSR | promises_namespaceObject.constants.S_IXGRP); + await (0,external_node_fs_promises_namespaceObject.chmod)(binaryPath, external_node_fs_promises_namespaceObject.constants.S_IXUSR | external_node_fs_promises_namespaceObject.constants.S_IXGRP); return binaryPath; } get isMain() { @@ -94461,8 +94641,8 @@ var DetSysAction = class { `Downloading ${this.actionOptions.name} for ${this.architectureFetchSuffix}` ); try { - core.info(`Fetching from ${this.getSourceUrl()}`); - const correlatedUrl = this.getSourceUrl(); + core.info(`Fetching from ${await this.getSourceUrl()}`); + const correlatedUrl = await this.getSourceUrl(); correlatedUrl.searchParams.set("ci", "github"); correlatedUrl.searchParams.set( "correlation", @@ -94473,7 +94653,7 @@ var DetSysAction = class { const v = versionCheckup.headers.etag; this.addFact(FACT_SOURCE_URL_ETAG, v); core.debug( - `Checking the tool cache for ${this.getSourceUrl()} at ${v}` + `Checking the tool cache for ${await this.getSourceUrl()} at ${v}` ); const cached = await this.getCachedVersion(v); if (cached) { @@ -94521,13 +94701,13 @@ var DetSysAction = class { this.recordEvent(`complete_${this.executionPhase}`); await this.submitEvents(); } - getSourceUrl() { + async getSourceUrl() { const p = this.sourceParameters; if (p.url) { this.addFact(FACT_SOURCE_URL, p.url); return new URL(p.url); } - const fetchUrl = new URL(IDS_HOST); + const fetchUrl = await this.idsHost.getRootUrl(); fetchUrl.pathname += this.actionOptions.idsProjectName; if (p.tag) { fetchUrl.pathname += `/tag/${p.tag}`; @@ -94552,7 +94732,7 @@ var DetSysAction = class { const startCwd = process.cwd(); try { const tempDir = this.getTemporaryName(); - await (0,promises_namespaceObject.mkdir)(tempDir); + await (0,external_node_fs_promises_namespaceObject.mkdir)(tempDir); process.chdir(tempDir); process.env.GITHUB_WORKSPACE_BACKUP = process.env.GITHUB_WORKSPACE; delete process.env.GITHUB_WORKSPACE; @@ -94578,9 +94758,9 @@ var DetSysAction = class { const startCwd = process.cwd(); try { const tempDir = this.getTemporaryName(); - await (0,promises_namespaceObject.mkdir)(tempDir); + await (0,external_node_fs_promises_namespaceObject.mkdir)(tempDir); process.chdir(tempDir); - await (0,promises_namespaceObject.copyFile)(toolPath, `${tempDir}/${this.actionOptions.name}`); + await (0,external_node_fs_promises_namespaceObject.copyFile)(toolPath, `${tempDir}/${this.actionOptions.name}`); process.env.GITHUB_WORKSPACE_BACKUP = process.env.GITHUB_WORKSPACE; delete process.env.GITHUB_WORKSPACE; await cache.saveCache( @@ -94602,7 +94782,7 @@ var DetSysAction = class { for (const location of pathParts) { const candidateNix = external_node_path_namespaceObject.join(location, "nix"); try { - await promises_namespaceObject.access(candidateNix, promises_namespaceObject.constants.X_OK); + await external_node_fs_promises_namespaceObject.access(candidateNix, external_node_fs_promises_namespaceObject.constants.X_OK); core.debug(`Found Nix at ${candidateNix}`); nixLocation = candidateNix; break; @@ -94683,7 +94863,8 @@ var DetSysAction = class { } } async submitEvents() { - if (this.actionOptions.diagnosticsUrl === void 0) { + const diagnosticsUrl = await this.idsHost.getDiagnosticsUrl(); + if (diagnosticsUrl === void 0) { core.debug( "Diagnostics are disabled. Not sending the following events:" ); @@ -94696,7 +94877,7 @@ var DetSysAction = class { events: this.events }; try { - await this.client.post(this.actionOptions.diagnosticsUrl, { + await this.client.post(diagnosticsUrl, { json: batch, timeout: { request: DIAGNOSTIC_ENDPOINT_TIMEOUT_MS @@ -94706,12 +94887,28 @@ var DetSysAction = class { core.debug( `Error submitting diagnostics event: ${stringifyError2(e)}` ); + this.idsHost.markCurrentHostBroken(); + const secondaryDiagnosticsUrl = await this.idsHost.getDiagnosticsUrl(); + if (secondaryDiagnosticsUrl !== void 0) { + try { + await this.client.post(secondaryDiagnosticsUrl, { + json: batch, + timeout: { + request: DIAGNOSTIC_ENDPOINT_TIMEOUT_MS + } + }); + } catch (err) { + core.debug( + `Error submitting diagnostics event to secondary host (${secondaryDiagnosticsUrl}): ${stringifyError2(err)}` + ); + } + } } this.events = []; } }; -function stringifyError2(error2) { - return error2 instanceof Error || typeof error2 == "string" ? error2.toString() : JSON.stringify(error2); +function stringifyError2(error3) { + return error3 instanceof Error || typeof error3 == "string" ? error3.toString() : JSON.stringify(error3); } function makeOptionsConfident(actionOptions) { const idsProjectName = actionOptions.idsProjectName ?? actionOptions.name; @@ -94721,72 +94918,12 @@ function makeOptionsConfident(actionOptions) { eventPrefix: actionOptions.eventPrefix || "action:", fetchStyle: actionOptions.fetchStyle, legacySourcePrefix: actionOptions.legacySourcePrefix, - requireNix: actionOptions.requireNix, - diagnosticsUrl: determineDiagnosticsUrl( - idsProjectName, - actionOptions.diagnosticsUrl - ) + requireNix: actionOptions.requireNix }; core.debug("idslib options:"); core.debug(JSON.stringify(finalOpts, void 0, 2)); return finalOpts; } -function determineDiagnosticsUrl(idsProjectName, urlOption) { - if (urlOption === null) { - return void 0; - } - if (urlOption !== void 0) { - return urlOption; - } - { - const providedDiagnosticEndpoint = process.env["INPUT_DIAGNOSTIC-ENDPOINT"]; - if (providedDiagnosticEndpoint === "") { - return void 0; - } - if (providedDiagnosticEndpoint !== void 0) { - try { - return mungeDiagnosticEndpoint(new URL(providedDiagnosticEndpoint)); - } catch (e) { - core.info( - `User-provided diagnostic endpoint ignored: not a valid URL: ${stringifyError2(e)}` - ); - } - } - } - try { - const diagnosticUrl = new URL(IDS_HOST); - diagnosticUrl.pathname += idsProjectName; - diagnosticUrl.pathname += "/diagnostics"; - return diagnosticUrl; - } catch (e) { - core.info( - `Generated diagnostic endpoint ignored: not a valid URL: ${stringifyError2(e)}` - ); - } - return void 0; -} -function mungeDiagnosticEndpoint(inputUrl) { - if (DEFAULT_IDS_HOST === IDS_HOST) { - return inputUrl; - } - try { - const defaultIdsHost = new URL(DEFAULT_IDS_HOST); - const currentIdsHost = new URL(IDS_HOST); - if (inputUrl.origin !== defaultIdsHost.origin) { - return inputUrl; - } - inputUrl.protocol = currentIdsHost.protocol; - inputUrl.host = currentIdsHost.host; - inputUrl.username = currentIdsHost.username; - inputUrl.password = currentIdsHost.password; - return inputUrl; - } catch (e) { - core.info( - `Default or overridden IDS host isn't a valid URL: ${stringifyError2(e)}` - ); - } - return inputUrl; -} /*! * linux-release-info @@ -94810,9 +94947,7 @@ var FlakeHubPushAction = class extends DetSysAction { super({ name: "flakehub-push", fetchStyle: "gh-env-style", - diagnosticsUrl: new URL( - "https://install.determinate.systems/flakehub-push/telemetry" - ), + diagnosticsSuffix: "diagnostic", legacySourcePrefix: "flakehub-push", requireNix: "fail" }); diff --git a/dist/index.js.map b/dist/index.js.map index bc1131e..ed91b7c 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../ts/index.ts"],"sourcesContent":["import * as actionsCore from \"@actions/core\";\nimport * as actionsExec from \"@actions/exec\";\nimport { DetSysAction, inputs } from \"detsys-ts\";\n\nconst EVENT_EXECUTION_FAILURE = \"execution_failure\";\n\ntype ExecutionEnvironment = {\n FLAKEHUB_PUSH_VISIBILITY?: string;\n FLAKEHUB_PUSH_TAG?: string;\n FLAKEHUB_PUSH_HOST?: string;\n FLAKEHUB_PUSH_LOG_DIRECTIVES?: string;\n FLAKEHUB_PUSH_LOGGER?: string;\n FLAKEHUB_PUSH_GITHUB_TOKEN?: string;\n FLAKEHUB_PUSH_NAME?: string;\n FLAKEHUB_PUSH_REPOSITORY?: string;\n FLAKEHUB_PUSH_DIRECTORY?: string;\n FLAKEHUB_PUSH_GIT_ROOT?: string;\n FLAKEHUB_PUSH_EXTRA_LABELS?: string;\n FLAKEHUB_PUSH_SPDX_EXPRESSION?: string;\n FLAKEHUB_PUSH_ERROR_ON_CONFLICT?: string;\n FLAKEHUB_PUSH_INCLUDE_OUTPUT_PATHS?: string;\n FLAKEHUB_PUSH_ROLLING?: string;\n FLAKEHUB_PUSH_MIRROR?: string;\n FLAKEHUB_PUSH_ROLLING_MINOR?: string;\n};\n\nclass FlakeHubPushAction extends DetSysAction {\n // Action inputs translated into environment variables to pass to flakehub-push\n private visibility: string;\n private tag: string;\n private host: string;\n private logDirectives: string;\n private logger: string;\n private gitHubToken: string;\n private repository: string;\n private directory: string;\n private gitRoot: string;\n private spdxExpression: string;\n private errorOnConflict: boolean;\n private includeOutputPaths: boolean;\n private rolling: boolean;\n private mirror: boolean;\n private name: string | null;\n private rollingMinor: number | null;\n\n constructor() {\n super({\n name: \"flakehub-push\",\n fetchStyle: \"gh-env-style\",\n diagnosticsUrl: new URL(\n \"https://install.determinate.systems/flakehub-push/telemetry\",\n ),\n legacySourcePrefix: \"flakehub-push\",\n requireNix: \"fail\",\n });\n\n // Inputs translated into environment variables for flakehub-push\n this.visibility = inputs.getString(\"visibility\");\n this.tag = inputs.getString(\"tag\");\n this.host = inputs.getString(\"host\");\n this.logDirectives = inputs.getString(\"log-directives\");\n this.logger = inputs.getString(\"logger\");\n this.gitHubToken = inputs.getString(\"github-token\");\n this.repository = inputs.getString(\"repository\");\n this.directory = inputs.getString(\"directory\");\n this.gitRoot = inputs.getString(\"git-root\");\n this.spdxExpression = inputs.getString(\"spdx-expression\");\n this.errorOnConflict = inputs.getBool(\"error-on-conflict\");\n this.includeOutputPaths = inputs.getBool(\"include-output-paths\");\n this.rolling = inputs.getBool(\"rolling\");\n this.mirror = inputs.getBool(\"mirror\");\n this.name = inputs.getStringOrNull(\"name\");\n this.rollingMinor = inputs.getNumberOrNull(\"rolling-minor\");\n }\n\n async main(): Promise {\n await this.pushFlakeToFlakeHub();\n }\n\n // No post step\n async post(): Promise {}\n\n // extra-tags is deprecated but we still honor it\n private get extraLabels(): string {\n const labels = inputs.getString(\"extra-labels\"); // current input name\n const tags = inputs.getString(\"extra-tags\"); // deprecated input name\n\n // If `extra-labels` is set to something use it, otherwise use `extra-tags`.\n // It `extra-tags` is also not set, which means that it's an empty string, that's\n // still valid, as the flakehub-push CLI expects a comma-separated list here.\n return labels !== \"\" ? labels : tags;\n }\n\n // We first check for a value using the `source-binary` input and fall back to the\n // now-deprecated `flakehub-push-binary`\n private get sourceBinary(): string | null {\n const sourceBinaryInput = inputs.getStringOrNull(\"source-binary\");\n const flakeHubPushBinaryInput = inputs.getStringOrNull(\n \"flakehub-push-binary\",\n );\n\n return sourceBinaryInput !== \"\"\n ? sourceBinaryInput\n : flakeHubPushBinaryInput;\n }\n\n private executionEnvironment(): ExecutionEnvironment {\n const env: ExecutionEnvironment = {};\n\n env.FLAKEHUB_PUSH_VISIBILITY = this.visibility;\n env.FLAKEHUB_PUSH_TAG = this.tag;\n env.FLAKEHUB_PUSH_HOST = this.host;\n env.FLAKEHUB_PUSH_LOG_DIRECTIVES = this.logDirectives;\n env.FLAKEHUB_PUSH_LOGGER = this.logger;\n env.FLAKEHUB_PUSH_GITHUB_TOKEN = this.gitHubToken;\n env.FLAKEHUB_PUSH_REPOSITORY = this.repository;\n env.FLAKEHUB_PUSH_DIRECTORY = this.directory;\n env.FLAKEHUB_PUSH_GIT_ROOT = this.gitRoot;\n // not included: the now-deprecated FLAKEHUB_PUSH_EXTRA_TAGS\n env.FLAKEHUB_PUSH_EXTRA_LABELS = this.extraLabels;\n env.FLAKEHUB_PUSH_SPDX_EXPRESSION = this.spdxExpression;\n env.FLAKEHUB_PUSH_ERROR_ON_CONFLICT = this.errorOnConflict.toString();\n env.FLAKEHUB_PUSH_INCLUDE_OUTPUT_PATHS = this.includeOutputPaths.toString();\n env.FLAKEHUB_PUSH_ROLLING = this.rolling.toString();\n env.FLAKEHUB_PUSH_MIRROR = this.mirror.toString();\n\n if (this.name !== null) {\n env.FLAKEHUB_PUSH_NAME = this.name;\n }\n\n if (this.rollingMinor !== null) {\n env.FLAKEHUB_PUSH_ROLLING_MINOR = this.rollingMinor.toString();\n }\n\n return env;\n }\n\n async pushFlakeToFlakeHub(): Promise {\n const executionEnv = this.executionEnvironment();\n\n const flakeHubPushBinary =\n this.sourceBinary !== null\n ? this.sourceBinary\n : await this.fetchExecutable();\n\n actionsCore.debug(\n `execution environment: ${JSON.stringify(executionEnv, null, 2)}`,\n );\n\n const exitCode = await actionsExec.exec(flakeHubPushBinary, [], {\n env: {\n ...executionEnv,\n ...process.env, // To get PATH, etc.\n },\n });\n\n if (exitCode !== 0) {\n this.recordEvent(EVENT_EXECUTION_FAILURE, {\n exitCode,\n });\n actionsCore.setFailed(`non-zero exit code of ${exitCode} detected`);\n } else {\n actionsCore.info(`Flake release was successfully published`);\n }\n }\n}\n\nfunction main(): void {\n new FlakeHubPushAction().execute();\n}\n\nmain();\n"],"mappings":"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","names":[]} \ No newline at end of file +{"version":3,"sources":["../ts/index.ts"],"sourcesContent":["import * as actionsCore from \"@actions/core\";\nimport * as actionsExec from \"@actions/exec\";\nimport { DetSysAction, inputs } from \"detsys-ts\";\n\nconst EVENT_EXECUTION_FAILURE = \"execution_failure\";\n\ntype ExecutionEnvironment = {\n FLAKEHUB_PUSH_VISIBILITY?: string;\n FLAKEHUB_PUSH_TAG?: string;\n FLAKEHUB_PUSH_HOST?: string;\n FLAKEHUB_PUSH_LOG_DIRECTIVES?: string;\n FLAKEHUB_PUSH_LOGGER?: string;\n FLAKEHUB_PUSH_GITHUB_TOKEN?: string;\n FLAKEHUB_PUSH_NAME?: string;\n FLAKEHUB_PUSH_REPOSITORY?: string;\n FLAKEHUB_PUSH_DIRECTORY?: string;\n FLAKEHUB_PUSH_GIT_ROOT?: string;\n FLAKEHUB_PUSH_EXTRA_LABELS?: string;\n FLAKEHUB_PUSH_SPDX_EXPRESSION?: string;\n FLAKEHUB_PUSH_ERROR_ON_CONFLICT?: string;\n FLAKEHUB_PUSH_INCLUDE_OUTPUT_PATHS?: string;\n FLAKEHUB_PUSH_ROLLING?: string;\n FLAKEHUB_PUSH_MIRROR?: string;\n FLAKEHUB_PUSH_ROLLING_MINOR?: string;\n};\n\nclass FlakeHubPushAction extends DetSysAction {\n // Action inputs translated into environment variables to pass to flakehub-push\n private visibility: string;\n private tag: string;\n private host: string;\n private logDirectives: string;\n private logger: string;\n private gitHubToken: string;\n private repository: string;\n private directory: string;\n private gitRoot: string;\n private spdxExpression: string;\n private errorOnConflict: boolean;\n private includeOutputPaths: boolean;\n private rolling: boolean;\n private mirror: boolean;\n private name: string | null;\n private rollingMinor: number | null;\n\n constructor() {\n super({\n name: \"flakehub-push\",\n fetchStyle: \"gh-env-style\",\n diagnosticsSuffix: \"diagnostic\",\n legacySourcePrefix: \"flakehub-push\",\n requireNix: \"fail\",\n });\n\n // Inputs translated into environment variables for flakehub-push\n this.visibility = inputs.getString(\"visibility\");\n this.tag = inputs.getString(\"tag\");\n this.host = inputs.getString(\"host\");\n this.logDirectives = inputs.getString(\"log-directives\");\n this.logger = inputs.getString(\"logger\");\n this.gitHubToken = inputs.getString(\"github-token\");\n this.repository = inputs.getString(\"repository\");\n this.directory = inputs.getString(\"directory\");\n this.gitRoot = inputs.getString(\"git-root\");\n this.spdxExpression = inputs.getString(\"spdx-expression\");\n this.errorOnConflict = inputs.getBool(\"error-on-conflict\");\n this.includeOutputPaths = inputs.getBool(\"include-output-paths\");\n this.rolling = inputs.getBool(\"rolling\");\n this.mirror = inputs.getBool(\"mirror\");\n this.name = inputs.getStringOrNull(\"name\");\n this.rollingMinor = inputs.getNumberOrNull(\"rolling-minor\");\n }\n\n async main(): Promise {\n await this.pushFlakeToFlakeHub();\n }\n\n // No post step\n async post(): Promise {}\n\n // extra-tags is deprecated but we still honor it\n private get extraLabels(): string {\n const labels = inputs.getString(\"extra-labels\"); // current input name\n const tags = inputs.getString(\"extra-tags\"); // deprecated input name\n\n // If `extra-labels` is set to something use it, otherwise use `extra-tags`.\n // It `extra-tags` is also not set, which means that it's an empty string, that's\n // still valid, as the flakehub-push CLI expects a comma-separated list here.\n return labels !== \"\" ? labels : tags;\n }\n\n // We first check for a value using the `source-binary` input and fall back to the\n // now-deprecated `flakehub-push-binary`\n private get sourceBinary(): string | null {\n const sourceBinaryInput = inputs.getStringOrNull(\"source-binary\");\n const flakeHubPushBinaryInput = inputs.getStringOrNull(\n \"flakehub-push-binary\",\n );\n\n return sourceBinaryInput !== \"\"\n ? sourceBinaryInput\n : flakeHubPushBinaryInput;\n }\n\n private executionEnvironment(): ExecutionEnvironment {\n const env: ExecutionEnvironment = {};\n\n env.FLAKEHUB_PUSH_VISIBILITY = this.visibility;\n env.FLAKEHUB_PUSH_TAG = this.tag;\n env.FLAKEHUB_PUSH_HOST = this.host;\n env.FLAKEHUB_PUSH_LOG_DIRECTIVES = this.logDirectives;\n env.FLAKEHUB_PUSH_LOGGER = this.logger;\n env.FLAKEHUB_PUSH_GITHUB_TOKEN = this.gitHubToken;\n env.FLAKEHUB_PUSH_REPOSITORY = this.repository;\n env.FLAKEHUB_PUSH_DIRECTORY = this.directory;\n env.FLAKEHUB_PUSH_GIT_ROOT = this.gitRoot;\n // not included: the now-deprecated FLAKEHUB_PUSH_EXTRA_TAGS\n env.FLAKEHUB_PUSH_EXTRA_LABELS = this.extraLabels;\n env.FLAKEHUB_PUSH_SPDX_EXPRESSION = this.spdxExpression;\n env.FLAKEHUB_PUSH_ERROR_ON_CONFLICT = this.errorOnConflict.toString();\n env.FLAKEHUB_PUSH_INCLUDE_OUTPUT_PATHS = this.includeOutputPaths.toString();\n env.FLAKEHUB_PUSH_ROLLING = this.rolling.toString();\n env.FLAKEHUB_PUSH_MIRROR = this.mirror.toString();\n\n if (this.name !== null) {\n env.FLAKEHUB_PUSH_NAME = this.name;\n }\n\n if (this.rollingMinor !== null) {\n env.FLAKEHUB_PUSH_ROLLING_MINOR = this.rollingMinor.toString();\n }\n\n return env;\n }\n\n async pushFlakeToFlakeHub(): Promise {\n const executionEnv = this.executionEnvironment();\n\n const flakeHubPushBinary =\n this.sourceBinary !== null\n ? this.sourceBinary\n : await this.fetchExecutable();\n\n actionsCore.debug(\n `execution environment: ${JSON.stringify(executionEnv, null, 2)}`,\n );\n\n const exitCode = await actionsExec.exec(flakeHubPushBinary, [], {\n env: {\n ...executionEnv,\n ...process.env, // To get PATH, etc.\n },\n });\n\n if (exitCode !== 0) {\n this.recordEvent(EVENT_EXECUTION_FAILURE, {\n exitCode,\n });\n actionsCore.setFailed(`non-zero exit code of ${exitCode} detected`);\n } else {\n actionsCore.info(`Flake release was successfully published`);\n }\n }\n}\n\nfunction main(): void {\n new FlakeHubPushAction().execute();\n}\n\nmain();\n"],"mappings":"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","names":[]} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bde99f0..8920421 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ dependencies: version: 1.1.1 detsys-ts: specifier: github:DeterminateSystems/detsys-ts - version: github.com/DeterminateSystems/detsys-ts/5fcb0532d85556ebc2de286e483885976531339d + version: github.com/DeterminateSystems/detsys-ts/9d66d2c89c150f796165fdcc20b3be538807c0f4 devDependencies: '@trivago/prettier-plugin-sort-imports': @@ -326,7 +326,7 @@ packages: '@babel/helper-split-export-declaration': 7.24.6 '@babel/parser': 7.24.6 '@babel/types': 7.24.6 - debug: 4.3.4 + debug: 4.3.5 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -576,7 +576,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.5 espree: 9.6.1 globals: 13.24.0 ignore: 5.3.1 @@ -607,7 +607,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.4 + debug: 4.3.5 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -938,7 +938,7 @@ packages: '@typescript-eslint/types': 7.11.0 '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.11.0 - debug: 4.3.4 + debug: 4.3.5 eslint: 8.57.0 typescript: 5.4.5 transitivePeerDependencies: @@ -965,7 +965,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.4.5) '@typescript-eslint/utils': 7.11.0(eslint@8.57.0)(typescript@5.4.5) - debug: 4.3.4 + debug: 4.3.5 eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.4.5) typescript: 5.4.5 @@ -989,7 +989,7 @@ packages: dependencies: '@typescript-eslint/types': 7.11.0 '@typescript-eslint/visitor-keys': 7.11.0 - debug: 4.3.4 + debug: 4.3.5 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.4 @@ -1244,7 +1244,7 @@ packages: hasBin: true dependencies: caniuse-lite: 1.0.30001625 - electron-to-chromium: 1.4.784 + electron-to-chromium: 1.4.787 node-releases: 2.0.14 update-browserslist-db: 1.0.16(browserslist@4.23.0) dev: true @@ -1421,8 +1421,8 @@ packages: ms: 2.1.3 dev: true - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + /debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -1502,8 +1502,8 @@ packages: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium@1.4.784: - resolution: {integrity: sha512-9CZwh+sDrhDAeOEFh8s3PqwduzTyYIeYwZolc1b9ENAUt3ePu7R1sJSCWr/820ISssRxCJUyHI9Wb7j+0Uo1AA==} + /electron-to-chromium@1.4.787: + resolution: {integrity: sha512-d0EFmtLPjctczO3LogReyM2pbBiiZbnsKnGF+cdZhsYzHm/A0GV7W94kqzLD8SN4O3f3iHlgLUChqghgyznvCQ==} dev: true /emoji-regex@8.0.0: @@ -1709,7 +1709,7 @@ packages: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4 + debug: 4.3.5 enhanced-resolve: 5.16.1 eslint: 8.57.0 eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) @@ -1947,7 +1947,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.5 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -3537,7 +3537,7 @@ packages: bundle-require: 4.1.0(esbuild@0.19.12) cac: 6.7.14 chokidar: 3.6.0 - debug: 4.3.4 + debug: 4.3.5 esbuild: 0.19.12 execa: 5.1.1 globby: 11.1.0 @@ -3800,8 +3800,8 @@ packages: engines: {node: '>=10'} dev: true - github.com/DeterminateSystems/detsys-ts/5fcb0532d85556ebc2de286e483885976531339d: - resolution: {tarball: https://codeload.github.com/DeterminateSystems/detsys-ts/tar.gz/5fcb0532d85556ebc2de286e483885976531339d} + github.com/DeterminateSystems/detsys-ts/9d66d2c89c150f796165fdcc20b3be538807c0f4: + resolution: {tarball: https://codeload.github.com/DeterminateSystems/detsys-ts/tar.gz/9d66d2c89c150f796165fdcc20b3be538807c0f4} name: detsys-ts version: 1.0.0 dependencies: diff --git a/ts/index.ts b/ts/index.ts index 933ab8f..60025c4 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -47,9 +47,7 @@ class FlakeHubPushAction extends DetSysAction { super({ name: "flakehub-push", fetchStyle: "gh-env-style", - diagnosticsUrl: new URL( - "https://install.determinate.systems/flakehub-push/telemetry", - ), + diagnosticsSuffix: "diagnostic", legacySourcePrefix: "flakehub-push", requireNix: "fail", });