diff --git a/package.json b/package.json index 0387a4e7ce..10a5daa4c1 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "start": "yarn workspace example-app start", "bundle": "yarn build && yarn workspace example-app bundle", "build": "lerna run build", + "clean": "lerna run clean", "test": "yarn build && lerna run test --since origin/master -- --coverage", "test:all": "yarn build && lerna run test -- --coverage", "lint": "lerna run lint --since origin/master --", diff --git a/packages/app/package.json b/packages/app/package.json index 409abb6e46..fd9aa88323 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -30,6 +30,7 @@ "scripts": { "start": "backstage-cli app:serve", "bundle": "backstage-cli app:build", + "clean": "backstage-cli clean", "test": "backstage-cli test", "test:e2e": "start-server-and-test start http://localhost:3000 cy:dev", "test:e2e:ci": "start-server-and-test start http://localhost:3000 cy:run", diff --git a/packages/cli/package.json b/packages/cli/package.json index 1808b1239e..2a2adba6a8 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -22,6 +22,7 @@ "build": "backstage-cli build-cache -- tsc", "lint": "backstage-cli lint", "test": "backstage-cli test", + "clean": "backstage-cli clean", "start": "nodemon ." }, "devDependencies": { diff --git a/packages/cli/src/commands/clean/clean.ts b/packages/cli/src/commands/clean/clean.ts new file mode 100644 index 0000000000..f18250d210 --- /dev/null +++ b/packages/cli/src/commands/clean/clean.ts @@ -0,0 +1,33 @@ +/* + * Copyright 2020 Spotify AB + * + * 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 fs from 'fs-extra'; +import { resolve as resolvePath, relative as relativePath } from 'path'; +import { getDefaultCacheOptions } from 'commands/build-cache/options'; +import { paths } from 'helpers/paths'; + +export default async function clean() { + const cacheOptions = getDefaultCacheOptions(); + const packagePath = getPackagePath(cacheOptions.cacheDir); + await fs.remove(cacheOptions.output); + await fs.remove(packagePath); +} + +function getPackagePath(cacheDir: string) { + const relativePackagePath = relativePath(paths.targetRoot, paths.targetDir); + const packagePath = resolvePath(cacheDir, relativePackagePath); + return packagePath; +} diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index ca39c1ac3b..d21ff90c34 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -90,6 +90,11 @@ const main = (argv: string[]) => { ) .action(actionHandler(() => require('commands/build-cache'))); + program + .command('clean') + .description('Delete cache directories') + .action(actionHandler(() => require('commands/clean/clean'))); + program.on('command:*', () => { console.log(); console.log( diff --git a/packages/cli/templates/default-app/package.json.hbs b/packages/cli/templates/default-app/package.json.hbs index 7b5fab5221..231194a54e 100644 --- a/packages/cli/templates/default-app/package.json.hbs +++ b/packages/cli/templates/default-app/package.json.hbs @@ -13,7 +13,8 @@ "test:all": "yarn build && lerna run test -- --coverage", "lint": "lerna run lint --since origin/master --", "lint:all": "lerna run lint --", - "create-plugin": "backstage-cli create-plugin" + "create-plugin": "backstage-cli create-plugin", + "clean": "lerna run clean" }, "workspaces": { "packages": [ diff --git a/packages/cli/templates/default-plugin/package.json.hbs b/packages/cli/templates/default-plugin/package.json.hbs index 49d8d20d71..32479b879b 100644 --- a/packages/cli/templates/default-plugin/package.json.hbs +++ b/packages/cli/templates/default-plugin/package.json.hbs @@ -8,7 +8,8 @@ "scripts": { "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", - "test": "backstage-cli test" + "test": "backstage-cli test", + "clean": "backstage-cli clean" }, "devDependencies": { "@backstage/cli": "^{{version}}", diff --git a/packages/core/package.json b/packages/core/package.json index 366620d279..a2fa3db771 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -21,7 +21,8 @@ "scripts": { "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", - "test": "backstage-cli test" + "test": "backstage-cli test", + "clean": "backstage-cli clean" }, "dependencies": { "@material-ui/core": "^4.9.1", diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 5b328f2a58..9eca38eeb5 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -21,7 +21,8 @@ "scripts": { "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", - "test": "backstage-cli test" + "test": "backstage-cli test", + "clean": "backstage-cli clean" }, "devDependencies": { "@backstage/cli": "^0.1.1-alpha.4", diff --git a/packages/theme/package.json b/packages/theme/package.json index 2f8a213478..6504d7dea5 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -20,7 +20,8 @@ "types": "dist/index.d.ts", "scripts": { "build": "backstage-cli plugin:build", - "lint": "backstage-cli lint" + "lint": "backstage-cli lint", + "clean": "backstage-cli clean" }, "devDependencies": { "@backstage/cli": "^0.1.1-alpha.4", diff --git a/plugins/home-page/package.json b/plugins/home-page/package.json index a25e0cdc58..65fb3cf9da 100644 --- a/plugins/home-page/package.json +++ b/plugins/home-page/package.json @@ -8,7 +8,8 @@ "scripts": { "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", - "test": "backstage-cli test" + "test": "backstage-cli test", + "clean": "backstage-cli clean" }, "devDependencies": { "@backstage/cli": "^0.1.1-alpha.4", diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index a342c45b82..442211a38c 100644 --- a/plugins/lighthouse/package.json +++ b/plugins/lighthouse/package.json @@ -9,7 +9,8 @@ "build:watch": "backstage-cli plugin:build --watch", "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", - "test": "backstage-cli test" + "test": "backstage-cli test", + "clean": "backstage-cli clean" }, "dependencies": { "react-markdown": "^4.3.1", diff --git a/plugins/welcome/package.json b/plugins/welcome/package.json index e0186f1cce..86cb0e3f45 100644 --- a/plugins/welcome/package.json +++ b/plugins/welcome/package.json @@ -8,7 +8,8 @@ "scripts": { "build": "backstage-cli plugin:build", "lint": "backstage-cli lint", - "test": "backstage-cli test" + "test": "backstage-cli test", + "clean": "backstage-cli clean" }, "devDependencies": { "@backstage/cli": "^0.1.1-alpha.4",