From 5ebedd50289790c9c758316db695375f61f5bb68 Mon Sep 17 00:00:00 2001 From: ijlee2 Date: Mon, 19 Aug 2024 08:55:32 +0200 Subject: [PATCH 01/10] feature: Provided feedback to end-developer --- packages/blueprints-addon/src/run-destroy.ts | 11 +++++++++++ packages/blueprints-addon/src/run-generate.ts | 6 ++++++ packages/blueprints-addon/src/run-new.ts | 6 ++++++ .../src/steps/run-destroy/can-skip.ts | 16 ++++++++++++++++ .../src/steps/run-destroy/index.ts | 1 + 5 files changed, 40 insertions(+) create mode 100644 packages/blueprints-addon/src/steps/run-destroy/can-skip.ts diff --git a/packages/blueprints-addon/src/run-destroy.ts b/packages/blueprints-addon/src/run-destroy.ts index 82db3eb4..d95bb09c 100644 --- a/packages/blueprints-addon/src/run-destroy.ts +++ b/packages/blueprints-addon/src/run-destroy.ts @@ -1,4 +1,5 @@ import { + canSkip, createOptions, updateAddon, updateTestApp, @@ -8,6 +9,16 @@ import type { CodemodOptions } from './types/run-destroy.js'; export function runDestroy(codemodOptions: CodemodOptions): void { const options = createOptions(codemodOptions); + if (canSkip(options)) { + console.log( + `🚫 Skipped removing ${options.entity.name}, because it was already removed.\n`, + ); + + return; + } + updateAddon(options); updateTestApp(options); + + console.log(`✅ Removed ${options.entity.name} and its test file.\n`); } diff --git a/packages/blueprints-addon/src/run-generate.ts b/packages/blueprints-addon/src/run-generate.ts index b707756a..473e62ad 100644 --- a/packages/blueprints-addon/src/run-generate.ts +++ b/packages/blueprints-addon/src/run-generate.ts @@ -10,9 +10,15 @@ export function runGenerate(codemodOptions: CodemodOptions): void { const options = createOptions(codemodOptions); if (canSkip(options)) { + console.log( + `🚫 Skipped creating ${options.entity.name}, because it already exists.\n`, + ); + return; } updateAddon(options); updateTestApp(options); + + console.log(`✅ Created ${options.entity.name} and its test file.\n`); } diff --git a/packages/blueprints-addon/src/run-new.ts b/packages/blueprints-addon/src/run-new.ts index e8be7825..270947cf 100644 --- a/packages/blueprints-addon/src/run-new.ts +++ b/packages/blueprints-addon/src/run-new.ts @@ -11,10 +11,16 @@ export function runNew(codemodOptions: CodemodOptions): void { const options = createOptions(codemodOptions); if (canSkip(options)) { + console.log( + `🚫 Skipped creating ${options.addon.name}, because it already exists.\n`, + ); + return; } createAddon(options); updateDocsApp(options); updateTestApp(options); + + console.log(`✅ Created ${options.addon.name}.\n`); } diff --git a/packages/blueprints-addon/src/steps/run-destroy/can-skip.ts b/packages/blueprints-addon/src/steps/run-destroy/can-skip.ts new file mode 100644 index 00000000..e3ef47a3 --- /dev/null +++ b/packages/blueprints-addon/src/steps/run-destroy/can-skip.ts @@ -0,0 +1,16 @@ +import { join } from 'node:path'; + +import { findFiles } from '@codemod-utils/files'; + +import type { Options } from '../../types/run-destroy.js'; + +export function canSkip(options: Options): boolean { + const { entity, projectRoot } = options; + + const filePaths = findFiles( + join('src', `${entity.type}s`, `${entity.name}.*`), + { projectRoot }, + ); + + return filePaths.length === 0; +} diff --git a/packages/blueprints-addon/src/steps/run-destroy/index.ts b/packages/blueprints-addon/src/steps/run-destroy/index.ts index c3a9cb13..95ccba73 100644 --- a/packages/blueprints-addon/src/steps/run-destroy/index.ts +++ b/packages/blueprints-addon/src/steps/run-destroy/index.ts @@ -1,3 +1,4 @@ +export * from './can-skip.js'; export * from './create-options.js'; export * from './update-addon.js'; export * from './update-test-app.js'; From 4e596b09478fec130fd9f4c962f0aec050605197 Mon Sep 17 00:00:00 2001 From: ijlee2 Date: Mon, 19 Aug 2024 08:55:36 +0200 Subject: [PATCH 02/10] chore: Simplified scripts --- .../src/blueprints/docs-app/package.json | 2 +- .../src/blueprints/package.json | 18 ++++-------------- .../src/blueprints/test-app/package.json | 4 ++-- 3 files changed, 7 insertions(+), 17 deletions(-) diff --git a/packages/create-v2-addon-repo/src/blueprints/docs-app/package.json b/packages/create-v2-addon-repo/src/blueprints/docs-app/package.json index 87f2e9fe..09073e04 100644 --- a/packages/create-v2-addon-repo/src/blueprints/docs-app/package.json +++ b/packages/create-v2-addon-repo/src/blueprints/docs-app/package.json @@ -23,7 +23,7 @@ "prelint:types": "type-css-modules --src app", "lint:types": "glint", "start": "ember serve", - "test": "ember test --test-port=0" + "test": "ember test --test-port 0" }, "devDependencies": { "@babel/core": "^7.25.2", diff --git a/packages/create-v2-addon-repo/src/blueprints/package.json b/packages/create-v2-addon-repo/src/blueprints/package.json index 01f96ac5..9c789d38 100644 --- a/packages/create-v2-addon-repo/src/blueprints/package.json +++ b/packages/create-v2-addon-repo/src/blueprints/package.json @@ -5,23 +5,13 @@ "description": "Workspace root for <%= options.project.name %>", "scripts": { "addon": "blueprints-addon", - "build": "concurrently 'pnpm:build:*' --group --names 'build:' --prefix-colors cyan,yellow,white", - "build:blueprints-addon": "pnpm --filter blueprints-addon build", - "build:packages": "pnpm --filter './packages/**' build", - "lint": "concurrently 'pnpm:lint:*(!fix)' --group --names 'lint:' --prefix-colors cyan,yellow,white", - "lint:docs-app": "pnpm --filter docs-app lint", - "lint:docs-app:fix": "pnpm --filter docs-app lint:fix", - "lint:fix": "concurrently 'pnpm:lint:*:fix' --group --names 'fix:' --prefix-colors cyan,yellow,white", - "lint:packages": "pnpm --filter './packages/**' lint", - "lint:packages:fix": "pnpm --filter './packages/**' lint:fix", - "lint:test-app": "pnpm --filter test-app lint", - "lint:test-app:fix": "pnpm --filter test-app lint:fix", + "build": "pnpm --filter blueprints-addon --filter './packages/**' build", + "lint": "pnpm --filter '*' lint", + "lint:fix": "pnpm --filter '*' lint:fix", "start": "concurrently 'pnpm:start:*' --names 'start:' --prefix-colors cyan,yellow,white", "start:docs-app": "pnpm --filter docs-app start", "start:test-app": "pnpm --filter test-app start", - "test": "concurrently 'pnpm:test:*' --group --names 'test:' --prefix-colors cyan,yellow,white", - "test:docs-app": "pnpm --filter docs-app test", - "test:test-app": "pnpm --filter test-app test" + "test": "pnpm --filter docs-app --filter test-app test" }, "devDependencies": { "blueprints-addon": "workspace:*", diff --git a/packages/create-v2-addon-repo/src/blueprints/test-app/package.json b/packages/create-v2-addon-repo/src/blueprints/test-app/package.json index c6e74251..246ff4af 100644 --- a/packages/create-v2-addon-repo/src/blueprints/test-app/package.json +++ b/packages/create-v2-addon-repo/src/blueprints/test-app/package.json @@ -21,8 +21,8 @@ "lint:js": "eslint . --cache", "lint:js:fix": "eslint . --fix", "lint:types": "glint", - "start": "ember serve --port=4300", - "test": "ember test --test-port=0", + "start": "ember serve --port 4300", + "test": "ember test --test-port 0", "test:ember-compatibility": "./node_modules/.bin/ember try:one" }, "devDependencies": { From fe740655b046f71f3a0e8c805a5eab4e5ad986df Mon Sep 17 00:00:00 2001 From: ijlee2 Date: Mon, 19 Aug 2024 08:55:41 +0200 Subject: [PATCH 03/10] feature: Added READMEs --- packages/blueprints-addon/README.md | 67 ++++++++++++++++++ packages/blueprints-addon/package.json | 2 +- .../run-new/__addonLocation__/README.md | 2 +- packages/create-v2-addon-repo/README.md | 69 +++++++++++++++++++ .../src/blueprints/docs-app/README.md | 2 +- .../src/blueprints/test-app/README.md | 2 +- 6 files changed, 140 insertions(+), 4 deletions(-) diff --git a/packages/blueprints-addon/README.md b/packages/blueprints-addon/README.md index cd34df35..31e91d6e 100644 --- a/packages/blueprints-addon/README.md +++ b/packages/blueprints-addon/README.md @@ -1 +1,68 @@ # blueprints-addon + +_CLI for v2 addons_ + +1. [Features](#features) +1. [Usage](#usage) +1. [Compatibility](#compatibility) + + +## Features + +Standardize how you write v2 addons: + +- Run `new` to create a v2 addon +- Run `generate` to create source and test files +- Run `destroy` to remove source and test files +- Blueprints available for components, helpers, modifiers, services, and utilities +- Tailor addon blueprints to your needs + + +## Usage + +Install `blueprints-addon` as a development dependency in these locations: + +
+ +Workspace root + +```json5 +/* package.json */ +{ + "scripts": { + "addon": "blueprints-addon" + }, + "devDependencies": { + "blueprints-addon": "workspace:*" + } +} +``` + +
+ +
+ +V2 addon in packages + +```json5 +/* Example: packages/ui/button/package.json */ +{ + "scripts": { + "addon": "blueprints-addon --test-app-location '../../../test-app'" + }, + "devDependencies": { + "blueprints-addon": "workspace:*" + } +} +``` + +
+ +> [!NOTE] +> +> After you build `blueprints-addon`, please run `pnpm install` at the workspace root so that the blueprints are available. + + +## Compatibility + +- Node.js v18 or above diff --git a/packages/blueprints-addon/package.json b/packages/blueprints-addon/package.json index f2aa99c3..06e2bbd0 100644 --- a/packages/blueprints-addon/package.json +++ b/packages/blueprints-addon/package.json @@ -2,7 +2,7 @@ "name": "blueprints-addon", "version": "0.3.0", "private": true, - "description": "Blueprints for v2 addons", + "description": "CLI for v2 addons", "keywords": [ "codemod", "ember-codemod", diff --git a/packages/blueprints-addon/src/blueprints/run-new/__addonLocation__/README.md b/packages/blueprints-addon/src/blueprints/run-new/__addonLocation__/README.md index ce6f408f..afe30b53 100644 --- a/packages/blueprints-addon/src/blueprints/run-new/__addonLocation__/README.md +++ b/packages/blueprints-addon/src/blueprints/run-new/__addonLocation__/README.md @@ -43,4 +43,4 @@ For more information, pass `--help`. ## Compatibility -* Node.js v18 or above +- Node.js v18 or above diff --git a/packages/create-v2-addon-repo/README.md b/packages/create-v2-addon-repo/README.md index 7b8156a7..98587cd0 100644 --- a/packages/create-v2-addon-repo/README.md +++ b/packages/create-v2-addon-repo/README.md @@ -1 +1,70 @@ # create-v2-addon-repo + +_Codemod to create a repo with v2 addons_ + +1. [Features](#features) +1. [Usage](#usage) +1. [Compatibility](#compatibility) +1. [Contributing](#contributing) +1. [License](#license) + + +## Features + +Create a batteries-included project fast: + +- Create as many v2 addons as you want +- Run `generate` and `destroy` commands (à la Ember CLI) +- Tailor addon blueprints to your needs +- Explore bleeding-edge Ember: `embroider-css-modules`, `glint`, `