Merge pull request #13462 from backstage/rugvip/clean

cli: add 'repo clean' command
This commit is contained in:
Patrik Oldsberg
2022-09-01 17:49:49 +02:00
committed by GitHub
7 changed files with 92 additions and 3 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/cli': patch
---
Added a new `backstage-cli repo clean` command that cleans the repo root and runs the clean script in all packages.
+12
View File
@@ -0,0 +1,12 @@
---
'@backstage/create-app': patch
---
Updated the root `package.json` to use the new `backstage-cli repo clean` command.
To apply this change to an existing project, make the following change to the root `package.json`:
```diff
- "clean": "backstage-cli clean && lerna run clean",
+ "clean": "backstage-cli repo clean",
```
+2 -2
View File
@@ -13,8 +13,8 @@
"build:api-reports:only": "ts-node -T -P scripts/tsconfig.json scripts/api-extractor.ts",
"build:api-docs": "yarn build:api-reports --docs",
"tsc": "tsc",
"tsc:full": "backstage-cli clean && tsc --skipLibCheck false --incremental false",
"clean": "backstage-cli clean && lerna run clean",
"tsc:full": "backstage-cli repo clean && tsc --skipLibCheck false --incremental false",
"clean": "backstage-cli repo clean",
"diff": "lerna run diff --",
"test": "backstage-cli test",
"test:all": "lerna run test -- --coverage",
+10
View File
@@ -415,6 +415,7 @@ Options:
Commands:
build [options]
lint [options]
clean
help [command]
```
@@ -429,6 +430,15 @@ Options:
-h, --help
```
### `backstage-cli repo clean`
```
Usage: backstage-cli repo clean [options]
Options:
-h, --help
```
### `backstage-cli repo lint`
```
+5
View File
@@ -60,6 +60,11 @@ export function registerRepoCommand(program: Command) {
.option('--fix', 'Attempt to automatically fix violations')
.action(lazy(() => import('./repo/lint').then(m => m.command)));
command
.command('clean')
.description('Delete cache and output directories')
.action(lazy(() => import('./repo/clean').then(m => m.command)));
command
.command('list-deprecations', { hidden: true })
.description('List deprecations. [EXPERIMENTAL]')
+57
View File
@@ -0,0 +1,57 @@
/*
* Copyright 2020 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { execFile as execFileCb } from 'child_process';
import fs from 'fs-extra';
import { resolve as resolvePath } from 'path';
import { promisify } from 'util';
import { PackageGraph } from '../../lib/monorepo';
import { paths } from '../../lib/paths';
const execFile = promisify(execFileCb);
export async function command(): Promise<void> {
const packages = await PackageGraph.listTargetPackages();
await fs.remove(paths.resolveTargetRoot('dist'));
await fs.remove(paths.resolveTargetRoot('dist-types'));
await fs.remove(paths.resolveTargetRoot('coverage'));
await Promise.all(
Array.from(Array(10), async () => {
while (packages.length > 0) {
const pkg = packages.pop()!;
const cleanScript = pkg.packageJson.scripts?.clean;
if (
cleanScript === 'backstage-cli clean' ||
cleanScript === 'backstage-cli package clean'
) {
await fs.remove(resolvePath(pkg.dir, 'dist'));
await fs.remove(resolvePath(pkg.dir, 'dist-types'));
await fs.remove(resolvePath(pkg.dir, 'coverage'));
} else if (cleanScript) {
const result = await execFile('yarn', ['run', 'clean'], {
cwd: pkg.dir,
shell: true,
});
process.stdout.write(result.stdout);
process.stderr.write(result.stderr);
}
}
}),
);
}
@@ -13,7 +13,7 @@
"build-image": "yarn workspace backend build-image",
"tsc": "tsc",
"tsc:full": "tsc --skipLibCheck false --incremental false",
"clean": "backstage-cli clean && lerna run clean",
"clean": "backstage-cli repo clean",
"diff": "lerna run diff --",
"test": "backstage-cli test",
"test:all": "lerna run test -- --coverage",