diff --git a/blueprints/component/files/src/components/__name__.gjs b/blueprints/component/files/src/components/__name__.gjs new file mode 100644 index 00000000..a0a33305 --- /dev/null +++ b/blueprints/component/files/src/components/__name__.gjs @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/blueprints/component/files/tests/integration/components/__name__.gjs b/blueprints/component/files/tests/integration/components/__name__.gjs new file mode 100644 index 00000000..ee8ab7e5 --- /dev/null +++ b/blueprints/component/files/tests/integration/components/__name__.gjs @@ -0,0 +1,24 @@ +import { module, test } from 'qunit'; +import { render } from '@ember/test-helpers'; +import { setupRenderingTest } from 'ember-qunit'; + +import <%= componentName %> from '../../../src/components/<%= name %>'; + +module('Integration | Component | <%= name %>', function (hooks) { + setupRenderingTest(hooks); + + test('it renders', async function (assert) { + await render(); + + assert.dom().hasText(''); + + // Template block usage: + await render(); + + assert.dom().hasText('template block text'); + }); +}); \ No newline at end of file diff --git a/blueprints/component/index.js b/blueprints/component/index.js new file mode 100644 index 00000000..171f3cab --- /dev/null +++ b/blueprints/component/index.js @@ -0,0 +1,25 @@ +const stringUtil = require('ember-cli-string-utils'); + +function invocationFor(options) { + let parts = options.entity.name.split('/'); + return parts.map((p) => stringUtil.classify(p)).join('::'); +} + + +module.exports = { + locals: function (options) { + let templateInvocation = invocationFor(options); + let componentName = templateInvocation; + let openComponent = (descriptor) => `<${descriptor}>`; + let closeComponent = (descriptor) => ``; + let selfCloseComponent = (descriptor) => `<${descriptor} />`; + + return { + name: options.project.name(), + componentName, + openComponent, + closeComponent, + selfCloseComponent, + }; + } +} \ No newline at end of file diff --git a/files/package.json b/files/package.json index 6cd454e8..a36cb2c5 100644 --- a/files/package.json +++ b/files/package.json @@ -39,6 +39,7 @@ "@babel/eslint-parser": "^7.25.1<% if (typescript) { %>", "@babel/plugin-transform-typescript": "^7.25.2<% } %>", "@babel/runtime": "^7.25.6", + "@ember/addon-blueprint": "github:ember-cli/ember-addon-blueprint#blueprints", "@ember/app-tsconfig": "^1.0.0", "@ember/library-tsconfig": "^1.0.0", "@ember/test-helpers": "^5.2.1", @@ -68,6 +69,7 @@ "eslint-plugin-import": "^2.31.0", "eslint-plugin-n": "^17.15.1", "globals": "^16.1.0", + "layer-gen": "^0.2.0", "prettier": "^3.4.2", "prettier-plugin-ember-template-tag": "^2.0.4", "publint": "^0.3.16", diff --git a/index.js b/index.js index ed1e5b98..5fc9eb01 100644 --- a/index.js +++ b/index.js @@ -17,6 +17,7 @@ const replacers = { }; module.exports = { + name: "face", description, fileMapTokens(options) { diff --git a/package.json b/package.json index d1e1d229..a598e416 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,8 @@ "version": "0.17.1", "description": "Blueprint for scaffolding ember v2 addons", "keywords": [ - "ember-blueprint" + "ember-blueprint", + "ember-addon" ], "repository": { "type": "git", @@ -17,6 +18,7 @@ "new:addon": "rm -rf my-addon; pnpm dlx ember-cli@latest addon my-addon --blueprint ." }, "dependencies": { + "ember-cli-string-utils": "^1.1.0", "sort-package-json": "^3.4.0" }, "devDependencies": { @@ -24,5 +26,8 @@ "prettier-plugin-ember-template-tag": "2.1.0", "release-plan": "^0.17.4" }, - "packageManager": "pnpm@10.6.5" + "packageManager": "pnpm@10.6.5", + "blueprints": { + "component": "./blueprints/component" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 548b4b77..a24105a9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + ember-cli-string-utils: + specifier: ^1.1.0 + version: 1.1.0 sort-package-json: specifier: ^3.4.0 version: 3.4.0