diff --git a/blueprints/component/files/src/components/__name__.gjs b/blueprints/component/files/src/components/__name__.gjs new file mode 100644 index 0000000..a0a3330 --- /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 0000000..ee8ab7e --- /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 0000000..171f3ca --- /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 0207d2d..5feac90 100644 --- a/files/package.json +++ b/files/package.json @@ -36,14 +36,16 @@ "ember-source": ">= 4.12.0" }, "devDependencies": { - "@babel/core": "^7.25.2",<% if (typescript) { %>"@babel/plugin-transform-typescript": "^7.25.2",<% } %> + "@babel/core": "^7.25.2",<% if (typescript) { %> + "@babel/plugin-transform-typescript": "^7.25.2",<% } %> "@babel/eslint-parser": "^7.25.1", "@babel/runtime": "^7.25.6", + "@ember/addon-blueprint": "github:ember-cli/ember-addon-blueprint#blueprints", + "@ember/test-helpers": "^5.2.1", "@embroider/addon-dev": "^7.1.0", "@embroider/core": "^4.0.0-alpha.10", "@embroider/macros": "^1.17.0-alpha.8", "@embroider/vite": "^1.0.0-alpha.12", - "@ember/test-helpers": "^5.2.1", "@eslint/js": "^9.17.0",<% if (typescript) { %> "@glint/core": "^1.4.0", "@glint/environment-ember-loose": "^1.4.0", @@ -53,21 +55,22 @@ "@rollup/plugin-babel": "^6.0.4", "babel-plugin-ember-template-compilation": "^2.2.5", "concurrently": "^9.0.1", - "ember-source": "^6.3.0", + "ember-qunit": "^9.0.2", "ember-resolver": "^13.1.0", + "ember-source": "^6.3.0", "ember-template-lint": "^6.0.0", - "ember-qunit": "^9.0.2", "eslint": "^9.17.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-ember": "^12.3.3", "eslint-plugin-import": "^2.31.0", "eslint-plugin-n": "^17.15.1", "globals": "^15.14.0", + "layer-gen": "^0.1.0", "prettier": "^3.4.2", "prettier-plugin-ember-template-tag": "^2.0.4", - "rollup": "^4.22.5", "qunit": "^2.24.1", "qunit-dom": "^3.4.0", + "rollup": "^4.22.5", "vite": "^6.2.4"<% if (typescript) { %>, "typescript-eslint": "^8.19.1", "typescript": "~5.6.0"<% } %> diff --git a/index.js b/index.js index 3196d8c..7ac4608 100644 --- a/index.js +++ b/index.js @@ -5,6 +5,7 @@ let date = new Date(); const description = 'The default blueprint for Embroider v2 addons.'; module.exports = { + name: "face", description, fileMapTokens(options) { diff --git a/package.json b/package.json index 6cdf285..2e67180 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,8 @@ "version": "0.2.0", "description": "Blueprint for scaffolding ember v2 addons", "keywords": [ - "ember-blueprint" + "ember-blueprint", + "ember-addon" ], "repository": { "type": "git", @@ -12,9 +13,14 @@ "license": "MIT", "author": "", "scripts": {}, - "dependencies": {}, + "dependencies": { + "ember-cli-string-utils": "^1.1.0" + }, "devDependencies": { "release-plan": "^0.16.0" }, - "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 482bb6b..c50d484 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,6 +7,10 @@ settings: importers: .: + dependencies: + ember-cli-string-utils: + specifier: ^1.1.0 + version: 1.1.0 devDependencies: release-plan: specifier: ^0.16.0 @@ -262,6 +266,9 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + ember-cli-string-utils@1.1.0: + resolution: {integrity: sha512-PlJt4fUDyBrC/0X+4cOpaGCiMawaaB//qD85AXmDRikxhxVzfVdpuoec02HSiTGTTB85qCIzWBIh8lDOiMyyFg==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1194,6 +1201,8 @@ snapshots: eastasianwidth@0.2.0: {} + ember-cli-string-utils@1.1.0: {} + emoji-regex@8.0.0: {} emoji-regex@9.2.2: {}