diff --git a/README.md b/README.md
index 3d0cdff30b..35794e48b6 100644
--- a/README.md
+++ b/README.md
@@ -302,6 +302,27 @@ with:
+### `install-only`
+
+(optional)
+
+If set to `true`, the action will only install golangci-lint.
+It does not run golangci-lint.
+
+The default value is `false`.
+
+
+Example
+
+```yml
+uses: golangci/golangci-lint-action@v8
+with:
+ install-only: true
+ # ...
+```
+
+
+
### `github-token`
(optional)
diff --git a/action.yml b/action.yml
index 4922368fc6..059839294b 100644
--- a/action.yml
+++ b/action.yml
@@ -15,6 +15,10 @@ inputs:
description: "The mode to install golangci-lint. It can be 'binary', 'goinstall', or 'none'."
default: "binary"
required: false
+ install-only:
+ description: "Only install golangci-lint. It does not run golangci-lint."
+ default: 'false'
+ required: false
working-directory:
description: "golangci-lint working directory. The default is the project root."
required: false
diff --git a/dist/post_run/index.js b/dist/post_run/index.js
index 69d587d65b..b58793d141 100644
--- a/dist/post_run/index.js
+++ b/dist/post_run/index.js
@@ -97343,11 +97343,14 @@ const cache_1 = __nccwpck_require__(7377);
const install_1 = __nccwpck_require__(232);
const patch_1 = __nccwpck_require__(7161);
const execShellCommand = (0, util_1.promisify)(child_process_1.exec);
-async function prepareEnv() {
+async function prepareEnv(installOnly) {
const startedAt = Date.now();
// Prepare cache, lint and go in parallel.
await (0, cache_1.restoreCache)();
const binPath = await (0, install_1.install)();
+ if (installOnly) {
+ return { binPath, patchPath: `` };
+ }
const patchPath = await (0, patch_1.fetchPatch)();
core.info(`Prepared env in ${Date.now() - startedAt}ms`);
return { binPath, patchPath };
@@ -97483,8 +97486,14 @@ async function getConfigPath(binPath, userArgsMap, cmdArgs) {
}
async function run() {
try {
- const { binPath, patchPath } = await core.group(`prepare environment`, prepareEnv);
+ const installOnly = core.getBooleanInput(`install-only`, { required: true });
+ const { binPath, patchPath } = await core.group(`prepare environment`, () => {
+ return prepareEnv(installOnly);
+ });
core.addPath(path.dirname(binPath));
+ if (installOnly) {
+ return;
+ }
await core.group(`run golangci-lint`, () => runLint(binPath, patchPath));
}
catch (error) {
diff --git a/dist/run/index.js b/dist/run/index.js
index 8e1918ecf1..77757fb76f 100644
--- a/dist/run/index.js
+++ b/dist/run/index.js
@@ -97343,11 +97343,14 @@ const cache_1 = __nccwpck_require__(7377);
const install_1 = __nccwpck_require__(232);
const patch_1 = __nccwpck_require__(7161);
const execShellCommand = (0, util_1.promisify)(child_process_1.exec);
-async function prepareEnv() {
+async function prepareEnv(installOnly) {
const startedAt = Date.now();
// Prepare cache, lint and go in parallel.
await (0, cache_1.restoreCache)();
const binPath = await (0, install_1.install)();
+ if (installOnly) {
+ return { binPath, patchPath: `` };
+ }
const patchPath = await (0, patch_1.fetchPatch)();
core.info(`Prepared env in ${Date.now() - startedAt}ms`);
return { binPath, patchPath };
@@ -97483,8 +97486,14 @@ async function getConfigPath(binPath, userArgsMap, cmdArgs) {
}
async function run() {
try {
- const { binPath, patchPath } = await core.group(`prepare environment`, prepareEnv);
+ const installOnly = core.getBooleanInput(`install-only`, { required: true });
+ const { binPath, patchPath } = await core.group(`prepare environment`, () => {
+ return prepareEnv(installOnly);
+ });
core.addPath(path.dirname(binPath));
+ if (installOnly) {
+ return;
+ }
await core.group(`run golangci-lint`, () => runLint(binPath, patchPath));
}
catch (error) {
diff --git a/src/run.ts b/src/run.ts
index 8f79b998d6..52ea0f0876 100644
--- a/src/run.ts
+++ b/src/run.ts
@@ -16,13 +16,18 @@ type Env = {
patchPath: string
}
-async function prepareEnv(): Promise {
+async function prepareEnv(installOnly: boolean): Promise {
const startedAt = Date.now()
// Prepare cache, lint and go in parallel.
await restoreCache()
const binPath = await install()
+
+ if (installOnly) {
+ return { binPath, patchPath: `` }
+ }
+
const patchPath = await fetchPatch()
core.info(`Prepared env in ${Date.now() - startedAt}ms`)
@@ -196,8 +201,18 @@ async function getConfigPath(binPath: string, userArgsMap: Map,
export async function run(): Promise {
try {
- const { binPath, patchPath } = await core.group(`prepare environment`, prepareEnv)
+ const installOnly = core.getBooleanInput(`install-only`, { required: true })
+
+ const { binPath, patchPath } = await core.group(`prepare environment`, () => {
+ return prepareEnv(installOnly)
+ })
+
core.addPath(path.dirname(binPath))
+
+ if (installOnly) {
+ return
+ }
+
await core.group(`run golangci-lint`, () => runLint(binPath, patchPath))
} catch (error) {
core.error(`Failed to run: ${error}, ${error.stack}`)