From f0a11a49d64761379f7c130575958d08390c5717 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C4=9Bj=20Chalk?= Date: Mon, 25 Nov 2024 16:52:02 +0100 Subject: [PATCH] Add output input for customizing reports directory --- README.md | 12 ++++++ action.yml | 4 ++ package-lock.json | 94 +++++++++++++++++++++++------------------------ package.json | 14 +++---- src/inputs.ts | 6 ++- src/options.ts | 1 + 6 files changed, 75 insertions(+), 56 deletions(-) diff --git a/README.md b/README.md index ec9bc4c..604020a 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,7 @@ The action may be customized using the following optional inputs: | `artifacts` | Toggles if artifacts will we uploaded/downloaded | `true` | | `retention` | Artifact retention period in days | from repository settings | | `directory` | Directory in which `code-pushup` should run | `process.cwd()` | +| `output` | Directory where reports will be created | `.code-pushup` | | `config` | Path to config file (`--config` option) | see [`@code-pushup/cli` docs](https://github.com/code-pushup/cli/tree/main/packages/cli#configuration) | | `silent` | Toggles if logs from Code PushUp CLI are printed | `false` | | `bin` | Command for executing Code PushUp CLI | `npx --no-install code-pushup` | @@ -150,3 +151,14 @@ can override the name using the optional `task` input: monorepo: nx task: analyze # custom Nx target ``` + +For caching purposes, you may prefer to separate output directories per project. +The `output` input supports interpolating the project name in the path using +`{project}` syntax: + +```yml +- uses: code-pushup/github-action@v0 + with: + monorepo: true + output: .code-pushup/{project} +``` diff --git a/action.yml b/action.yml index 37014fa..f068ac1 100644 --- a/action.yml +++ b/action.yml @@ -43,6 +43,10 @@ inputs: directory: description: Custom working directory required: false + output: + description: + Custom report output directory (use '{project}'-syntax in monorepo mode) + required: false silent: description: Silence logs from Code Pushup CLI required: true diff --git a/package-lock.json b/package-lock.json index 9f6de7c..0c478a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,19 +13,19 @@ "@actions/core": "^1.11.1", "@actions/exec": "^1.1.1", "@actions/github": "^6.0.0", - "@code-pushup/ci": "^0.54.0", - "@code-pushup/models": "^0.54.0", - "@code-pushup/utils": "^0.54.0", + "@code-pushup/ci": "^0.55.0", + "@code-pushup/models": "^0.55.0", + "@code-pushup/utils": "^0.55.0", "better-enums": "^0.2.2", "fast-glob": "^3.3.2", "simple-git": "^3.27.0", "yaml": "^2.6.1" }, "devDependencies": { - "@code-pushup/cli": "^0.54.0", - "@code-pushup/coverage-plugin": "^0.54.0", - "@code-pushup/eslint-plugin": "^0.54.0", - "@code-pushup/js-packages-plugin": "^0.54.0", + "@code-pushup/cli": "^0.55.0", + "@code-pushup/coverage-plugin": "^0.55.0", + "@code-pushup/eslint-plugin": "^0.55.0", + "@code-pushup/js-packages-plugin": "^0.55.0", "@code-pushup/portal-client": "^0.9.0", "@types/jest": "^29.5.14", "@types/node": "^22.9.3", @@ -1078,13 +1078,13 @@ "dev": true }, "node_modules/@code-pushup/ci": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@code-pushup/ci/-/ci-0.54.0.tgz", - "integrity": "sha512-Yfhm9jZFuuUO8tS/OFIXP27RowLk8Tk5hhydtabRtOHetMVbrAyyjs9XIFk99CDO0xJQyi72U7hQk5vqx1clKQ==", + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@code-pushup/ci/-/ci-0.55.0.tgz", + "integrity": "sha512-6bfjcktwUgrXJo1x3BcqQ7czET6SJUZmcZRj7DRFw1pz7UZ6+fBE4zXr0qAYUVVMMWwKonAAePtlRicwW3J0Ng==", "license": "MIT", "dependencies": { - "@code-pushup/models": "0.54.0", - "@code-pushup/utils": "0.54.0", + "@code-pushup/models": "0.55.0", + "@code-pushup/utils": "0.55.0", "glob": "^10.4.5", "simple-git": "^3.20.0", "yaml": "^2.5.1" @@ -1138,15 +1138,15 @@ } }, "node_modules/@code-pushup/cli": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@code-pushup/cli/-/cli-0.54.0.tgz", - "integrity": "sha512-5BpfYKxlQPQQeQeVppt9hSnleQRBI4lY+4CS7HrcjvubXKNAO5LhAVPsbPtpc0WoZ8swRcx+yrajdB5jZIeeew==", + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@code-pushup/cli/-/cli-0.55.0.tgz", + "integrity": "sha512-HZC4TiKSZMKekMvWFg0hoGh2RBva/6Pr1ajOf1K6Ce9b0RFkPDCRECjzdUE5tcHT3ToXMe7LGkO6293rcvetvw==", "dev": true, "license": "MIT", "dependencies": { - "@code-pushup/core": "0.54.0", - "@code-pushup/models": "0.54.0", - "@code-pushup/utils": "0.54.0", + "@code-pushup/core": "0.55.0", + "@code-pushup/models": "0.55.0", + "@code-pushup/utils": "0.55.0", "ansis": "^3.3.0", "simple-git": "^3.20.0", "yargs": "^17.7.2" @@ -1156,14 +1156,14 @@ } }, "node_modules/@code-pushup/core": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@code-pushup/core/-/core-0.54.0.tgz", - "integrity": "sha512-cpRHhrmeeMRQ6Sy7lUVNubhc9VQrR0SLNBFYQL5kTXaZsWqwNPba6W2wwxOsv2sP5696UzEkDtv/oS6lBPZyqA==", + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@code-pushup/core/-/core-0.55.0.tgz", + "integrity": "sha512-4x3GZyezQOGAEI1xyTaWiPB/YDilKYY6euGHu5ddzGP1udX2HIPndtAGcl1qr6lBGA1mbGDwz9D66SbZskV4Tw==", "dev": true, "license": "MIT", "dependencies": { - "@code-pushup/models": "0.54.0", - "@code-pushup/utils": "0.54.0", + "@code-pushup/models": "0.55.0", + "@code-pushup/utils": "0.55.0", "ansis": "^3.3.0" }, "peerDependencies": { @@ -1176,14 +1176,14 @@ } }, "node_modules/@code-pushup/coverage-plugin": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@code-pushup/coverage-plugin/-/coverage-plugin-0.54.0.tgz", - "integrity": "sha512-79t9ZON1Fik8Tex0RJgou9zNHmCsKo6CuqvC4T/Yny0FQDFXMYwsal5FzsTg5LR28zScnNidA9+7mHn8bNykFg==", + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@code-pushup/coverage-plugin/-/coverage-plugin-0.55.0.tgz", + "integrity": "sha512-SC88ra6FH6Sx8eq0nHKla2DE4SbCB+VeUOb1NkFJimOmdrMAAi0MoDkTUYozSRoZAB04j1EAE9lbxDiw788kdw==", "dev": true, "license": "MIT", "dependencies": { - "@code-pushup/models": "0.54.0", - "@code-pushup/utils": "0.54.0", + "@code-pushup/models": "0.55.0", + "@code-pushup/utils": "0.55.0", "ansis": "^3.3.0", "parse-lcov": "^1.0.4", "zod": "^3.22.4" @@ -1206,19 +1206,19 @@ } }, "node_modules/@code-pushup/eslint-plugin": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@code-pushup/eslint-plugin/-/eslint-plugin-0.54.0.tgz", - "integrity": "sha512-h2rd9MhO52SuD7yBdCN2XusT/AdiyKXjNeDMKcmqKP/x8c83c0jncORlHUnbO/vvvFd8G8uD7q8Pp77XBMyYZg==", + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@code-pushup/eslint-plugin/-/eslint-plugin-0.55.0.tgz", + "integrity": "sha512-DhFmUERVxxFVbClAXaFZZdYOfSSigATZzsFMTprCTzKa7YqLhZ/ktnWQNo4tPK3mWFz+3bca9RimjxivQVMM7g==", "dev": true, "license": "MIT", "dependencies": { - "@code-pushup/models": "0.54.0", - "@code-pushup/utils": "0.54.0", - "eslint": "^8.46.0", + "@code-pushup/models": "0.55.0", + "@code-pushup/utils": "0.55.0", "zod": "^3.22.4" }, "peerDependencies": { - "@nx/devkit": ">=17.0.0" + "@nx/devkit": ">=17.0.0", + "eslint": "^8.46.0 || ^9.0.0" }, "peerDependenciesMeta": { "@nx/devkit": { @@ -1227,23 +1227,23 @@ } }, "node_modules/@code-pushup/js-packages-plugin": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@code-pushup/js-packages-plugin/-/js-packages-plugin-0.54.0.tgz", - "integrity": "sha512-U+AY/B6wMUBw84n4bBXv9tjSpz+u2csNKGFgIaJ7FJrm8yctW1OLlRJwzgptNfumE5lV85T8F9F56fCR7Cs2UQ==", + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@code-pushup/js-packages-plugin/-/js-packages-plugin-0.55.0.tgz", + "integrity": "sha512-ZvqXcHrzSo5LoljWhX6BoypbnYMa5ta4goxkQkC+7wqoKc/s2auBK6Av6r00Pzk+FlZaEFQB+j2vE2DJYEU/Bw==", "dev": true, "license": "MIT", "dependencies": { - "@code-pushup/models": "0.54.0", - "@code-pushup/utils": "0.54.0", + "@code-pushup/models": "0.55.0", + "@code-pushup/utils": "0.55.0", "build-md": "^0.4.1", "semver": "^7.6.0", "zod": "^3.22.4" } }, "node_modules/@code-pushup/models": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@code-pushup/models/-/models-0.54.0.tgz", - "integrity": "sha512-+k6gWAAMkZ78+6pdb7zsNNgUU+7xSQ9H7l04Shv2lXcvMWcfcSYJNtMfBr9PIRDlCCNOA0ml0LED9gYQ8rhLnQ==", + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@code-pushup/models/-/models-0.55.0.tgz", + "integrity": "sha512-V1rzLeKyslkje6bjChmrhhKwAZt8SB3VJ0VyaFsuey6HrOMfGsyoc7R8KE1d5yJSFFeNe3HYIg98eKKlZBRkZA==", "license": "MIT", "dependencies": { "vscode-material-icons": "^0.1.0", @@ -1263,12 +1263,12 @@ } }, "node_modules/@code-pushup/utils": { - "version": "0.54.0", - "resolved": "https://registry.npmjs.org/@code-pushup/utils/-/utils-0.54.0.tgz", - "integrity": "sha512-QISMKWRpi2Vza3nrjV0uNzK2+nlGNvXVUa3FUOrvWspTdpYUdFrX+LBVHyFJITqhxiluCg7gZOkysNGUqs8eOg==", + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@code-pushup/utils/-/utils-0.55.0.tgz", + "integrity": "sha512-bdGQrP610B/M3/MkpuLrnoAKq9+y2r3ArCwWbtMPKwGOvXYWeuUq9pPK7WKpJtpYfgQQ0UdG6OxHk2XNDBM/IA==", "license": "MIT", "dependencies": { - "@code-pushup/models": "0.54.0", + "@code-pushup/models": "0.55.0", "@isaacs/cliui": "^8.0.2", "@poppinss/cliui": "^6.4.0", "ansis": "^3.3.0", diff --git a/package.json b/package.json index 3652b5d..9a40cc6 100644 --- a/package.json +++ b/package.json @@ -80,19 +80,19 @@ "@actions/core": "^1.11.1", "@actions/exec": "^1.1.1", "@actions/github": "^6.0.0", - "@code-pushup/ci": "^0.54.0", - "@code-pushup/models": "^0.54.0", - "@code-pushup/utils": "^0.54.0", + "@code-pushup/ci": "^0.55.0", + "@code-pushup/models": "^0.55.0", + "@code-pushup/utils": "^0.55.0", "better-enums": "^0.2.2", "fast-glob": "^3.3.2", "simple-git": "^3.27.0", "yaml": "^2.6.1" }, "devDependencies": { - "@code-pushup/cli": "^0.54.0", - "@code-pushup/coverage-plugin": "^0.54.0", - "@code-pushup/eslint-plugin": "^0.54.0", - "@code-pushup/js-packages-plugin": "^0.54.0", + "@code-pushup/cli": "^0.55.0", + "@code-pushup/coverage-plugin": "^0.55.0", + "@code-pushup/eslint-plugin": "^0.55.0", + "@code-pushup/js-packages-plugin": "^0.55.0", "@code-pushup/portal-client": "^0.9.0", "@types/jest": "^29.5.14", "@types/node": "^22.9.3", diff --git a/src/inputs.ts b/src/inputs.ts index acb8f4d..0ad0268 100644 --- a/src/inputs.ts +++ b/src/inputs.ts @@ -4,7 +4,6 @@ import { isMonorepoTool, type MonorepoTool } from '@code-pushup/ci' -import { resolve } from 'node:path' export type ActionInputs = { monorepo: boolean | MonorepoTool @@ -14,6 +13,7 @@ export type ActionInputs = { bin: string config: string | null directory: string + output: string silent: boolean artifacts: boolean retention: number | null @@ -26,7 +26,8 @@ export function parseInputs(): ActionInputs { const task = core.getInput('task') const token = core.getInput('token') const config = core.getInput('config') || null - const directory = resolve(core.getInput('directory') || process.cwd()) + const directory = core.getInput('directory') || process.cwd() + const output = core.getInput('output') const bin = core.getInput('bin') const silent = core.getBooleanInput('silent') const artifacts = core.getBooleanInput('artifacts') @@ -41,6 +42,7 @@ export function parseInputs(): ActionInputs { bin, config, directory, + output, silent, artifacts, retention, diff --git a/src/options.ts b/src/options.ts index 4600894..f6479eb 100644 --- a/src/options.ts +++ b/src/options.ts @@ -8,6 +8,7 @@ export function createOptions(inputs: ActionInputs): Required { projects: inputs.projects, task: inputs.task, directory: inputs.directory, + output: inputs.output, bin: inputs.bin, config: inputs.config, detectNewIssues: inputs.annotations,