From 7007251a74ee98a258eb60489257c4897c2678bf Mon Sep 17 00:00:00 2001 From: Arunvel Sriram Date: Sun, 25 Oct 2020 15:50:43 +0530 Subject: [PATCH] feat: Add install-only option for using goreleaser in user scripts --- README.md | 16 ++++++++++++++++ action.yml | 6 +++++- dist/index.js | 11 ++++++++++- src/main.ts | 11 ++++++++++- 4 files changed, 41 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e92c68b0..7a935821 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ ___ * [Workflow](#workflow) * [Run on new tag](#run-on-new-tag) * [Signing](#signing) + * [Install Only](#install-only) * [Customizing](#customizing) * [inputs](#inputs) * [environment variables](#environment-variables) @@ -120,6 +121,20 @@ signs: args: ["--batch", "-u", "{{ .Env.GPG_FINGERPRINT }}", "--output", "${signature}", "--detach-sign", "${artifact}"] ``` +### Install Only + +```yaml +steps: + - + name: Install GoReleaser + uses: goreleaser/goreleaser-action@v2 + with: + install-only: true + - + name: Show GoReleaser version + run: goreleaser -v +``` + ## Customizing ### inputs @@ -131,6 +146,7 @@ Following inputs can be used as `step.with` keys | `version`**ยน** | String | `latest` | GoReleaser version | | `args` | String | | Arguments to pass to GoReleaser | | `workdir` | String | `.` | Working directory (below repository root) | +| `install-only` | Bool | `false` | Just install GoReleaser | > **ยน** Can be a fixed version like `v0.117.0` or a max satisfying semver one like `~> 0.132`. In this case this will return `v0.132.1`. diff --git a/action.yml b/action.yml index 051b0f31..7492944d 100644 --- a/action.yml +++ b/action.yml @@ -11,9 +11,13 @@ inputs: description: 'GoReleaser version' default: 'latest' required: false + install-only: + description: 'Just install GoReleaser' + default: 'false' + required: false args: description: 'Arguments to pass to GoReleaser' - required: true + required: true # not required when install-only=true workdir: description: 'Working directory (below repository root)' default: '.' diff --git a/dist/index.js b/dist/index.js index 6f5d5320..7bb77709 100644 --- a/dist/index.js +++ b/dist/index.js @@ -339,13 +339,22 @@ const git = __importStar(__webpack_require__(374)); const installer = __importStar(__webpack_require__(480)); const core = __importStar(__webpack_require__(186)); const exec = __importStar(__webpack_require__(514)); +const path_1 = __webpack_require__(622); function run() { return __awaiter(this, void 0, void 0, function* () { try { const version = core.getInput('version') || 'latest'; - const args = core.getInput('args', { required: true }); + const isInstallOnly = /^true$/i.test(core.getInput('install-only')); const workdir = core.getInput('workdir') || '.'; const goreleaser = yield installer.getGoReleaser(version); + core.info(`โœ… GoReleaser installed successfully`); + if (isInstallOnly) { + const goreleaserDir = path_1.dirname(goreleaser); + core.addPath(goreleaserDir); + core.debug(`Added ${goreleaserDir} to PATH`); + return; + } + const args = core.getInput('args', { required: true }); if (workdir && workdir !== '.') { core.info(`๐Ÿ“‚ Using ${workdir} as working directory...`); process.chdir(workdir); diff --git a/src/main.ts b/src/main.ts index eee5af93..33dcc5be 100644 --- a/src/main.ts +++ b/src/main.ts @@ -2,13 +2,22 @@ import * as git from './git'; import * as installer from './installer'; import * as core from '@actions/core'; import * as exec from '@actions/exec'; +import {dirname} from 'path'; async function run(): Promise { try { const version = core.getInput('version') || 'latest'; - const args = core.getInput('args', {required: true}); + const isInstallOnly = /^true$/i.test(core.getInput('install-only')); const workdir = core.getInput('workdir') || '.'; const goreleaser = await installer.getGoReleaser(version); + core.info(`โœ… GoReleaser installed successfully`); + if (isInstallOnly) { + const goreleaserDir = dirname(goreleaser); + core.addPath(goreleaserDir); + core.debug(`Added ${goreleaserDir} to PATH`); + return; + } + const args = core.getInput('args', {required: true}); if (workdir && workdir !== '.') { core.info(`๐Ÿ“‚ Using ${workdir} as working directory...`);