From a273a2834ba9b285af6f6aca10af2219dbce0d0b Mon Sep 17 00:00:00 2001 From: Luc Perkins Date: Sun, 21 Apr 2024 18:02:46 -0300 Subject: [PATCH 1/5] Fix environment variable name for flake visibility --- action.yaml | 118 ++++++++++++++++++++++++------------------------- src/cli/mod.rs | 2 +- 2 files changed, 60 insertions(+), 60 deletions(-) diff --git a/action.yaml b/action.yaml index e1c16913..48e160b9 100644 --- a/action.yaml +++ b/action.yaml @@ -102,68 +102,68 @@ inputs: runs: using: composite steps: - - name: Install `flakehub-push` - shell: bash - env: - FLAKEHUB_PUSH_VISIBLITY: ${{ inputs.visibility }} - FLAKEHUB_PUSH_TAG: ${{ inputs.tag }} - FLAKEHUB_PUSH_ROLLING_MINOR: ${{ inputs.rolling-minor }} - FLAKEHUB_PUSH_ROLLING: ${{ inputs.rolling }} - FLAKEHUB_PUSH_HOST: ${{ inputs.host }} - FLAKEHUB_PUSH_LOG_DIRECTIVES: ${{ inputs.log-directives }} - FLAKEHUB_PUSH_LOGGER: ${{ inputs.logger }} - FLAKEHUB_PUSH_GITHUB_TOKEN: ${{ inputs.github-token }} - FLAKEHUB_PUSH_NAME: ${{ inputs.name }} - FLAKEHUB_PUSH_MIRROR: ${{ inputs.mirror }} - FLAKEHUB_PUSH_REPOSITORY: ${{ inputs.repository }} - FLAKEHUB_PUSH_DIRECTORY: ${{ inputs.directory }} - FLAKEHUB_PUSH_GIT_ROOT: ${{ inputs.git-root }} - FLAKEHUB_PUSH_EXTRA_LABELS: ${{ inputs.extra-labels }} - FLAKEHUB_PUSH_EXTRA_TAGS: ${{ inputs.extra-tags }} - FLAKEHUB_PUSH_SPDX_EXPRESSION: ${{ inputs.spdx-expression }} - FLAKEHUB_PUSH_ERROR_ON_CONFLICT: ${{ inputs.error-on-conflict }} - FLAKEHUB_PUSH_INCLUDE_OUTPUT_PATHS: ${{ inputs.include-output-paths }} - # Also GITHUB_REPOSITORY, GITHUB_REF_NAME, GITHUB_TOKEN, ACTIONS_ID_TOKEN_REQUEST_TOKEN, ACTIONS_ID_TOKEN_REQUEST_URL - run: | - if [ "${RUNNER_OS}" == "Linux" ]; then - export ARCHITECTURE_OS="Linux" - else - echo "${RUNNER_OS} not supported" - exit 1 - fi + - name: Install `flakehub-push` + shell: bash + env: + FLAKEHUB_PUSH_VISIBILITY: ${{ inputs.visibility }} + FLAKEHUB_PUSH_TAG: ${{ inputs.tag }} + FLAKEHUB_PUSH_ROLLING_MINOR: ${{ inputs.rolling-minor }} + FLAKEHUB_PUSH_ROLLING: ${{ inputs.rolling }} + FLAKEHUB_PUSH_HOST: ${{ inputs.host }} + FLAKEHUB_PUSH_LOG_DIRECTIVES: ${{ inputs.log-directives }} + FLAKEHUB_PUSH_LOGGER: ${{ inputs.logger }} + FLAKEHUB_PUSH_GITHUB_TOKEN: ${{ inputs.github-token }} + FLAKEHUB_PUSH_NAME: ${{ inputs.name }} + FLAKEHUB_PUSH_MIRROR: ${{ inputs.mirror }} + FLAKEHUB_PUSH_REPOSITORY: ${{ inputs.repository }} + FLAKEHUB_PUSH_DIRECTORY: ${{ inputs.directory }} + FLAKEHUB_PUSH_GIT_ROOT: ${{ inputs.git-root }} + FLAKEHUB_PUSH_EXTRA_LABELS: ${{ inputs.extra-labels }} + FLAKEHUB_PUSH_EXTRA_TAGS: ${{ inputs.extra-tags }} + FLAKEHUB_PUSH_SPDX_EXPRESSION: ${{ inputs.spdx-expression }} + FLAKEHUB_PUSH_ERROR_ON_CONFLICT: ${{ inputs.error-on-conflict }} + FLAKEHUB_PUSH_INCLUDE_OUTPUT_PATHS: ${{ inputs.include-output-paths }} + # Also GITHUB_REPOSITORY, GITHUB_REF_NAME, GITHUB_TOKEN, ACTIONS_ID_TOKEN_REQUEST_TOKEN, ACTIONS_ID_TOKEN_REQUEST_URL + run: | + if [ "${RUNNER_OS}" == "Linux" ]; then + export ARCHITECTURE_OS="Linux" + else + echo "${RUNNER_OS} not supported" + exit 1 + fi - if [ "${RUNNER_ARCH}" == "X64" ]; then - export ARCHITECTURE_ARCH="X64" - else - echo "${RUNNER_ARCH} not supported" - exit 1 - fi + if [ "${RUNNER_ARCH}" == "X64" ]; then + export ARCHITECTURE_ARCH="X64" + else + echo "${RUNNER_ARCH} not supported" + exit 1 + fi - export ARCHITECTURE="${ARCHITECTURE_ARCH}-${ARCHITECTURE_OS}" + export ARCHITECTURE="${ARCHITECTURE_ARCH}-${ARCHITECTURE_OS}" - if [ -n "${{ inputs.flakehub-push-url }}" ]; then - export FLAKEHUB_PUSH_URL="${{ inputs.flakehub-push-url }}" - else - if [ -n "${{ inputs.flakehub-push-pr }}" ]; then - export FLAKEHUB_PUSH_URL="https://install.determinate.systems/flakehub-push/pr/${{ inputs.flakehub-push-pr }}/${ARCHITECTURE}?ci=github" - elif [ -n "${{ inputs.flakehub-push-tag }}" ]; then - export FLAKEHUB_PUSH_URL="https://install.determinate.systems/flakehub-push/tag/${{ inputs.flakehub-push-tag }}/${ARCHITECTURE}?ci=github" - elif [ -n "${{ inputs.flakehub-push-revision }}" ]; then - export FLAKEHUB_PUSH_URL="https://install.determinate.systems/flakehub-push/rev/${{ inputs.flakehub-push-revision }}/${ARCHITECTURE}?ci=github" - elif [ -n "${{ inputs.flakehub-push-branch }}" ]; then - export FLAKEHUB_PUSH_URL="https://install.determinate.systems/flakehub-push/branch/${{ inputs.flakehub-push-branch }}/${ARCHITECTURE}?ci=github" + if [ -n "${{ inputs.flakehub-push-url }}" ]; then + export FLAKEHUB_PUSH_URL="${{ inputs.flakehub-push-url }}" else - export FLAKEHUB_PUSH_URL="https://install.determinate.systems/flakehub-push/stable/${ARCHITECTURE}?ci=github" + if [ -n "${{ inputs.flakehub-push-pr }}" ]; then + export FLAKEHUB_PUSH_URL="https://install.determinate.systems/flakehub-push/pr/${{ inputs.flakehub-push-pr }}/${ARCHITECTURE}?ci=github" + elif [ -n "${{ inputs.flakehub-push-tag }}" ]; then + export FLAKEHUB_PUSH_URL="https://install.determinate.systems/flakehub-push/tag/${{ inputs.flakehub-push-tag }}/${ARCHITECTURE}?ci=github" + elif [ -n "${{ inputs.flakehub-push-revision }}" ]; then + export FLAKEHUB_PUSH_URL="https://install.determinate.systems/flakehub-push/rev/${{ inputs.flakehub-push-revision }}/${ARCHITECTURE}?ci=github" + elif [ -n "${{ inputs.flakehub-push-branch }}" ]; then + export FLAKEHUB_PUSH_URL="https://install.determinate.systems/flakehub-push/branch/${{ inputs.flakehub-push-branch }}/${ARCHITECTURE}?ci=github" + else + export FLAKEHUB_PUSH_URL="https://install.determinate.systems/flakehub-push/stable/${ARCHITECTURE}?ci=github" + fi fi - fi - echo "Set FLAKEHUB_PUSH_URL=$FLAKEHUB_PUSH_URL" + echo "Set FLAKEHUB_PUSH_URL=$FLAKEHUB_PUSH_URL" - if [ -n "${{ inputs.flakehub-push-binary }}" ]; then - chmod +x ${{ inputs.flakehub-push-binary }} - exec ${{ inputs.flakehub-push-binary }} - else - DEST=$(mktemp -d) - curl --retry 20 -L $FLAKEHUB_PUSH_URL -o $DEST/flakehub-push - chmod +x $DEST/flakehub-push - exec $DEST/flakehub-push - fi + if [ -n "${{ inputs.flakehub-push-binary }}" ]; then + chmod +x ${{ inputs.flakehub-push-binary }} + exec ${{ inputs.flakehub-push-binary }} + else + DEST=$(mktemp -d) + curl --retry 20 -L $FLAKEHUB_PUSH_URL -o $DEST/flakehub-push + chmod +x $DEST/flakehub-push + exec $DEST/flakehub-push + fi diff --git a/src/cli/mod.rs b/src/cli/mod.rs index b330b2b5..38171ce2 100644 --- a/src/cli/mod.rs +++ b/src/cli/mod.rs @@ -26,7 +26,7 @@ pub(crate) struct FlakeHubPushCli { default_value = "https://api.flakehub.com" )] pub(crate) host: url::Url, - #[clap(long, env = "FLAKEHUB_PUSH_VISIBLITY")] + #[clap(long, env = "FLAKEHUB_PUSH_VISIBILITY")] pub(crate) visibility: crate::Visibility, // Will also detect `GITHUB_REF_NAME` #[clap(long, env = "FLAKEHUB_PUSH_TAG", value_parser = StringToNoneParser, default_value = "")] From 403d34d4b658f88e552bcdb1d14b1e99a6beb8e1 Mon Sep 17 00:00:00 2001 From: Luc Perkins Date: Sun, 21 Apr 2024 20:04:12 -0300 Subject: [PATCH 2/5] Support both spellings of the var name --- src/cli/mod.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/cli/mod.rs b/src/cli/mod.rs index 38171ce2..cd3c123f 100644 --- a/src/cli/mod.rs +++ b/src/cli/mod.rs @@ -26,8 +26,14 @@ pub(crate) struct FlakeHubPushCli { default_value = "https://api.flakehub.com" )] pub(crate) host: url::Url, + #[clap(long, env = "FLAKEHUB_PUSH_VISIBILITY")] pub(crate) visibility: crate::Visibility, + // This was the original env var to set this value. As you can see, we previously misspelled it. + // We need to continue to support it just in case. + #[clap(long, env = "FLAKEHUB_PUSH_VISIBLITY")] + pub(crate) visibility_alt: Option, + // Will also detect `GITHUB_REF_NAME` #[clap(long, env = "FLAKEHUB_PUSH_TAG", value_parser = StringToNoneParser, default_value = "")] pub(crate) tag: OptionString, @@ -310,6 +316,7 @@ impl FlakeHubPushCli { let Self { host, visibility, + visibility_alt, name, tag, rolling, @@ -326,8 +333,13 @@ impl FlakeHubPushCli { extra_tags, error_on_conflict, include_output_paths, + .. } = self; + // Check for the misspelled env var value first (FLAKEHUB_PUSH_VISIBLITY) and use the properly + // spelled env var value (FLAKEHUB_PUSH_VISIBILITY) if not. + let visibility = visibility_alt.unwrap_or(visibility); + let mut labels: HashSet<_> = extra_labels.into_iter().filter(|v| !v.is_empty()).collect(); let extra_tags: HashSet<_> = extra_tags.into_iter().filter(|v| !v.is_empty()).collect(); From 2bd1efc9b57e5a7f426b9a67529664745e2c16cf Mon Sep 17 00:00:00 2001 From: Luc Perkins Date: Wed, 24 Apr 2024 12:19:19 -0300 Subject: [PATCH 3/5] Make both visibility settings Options --- src/cli/mod.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/cli/mod.rs b/src/cli/mod.rs index cd3c123f..b7d1611e 100644 --- a/src/cli/mod.rs +++ b/src/cli/mod.rs @@ -28,7 +28,7 @@ pub(crate) struct FlakeHubPushCli { pub(crate) host: url::Url, #[clap(long, env = "FLAKEHUB_PUSH_VISIBILITY")] - pub(crate) visibility: crate::Visibility, + pub(crate) visibility: Option, // This was the original env var to set this value. As you can see, we previously misspelled it. // We need to continue to support it just in case. #[clap(long, env = "FLAKEHUB_PUSH_VISIBLITY")] @@ -287,6 +287,7 @@ impl FlakeHubPushCli { fields( host = %self.host, visibility = ?self.visibility, + visibility_alt = ?self.visibility_alt, name = self.name.0, tag = tracing::field::Empty, rolling_minor = tracing::field::Empty, @@ -338,7 +339,14 @@ impl FlakeHubPushCli { // Check for the misspelled env var value first (FLAKEHUB_PUSH_VISIBLITY) and use the properly // spelled env var value (FLAKEHUB_PUSH_VISIBILITY) if not. - let visibility = visibility_alt.unwrap_or(visibility); + let visibility = + match (visibility_alt, visibility) { + (Some(v), _) => v, + (None, Some(v)) => v, + (None, None) => return Err(eyre!( + "Could not determine the flake's desired visibility. Use `--visibility` to set this to one of the following: public, unlisted, private", + )), + }; let mut labels: HashSet<_> = extra_labels.into_iter().filter(|v| !v.is_empty()).collect(); let extra_tags: HashSet<_> = extra_tags.into_iter().filter(|v| !v.is_empty()).collect(); From 1bafd43752c8e50f7b3954378d6b26ae3bfee86b Mon Sep 17 00:00:00 2001 From: Luc Perkins Date: Wed, 24 Apr 2024 12:19:39 -0300 Subject: [PATCH 4/5] Add missing period in log message --- src/cli/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cli/mod.rs b/src/cli/mod.rs index b7d1611e..31fb429e 100644 --- a/src/cli/mod.rs +++ b/src/cli/mod.rs @@ -344,7 +344,7 @@ impl FlakeHubPushCli { (Some(v), _) => v, (None, Some(v)) => v, (None, None) => return Err(eyre!( - "Could not determine the flake's desired visibility. Use `--visibility` to set this to one of the following: public, unlisted, private", + "Could not determine the flake's desired visibility. Use `--visibility` to set this to one of the following: public, unlisted, private.", )), }; From d70933ea28f69a650f809d98e2cd150c7b8fcd1a Mon Sep 17 00:00:00 2001 From: Luc Perkins Date: Wed, 24 Apr 2024 12:40:11 -0300 Subject: [PATCH 5/5] Reinstate commented-out TS --- dist/index.js | 19 +++++++------------ dist/index.js.map | 2 +- ts/index.ts | 24 +++++++----------------- 3 files changed, 15 insertions(+), 30 deletions(-) diff --git a/dist/index.js b/dist/index.js index 58ed9f33..d9e45f12 100644 --- a/dist/index.js +++ b/dist/index.js @@ -94311,6 +94311,7 @@ var FlakeHubPushAction = class { } executionEnvironment() { const env = {}; + env.FLAKEHUB_PUSH_VISIBILITY = this.visibility; env.FLAKEHUB_PUSH_TAG = this.tag; env.FLAKEHUB_PUSH_HOST = this.host; env.FLAKEHUB_PUSH_LOG_DIRECTIVES = this.logDirectives; @@ -94339,19 +94340,13 @@ var FlakeHubPushAction = class { core.debug( `execution environment: ${JSON.stringify(executionEnv, null, 2)}` ); - const exitCode = await exec.exec( - binary, - // We're setting this via flag for now due to a misspelling in the original environment variable. - // Remove this in favor of the environment variable only after PR #125 is merged. - ["--visibility", this.visibility], - { - env: { - ...executionEnv, - ...process.env - // To get PATH, etc. - } + const exitCode = await exec.exec(binary, [], { + env: { + ...executionEnv, + ...process.env + // To get PATH, etc. } - ); + }); if (exitCode !== 0) { this.idslib.recordEvent(EVENT_EXECUTION_FAILURE, { exitCode diff --git a/dist/index.js.map b/dist/index.js.map index 3a632564..9dbd32fb 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 { ActionOptions, IdsToolbox, inputs } from \"detsys-ts\";\n\nconst EVENT_EXECUTION_FAILURE = \"execution_failure\";\n\ntype ExecutionEnvironment = {\n // This needs to remain commented out until PR #25 is merged to prevent any\n // potential issues with setting this via flag instead (see below)\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 {\n idslib: IdsToolbox;\n\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 const options: ActionOptions = {\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 this.idslib = new IdsToolbox(options);\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 // 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 // This needs to remain commented out until PR #25 is merged to prevent any\n // potential issues with setting this via flag instead (see below)\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 push(): Promise {\n const executionEnv = this.executionEnvironment();\n\n const binary =\n this.sourceBinary !== null\n ? this.sourceBinary\n : await this.idslib.fetchExecutable();\n\n actionsCore.debug(\n `execution environment: ${JSON.stringify(executionEnv, null, 2)}`,\n );\n\n const exitCode = await actionsExec.exec(\n binary,\n // We're setting this via flag for now due to a misspelling in the original environment variable.\n // Remove this in favor of the environment variable only after PR #125 is merged.\n [\"--visibility\", this.visibility],\n {\n env: {\n ...executionEnv,\n ...process.env, // To get PATH, etc.\n },\n },\n );\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 release was successfully published`);\n }\n }\n}\n\nfunction main(): void {\n const flakeHubPush = new FlakeHubPushAction();\n\n flakeHubPush.idslib.onMain(async () => {\n await flakeHubPush.push();\n });\n\n flakeHubPush.idslib.execute();\n}\n\nmain();\n"],"mappings":";AAAA,YAAY,iBAAiB;AAC7B,YAAY,iBAAiB;AAC7B,SAAwB,YAAY,cAAc;AAElD,IAAM,0BAA0B;AAwBhC,IAAM,qBAAN,MAAyB;AAAA,EAqBvB,cAAc;AACZ,UAAM,UAAyB;AAAA,MAC7B,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,gBAAgB,IAAI;AAAA,QAClB;AAAA,MACF;AAAA,MACA,oBAAoB;AAAA,MACpB,YAAY;AAAA,IACd;AAEA,SAAK,SAAS,IAAI,WAAW,OAAO;AAGpC,SAAK,aAAa,OAAO,UAAU,YAAY;AAC/C,SAAK,MAAM,OAAO,UAAU,KAAK;AACjC,SAAK,OAAO,OAAO,UAAU,MAAM;AACnC,SAAK,gBAAgB,OAAO,UAAU,gBAAgB;AACtD,SAAK,SAAS,OAAO,UAAU,QAAQ;AACvC,SAAK,cAAc,OAAO,UAAU,cAAc;AAClD,SAAK,aAAa,OAAO,UAAU,YAAY;AAC/C,SAAK,YAAY,OAAO,UAAU,WAAW;AAC7C,SAAK,UAAU,OAAO,UAAU,UAAU;AAC1C,SAAK,iBAAiB,OAAO,UAAU,iBAAiB;AACxD,SAAK,kBAAkB,OAAO,QAAQ,mBAAmB;AACzD,SAAK,qBAAqB,OAAO,QAAQ,sBAAsB;AAC/D,SAAK,UAAU,OAAO,QAAQ,SAAS;AACvC,SAAK,SAAS,OAAO,QAAQ,QAAQ;AACrC,SAAK,OAAO,OAAO,gBAAgB,MAAM;AACzC,SAAK,eAAe,OAAO,gBAAgB,eAAe;AAAA,EAC5D;AAAA;AAAA,EAGA,IAAY,cAAsB;AAChC,UAAM,SAAS,OAAO,UAAU,cAAc;AAC9C,UAAM,OAAO,OAAO,UAAU,YAAY;AAK1C,WAAO,WAAW,KAAK,SAAS;AAAA,EAClC;AAAA;AAAA;AAAA,EAIA,IAAY,eAA8B;AACxC,UAAM,oBAAoB,OAAO,gBAAgB,eAAe;AAChE,UAAM,0BAA0B,OAAO;AAAA,MACrC;AAAA,IACF;AAEA,WAAO,sBAAsB,KACzB,oBACA;AAAA,EACN;AAAA,EAEQ,uBAA6C;AACnD,UAAM,MAA4B,CAAC;AAKnC,QAAI,oBAAoB,KAAK;AAC7B,QAAI,qBAAqB,KAAK;AAC9B,QAAI,+BAA+B,KAAK;AACxC,QAAI,uBAAuB,KAAK;AAChC,QAAI,6BAA6B,KAAK;AACtC,QAAI,2BAA2B,KAAK;AACpC,QAAI,0BAA0B,KAAK;AACnC,QAAI,yBAAyB,KAAK;AAElC,QAAI,6BAA6B,KAAK;AACtC,QAAI,gCAAgC,KAAK;AACzC,QAAI,kCAAkC,KAAK,gBAAgB,SAAS;AACpE,QAAI,qCAAqC,KAAK,mBAAmB,SAAS;AAC1E,QAAI,wBAAwB,KAAK,QAAQ,SAAS;AAClD,QAAI,uBAAuB,KAAK,OAAO,SAAS;AAEhD,QAAI,KAAK,SAAS,MAAM;AACtB,UAAI,qBAAqB,KAAK;AAAA,IAChC;AAEA,QAAI,KAAK,iBAAiB,MAAM;AAC9B,UAAI,8BAA8B,KAAK,aAAa,SAAS;AAAA,IAC/D;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAsB;AAC1B,UAAM,eAAe,KAAK,qBAAqB;AAE/C,UAAM,SACJ,KAAK,iBAAiB,OAClB,KAAK,eACL,MAAM,KAAK,OAAO,gBAAgB;AAExC,IAAY;AAAA,MACV,0BAA0B,KAAK,UAAU,cAAc,MAAM,CAAC,CAAC;AAAA,IACjE;AAEA,UAAM,WAAW,MAAkB;AAAA,MACjC;AAAA;AAAA;AAAA,MAGA,CAAC,gBAAgB,KAAK,UAAU;AAAA,MAChC;AAAA,QACE,KAAK;AAAA,UACH,GAAG;AAAA,UACH,GAAG,QAAQ;AAAA;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAEA,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,eAAe,IAAI,mBAAmB;AAE5C,eAAa,OAAO,OAAO,YAAY;AACrC,UAAM,aAAa,KAAK;AAAA,EAC1B,CAAC;AAED,eAAa,OAAO,QAAQ;AAC9B;AAEA,KAAK;","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 { ActionOptions, IdsToolbox, 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 {\n idslib: IdsToolbox;\n\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 const options: ActionOptions = {\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 this.idslib = new IdsToolbox(options);\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 // 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 push(): Promise {\n const executionEnv = this.executionEnvironment();\n\n const binary =\n this.sourceBinary !== null\n ? this.sourceBinary\n : await this.idslib.fetchExecutable();\n\n actionsCore.debug(\n `execution environment: ${JSON.stringify(executionEnv, null, 2)}`,\n );\n\n const exitCode = await actionsExec.exec(binary, [], {\n env: {\n ...executionEnv,\n ...process.env, // To get PATH, etc.\n },\n });\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 release was successfully published`);\n }\n }\n}\n\nfunction main(): void {\n const flakeHubPush = new FlakeHubPushAction();\n\n flakeHubPush.idslib.onMain(async () => {\n await flakeHubPush.push();\n });\n\n flakeHubPush.idslib.execute();\n}\n\nmain();\n"],"mappings":"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","names":[]} \ No newline at end of file diff --git a/ts/index.ts b/ts/index.ts index cc2afc47..6549494a 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -5,9 +5,7 @@ import { ActionOptions, IdsToolbox, inputs } from "detsys-ts"; const EVENT_EXECUTION_FAILURE = "execution_failure"; type ExecutionEnvironment = { - // This needs to remain commented out until PR #25 is merged to prevent any - // potential issues with setting this via flag instead (see below) - //FLAKEHUB_PUSH_VISIBILITY?: string; + FLAKEHUB_PUSH_VISIBILITY?: string; FLAKEHUB_PUSH_TAG?: string; FLAKEHUB_PUSH_HOST?: string; FLAKEHUB_PUSH_LOG_DIRECTIVES?: string; @@ -106,9 +104,7 @@ class FlakeHubPushAction { private executionEnvironment(): ExecutionEnvironment { const env: ExecutionEnvironment = {}; - // This needs to remain commented out until PR #25 is merged to prevent any - // potential issues with setting this via flag instead (see below) - //env.FLAKEHUB_PUSH_VISIBILITY = this.visibility; + env.FLAKEHUB_PUSH_VISIBILITY = this.visibility; env.FLAKEHUB_PUSH_TAG = this.tag; env.FLAKEHUB_PUSH_HOST = this.host; env.FLAKEHUB_PUSH_LOG_DIRECTIVES = this.logDirectives; @@ -148,18 +144,12 @@ class FlakeHubPushAction { `execution environment: ${JSON.stringify(executionEnv, null, 2)}`, ); - const exitCode = await actionsExec.exec( - binary, - // We're setting this via flag for now due to a misspelling in the original environment variable. - // Remove this in favor of the environment variable only after PR #125 is merged. - ["--visibility", this.visibility], - { - env: { - ...executionEnv, - ...process.env, // To get PATH, etc. - }, + const exitCode = await actionsExec.exec(binary, [], { + env: { + ...executionEnv, + ...process.env, // To get PATH, etc. }, - ); + }); if (exitCode !== 0) { this.idslib.recordEvent(EVENT_EXECUTION_FAILURE, {