diff --git a/action.yml b/action.yml index d54a0ed..12a211a 100644 --- a/action.yml +++ b/action.yml @@ -45,7 +45,7 @@ outputs: runs: using: "node20" - main: ./dist/index.js + main: ./dist/action.js branding: icon: git-branch diff --git a/dist/index.js b/dist/index.js index f799e43..b6bbb57 100644 --- a/dist/index.js +++ b/dist/index.js @@ -556,8 +556,8 @@ class OidcClient { const res = yield httpclient .getJson(id_token_url) .catch(error => { - throw new Error(`Failed to get ID Token. \n - Error Code : ${error.statusCode}\n + throw new Error(`Failed to get ID Token. \n + Error Code : ${error.statusCode}\n Error Message: ${error.message}`); }); const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; @@ -30753,7 +30753,7 @@ module.exports = parseParams /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; -/******/ +/******/ /******/ // The require function /******/ function __nccwpck_require__(moduleId) { /******/ // Check if module is in cache @@ -30767,7 +30767,7 @@ module.exports = parseParams /******/ // no module.loaded needed /******/ exports: {} /******/ }; -/******/ +/******/ /******/ // Execute the module function /******/ var threw = true; /******/ try { @@ -30776,11 +30776,11 @@ module.exports = parseParams /******/ } finally { /******/ if(threw) delete __webpack_module_cache__[moduleId]; /******/ } -/******/ +/******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } -/******/ +/******/ /************************************************************************/ /******/ /* webpack/runtime/make namespace object */ /******/ (() => { @@ -30792,11 +30792,11 @@ module.exports = parseParams /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ })(); -/******/ +/******/ /******/ /* webpack/runtime/compat */ -/******/ +/******/ /******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/"; -/******/ +/******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry need to be wrapped in an IIFE because it need to be in strict mode. @@ -30811,6 +30811,51 @@ var core = __nccwpck_require__(2186); var github = __nccwpck_require__(5438); ;// CONCATENATED MODULE: external "process" const external_process_namespaceObject = require("process"); + ;// CONCATENATED MODULE: ./src/lib.js + + function result_to_output(results) { + for (const key in results) { + if (!results.hasOwnProperty(key)) { + continue; + } + const value = results[key]; + if (typeof value !== 'string') { + core.setOutput(key, JSON.stringify(value)); // TODO support nested objects with key chaining + } + else { + core.setOutput(key, value); + } + } + } + + ;// CONCATENATED MODULE: ./src/collect_ci.js + + + function collect_ci(debug = false, output = false) { + const r = { + ci_hostname: false + }; + + try { + const url = new URL(github.context.serverUrl); + r.ci_hostname = url.hostname; + + if (debug) { + console.log('results for output:', JSON.stringify(r, null, 2)); + } + if (output) { + result_to_output(r); + } + + return r; + } + catch (error) { + console.log('partial results before error: ', JSON.stringify(r, null, 2)); + core.setFailed(error.message); + external_process_namespaceObject.exit(1); + } + } + ;// CONCATENATED MODULE: ./node_modules/semver-parser/modules/common.js /** * common.js @@ -31082,28 +31127,10 @@ const promises = { */ - -;// CONCATENATED MODULE: ./src/gather.js + ;// CONCATENATED MODULE: ./src/collect_git.js - - - -function result_to_output(results) { - for (const key in results) { - if (!results.hasOwnProperty(key)) { - continue; - } - const value = results[key]; - if (typeof value !== "string") { - core.setOutput(key, JSON.stringify(value)); // TODO support nested objects with key chaining - } else { - core.setOutput(key, value); - } - } -} - -function gather_information(debug = false, output = false) { + function collect_git(debug = false, output = false) { const r = { git_is_branch: false, git_is_tag: false, @@ -31196,10 +31223,19 @@ function gather_information(debug = false, output = false) { ;// CONCATENATED MODULE: ./src/index.js -gather_information(true, true); + function collect_all(debug = false, output = false) { + collect_ci(debug, output); + collect_git(debug, output); + } + + + ;// CONCATENATED MODULE: ./src/action.js + + + collect_all(true, true); })(); module.exports = __webpack_exports__; /******/ })() -; \ No newline at end of file +; diff --git a/package.json b/package.json index f20fe77..b9f67e1 100644 --- a/package.json +++ b/package.json @@ -2,20 +2,20 @@ "name": "information", "version": "1.0.0", "description": "", - "main": "action.js", + "main": "dist/index.js", "scripts": { - "bundle": "npm run format:write && npm run package", + "bundle": "npm run package", "ci-test": "jest", "format:write": "prettier --write **/*.js", "format:check": "prettier --check **/*.js", "lint": "npx eslint . -c ./.github/linters/.eslintrc.yml", - "package": "ncc build src/index.js", + "package": "ncc build src/action.js", "package:watch": "npm run package -- --watch", "test": "(jest && make-coverage-badge --output-path ./badges/coverage.svg) || make-coverage-badge --output-path ./badges/coverage.svg", "all": "npm run format:write && npm run lint && npm run test && npm run package" }, "exports": { - ".": "./dist/index.js" + ".": "./src/index.js" }, "author": "", "license": "ISC", diff --git a/src/action.js b/src/action.js new file mode 100644 index 0000000..4780f69 --- /dev/null +++ b/src/action.js @@ -0,0 +1,3 @@ +import {collect_all} from './index'; + +collect_all(true, true); diff --git a/src/collect_ci.js b/src/collect_ci.js new file mode 100644 index 0000000..f69e82d --- /dev/null +++ b/src/collect_ci.js @@ -0,0 +1,29 @@ +import * as core from '@actions/core'; +import * as github from '@actions/github'; +import * as process from 'process'; +import {result_to_output} from './lib'; + +export function collect_ci(debug = false, output = false) { + const r = { + ci_hostname: false + }; + + try { + const url = new URL(github.context.serverUrl); + r.ci_hostname = url.hostname; + + if (debug) { + console.log('results for output:', JSON.stringify(r, null, 2)); + } + if (output) { + result_to_output(r); + } + + return r; + } + catch (error) { + console.log('partial results before error: ', JSON.stringify(r, null, 2)); + core.setFailed(error.message); + process.exit(1); + } +} diff --git a/src/collect_git.js b/src/collect_git.js new file mode 100644 index 0000000..53f072a --- /dev/null +++ b/src/collect_git.js @@ -0,0 +1,112 @@ +import * as core from '@actions/core'; +import * as github from '@actions/github'; +import * as process from 'process'; +import * as semverParser from 'semver-parser'; +import {result_to_output} from './lib'; + +export function collect_git(debug = false, output = false) { + const r = { + git_is_branch : false, + git_is_tag : false, + git_is_pull_request : false, + git_current_branch : false, + git_ref_branch : false, + git_is_default_branch: false, + git_tag : false, + semver_valid : false, + semver_major : false, + semver_minor : false, + semver_patch : false, + semver_build : false, + semver_pre : false + }; + + try { + const stripTagPrefix = core.getInput('strip_tag_prefix'); + + if (debug) { + console.log(JSON.stringify(github.context, null, 2)); + } + + r.git_is_tag = github.context.ref.startsWith('refs/tags/'); + r.git_default_branch = github.context.payload?.repository?.defaultBranch; + r.git_is_pull_request = github.context.payload.pull_request != null; + + if (r.git_is_pull_request) { + const baseRef = github.context.baseRef || process.env.BODY_REF; + const headRef = + github.context.payload?.pull_request?.head?.ref || process.env.HEAD_REF; + if (debug) { + console.log('baseRef=' + baseRef); + } + if (debug) { + console.log('headRef=' + headRef); + } + // TODO support PR data + } + else if (!r.git_is_tag) { + // regular branches + r.git_is_branch = true; + } + + // gather regular branch info + if (r.git_is_branch) { + if (!github.context.ref.startsWith('refs/heads/')) { + throw new Error( + 'Failed to determine branch for non-PR and non-Tag action' + ); + } + r.git_current_branch = github.context.ref.slice('refs/heads/'.length); + r.git_ref_branch = r.git_current_branch; // same as current branch for non-PR, non-Tag + r.git_is_default_branch = r.git_current_branch == r.git_default_branch; + } + + // parse semver for tags + if (r.git_is_tag) { + r.git_tag = github.context.ref.slice('refs/tags/'.length); + + const parsed = semverParser.parseSemVer(r.git_tag); + if (debug) { + console.log('semver=' + JSON.stringify(parsed)); + } + + if (parsed.matches) { + r.semver_valid = parsed.matches; + r.semver_major = parsed.major; + r.semver_minor = parsed.minor; + r.semver_patch = parsed.patch; + r.semver_build = parsed.build; + r.semver_pre = parsed.pre; + } + } + else if (r.git_is_branch) { + const parsed = semverParser.parseSemVer(r.git_current_branch); + if (debug) { + console.log('semver=' + JSON.stringify(parsed)); + } + + if (parsed.matches) { + r.semver_valid = parsed.matches; + r.semver_major = parsed.major; + r.semver_minor = parsed.minor; + r.semver_patch = parsed.patch; + r.semver_build = parsed.build; + r.semver_pre = parsed.pre; + } + } + + if (debug) { + console.log('results for output:', JSON.stringify(r, null, 2)); + } + if (output) { + result_to_output(r); + } + + return r; + } + catch (error) { + console.log("partial results before error: ", JSON.stringify(r, null, 2)); + core.setFailed(error.message); + process.exit(1); + } +} diff --git a/src/gather.js b/src/gather.js deleted file mode 100644 index 6ba0303..0000000 --- a/src/gather.js +++ /dev/null @@ -1,108 +0,0 @@ -import * as core from "@actions/core"; -import * as github from "@actions/github"; -import * as process from "process"; -import * as semverParser from "semver-parser"; - -export function result_to_output(results) { - for (const key in results) { - if (!results.hasOwnProperty(key)) { - continue; - } - const value = results[key]; - if (typeof value !== "string") { - core.setOutput(key, JSON.stringify(value)); // TODO support nested objects with key chaining - } else { - core.setOutput(key, value); - } - } -} - -export function gather_information(debug = false, output = false) { - const r = { - git_is_branch: false, - git_is_tag: false, - git_is_pull_request: false, - git_current_branch: false, - git_ref_branch: false, - git_is_default_branch: false, - git_tag: false, - semver_valid: false, - semver_major: false, - semver_minor: false, - semver_patch: false, - semver_build: false, - semver_pre: false, - }; - - try { - const stripTagPrefix = core.getInput("strip_tag_prefix"); - - if (debug) console.log(JSON.stringify(github.context, null, 2)); - - r.git_is_tag = github.context.ref.startsWith("refs/tags/"); - r.git_default_branch = github.context.payload?.repository?.defaultBranch; - r.git_is_pull_request = github.context.payload.pull_request != null; - - if (r.git_is_pull_request) { - const baseRef = github.context.baseRef || process.env.BODY_REF; - const headRef = - github.context.payload?.pull_request?.head?.ref || process.env.HEAD_REF; - if (debug) console.log("baseRef=" + baseRef); - if (debug) console.log("headRef=" + headRef); - // TODO support PR data - } else if (!r.git_is_tag) { - // regular branches - r.git_is_branch = true; - } - - // gather regular branch info - if (r.git_is_branch) { - if (!github.context.ref.startsWith("refs/heads/")) { - throw new Error( - "Failed to determine branch for non-PR and non-Tag action", - ); - } - r.git_current_branch = github.context.ref.slice("refs/heads/".length); - r.git_ref_branch = r.git_current_branch; // same as current branch for non-PR, non-Tag - r.git_is_default_branch = r.git_current_branch == r.git_default_branch; - } - - // parse semver for tags - if (r.git_is_tag) { - r.git_tag = github.context.ref.slice("refs/tags/".length); - - const parsed = semverParser.parseSemVer(r.git_tag); - if (debug) console.log("semver=" + JSON.stringify(parsed)); - - if (parsed.matches) { - r.semver_valid = parsed.matches; - r.semver_major = parsed.major; - r.semver_minor = parsed.minor; - r.semver_patch = parsed.patch; - r.semver_build = parsed.build; - r.semver_pre = parsed.pre; - } - } else if (r.git_is_branch) { - const parsed = semverParser.parseSemVer(r.git_current_branch); - if (debug) console.log("semver=" + JSON.stringify(parsed)); - - if (parsed.matches) { - r.semver_valid = parsed.matches; - r.semver_major = parsed.major; - r.semver_minor = parsed.minor; - r.semver_patch = parsed.patch; - r.semver_build = parsed.build; - r.semver_pre = parsed.pre; - } - } - - if (debug) console.log("results for output:", JSON.stringify(r, null, 2)); - if (output) result_to_output(r); - - return r; - } catch (error) { - console.log("partial results before error: ", JSON.stringify(r, null, 2)); - core.setFailed(error.message); - process.exit(1); - } -} diff --git a/src/index.js b/src/index.js index 844ee53..c4d5d86 100644 --- a/src/index.js +++ b/src/index.js @@ -1,3 +1,12 @@ -import * as gather from "./gather"; +import {collect_ci} from './collect_ci'; +import {collect_git} from './collect_git'; + +export {result_to_output} from './lib'; +export {collect_git} from './collect_git'; +export {collect_ci} from './collect_ci'; + +export function collect_all(debug = false, output = false) { + collect_ci(debug, output); + collect_git(debug, output); +} -gather.gather_information(true, true); diff --git a/src/lib.js b/src/lib.js new file mode 100644 index 0000000..3a79779 --- /dev/null +++ b/src/lib.js @@ -0,0 +1,16 @@ +import * as core from '@actions/core'; + +export function result_to_output(results) { + for (const key in results) { + if (!results.hasOwnProperty(key)) { + continue; + } + const value = results[key]; + if (typeof value !== 'string') { + core.setOutput(key, JSON.stringify(value)); // TODO support nested objects with key chaining + } + else { + core.setOutput(key, value); + } + } +}