diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 89887dd..9b8a19b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -66,7 +66,7 @@ jobs: - ember-canary - ember-classic - embroider-safe - # - embroider-optimized + - embroider-optimized steps: - uses: actions/checkout@v3 diff --git a/addon/helpers/app-version.js b/addon/helpers/app-version.js new file mode 100644 index 0000000..d33340c --- /dev/null +++ b/addon/helpers/app-version.js @@ -0,0 +1,38 @@ +import { helper } from '@ember/component/helper'; + +import config from 'ember-get-config'; + +import { + shaRegExp, + versionRegExp, + versionExtendedRegExp, +} from 'ember-cli-app-version/utils/regexp'; + +export function appVersion(_, hash = {}) { + // e.g. 1.0.0-alpha.1+4jds75hf + let version = config.APP.version; + + // Allow use of 'hideSha' and 'hideVersion' For backwards compatibility + let versionOnly = hash.versionOnly || hash.hideSha; + let shaOnly = hash.shaOnly || hash.hideVersion; + + let match = null; + + if (versionOnly) { + if (hash.showExtended) { + match = version.match(versionExtendedRegExp); // 1.0.0-alpha.1 + } + // Fallback to just version + if (!match) { + match = version.match(versionRegExp); // 1.0.0 + } + } + + if (shaOnly) { + match = version.match(shaRegExp); // 4jds75hf + } + + return match ? match[0] : version; +} + +export default helper(appVersion); diff --git a/app/helpers/app-version.js b/app/helpers/app-version.js index a039907..04330a6 100644 --- a/app/helpers/app-version.js +++ b/app/helpers/app-version.js @@ -1,36 +1,8 @@ -import { helper } from '@ember/component/helper'; -import config from '../config/environment'; import { - shaRegExp, - versionRegExp, - versionExtendedRegExp, -} from 'ember-cli-app-version/utils/regexp'; + default as Helper, + appVersion as _private, +} from 'ember-cli-app-version/helpers/app-version'; -export function appVersion(_, hash = {}) { - const version = config.APP.version; - // e.g. 1.0.0-alpha.1+4jds75hf +export const appVersion = _private; - // Allow use of 'hideSha' and 'hideVersion' For backwards compatibility - let versionOnly = hash.versionOnly || hash.hideSha; - let shaOnly = hash.shaOnly || hash.hideVersion; - - let match = null; - - if (versionOnly) { - if (hash.showExtended) { - match = version.match(versionExtendedRegExp); // 1.0.0-alpha.1 - } - // Fallback to just version - if (!match) { - match = version.match(versionRegExp); // 1.0.0 - } - } - - if (shaOnly) { - match = version.match(shaRegExp); // 4jds75hf - } - - return match ? match[0] : version; -} - -export default helper(appVersion); +export default Helper; diff --git a/ember-cli-build.js b/ember-cli-build.js index 366cbe5..ff52a85 100644 --- a/ember-cli-build.js +++ b/ember-cli-build.js @@ -21,5 +21,13 @@ module.exports = function (defaults) { package: 'qunit', }, ], + pacakgeRules: [ + { + package: 'dummy', + // Anyone already on embroider can import this if they need it. + // strict mode is well within reach for folks on embroider. + helpers: { '{{app-version}}': { safeToIgnore: true } }, + }, + ], }); }; diff --git a/package.json b/package.json index 30d005f..022dab3 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ }, "dependencies": { "ember-cli-babel": "^7.26.11", + "ember-get-config": "^2.1.1", "git-repo-info": "^2.1.1" }, "devDependencies": { @@ -42,6 +43,7 @@ "@ember/optional-features": "^2.0.0", "@ember/string": "^3.1.1", "@ember/test-helpers": "^2.7.0", + "@embroider/macros": "^1.11.1", "@embroider/test-setup": "^3.0.1", "@glimmer/component": "^1.1.2", "@glimmer/tracking": "^1.1.2", @@ -49,13 +51,13 @@ "concurrently": "^8.2.0", "ember-auto-import": "^2.6.3", "ember-cli": "^4.12.0", - "ember-cli-dependency-checker": "^3.3.1", + "ember-cli-dependency-checker": "^3.3.2", "ember-cli-htmlbars": "^6.2.0", "ember-cli-inject-live-reload": "^2.1.0", "ember-load-initializers": "^2.1.2", "ember-page-title": "^7.0.0", "ember-qunit": "^6.0.0", - "ember-resolver": "^10.1.0", + "ember-resolver": "^10.1.1", "ember-source": "^4.12.0", "ember-source-channel-url": "^3.0.0", "ember-template-lint": "^5.10.1", diff --git a/tests/dummy/app/templates/application.hbs b/tests/dummy/app/templates/application.hbs index ec9a9e6..058c069 100644 --- a/tests/dummy/app/templates/application.hbs +++ b/tests/dummy/app/templates/application.hbs @@ -2,4 +2,8 @@

EmberCLI App Version

-

Your app version is {{app-version}}

+{{#if (macroDependencySatisfies "@embroider/core" "*")}} +

Your app version is {{(app-version)}}

+{{else}} +

Your app version is {{app-version}}

+{{/if}} diff --git a/tests/integration/helpers/app-version-test.js b/tests/integration/helpers/app-version-test.js index 3cc4389..f853b6a 100644 --- a/tests/integration/helpers/app-version-test.js +++ b/tests/integration/helpers/app-version-test.js @@ -9,7 +9,13 @@ module('Integration | Helper | {{app-version}}', function (hooks) { test('it displays entire version', async function (assert) { assert.expect(1); - await render(hbs`{{app-version}}`); + await render(hbs` + {{#if (macroDependencySatisfies "@embroider/core" "*")}} + {{(app-version)}} + {{else}} + {{app-version}} + {{/if}} + `); assert.ok(this.element.textContent, 'Version not empty'); }); diff --git a/yarn.lock b/yarn.lock index 92f23b3..51bc504 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1366,12 +1366,12 @@ ember-cli-version-checker "^5.1.2" semver "^7.3.5" -"@embroider/macros@^1.0.0", "@embroider/macros@^1.10.0": - version "1.10.0" - resolved "https://registry.yarnpkg.com/@embroider/macros/-/macros-1.10.0.tgz#af3844d5db48f001b85cfb096c76727c72ad6c1e" - integrity sha512-LMbfQGk/a+f6xtvAv5fq/wf2LRxETnbgSCLUf/z6ebzmuskOUxrke+uP55chF/loWrARi9g6erFQ7RDOUoBMSg== +"@embroider/macros@^0.50.0 || ^1.0.0", "@embroider/macros@^1.11.0", "@embroider/macros@^1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@embroider/macros/-/macros-1.11.1.tgz#62eeb5bb7907ad01bdf750510c7f46c0192b6605" + integrity sha512-yg4Pl5Sw26lKrrtLwk2UEgYkKkztq+Hatn67QYL5A3I3T4IE/bRA3o6xvIslrJNnhyER7jCc2pwusxt3O4HubA== dependencies: - "@embroider/shared-internals" "2.0.0" + "@embroider/shared-internals" "2.1.0" assert-never "^1.2.1" babel-import-util "^1.1.0" ember-cli-babel "^7.26.6" @@ -1380,12 +1380,12 @@ resolve "^1.20.0" semver "^7.3.2" -"@embroider/macros@^1.11.0": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@embroider/macros/-/macros-1.11.1.tgz#62eeb5bb7907ad01bdf750510c7f46c0192b6605" - integrity sha512-yg4Pl5Sw26lKrrtLwk2UEgYkKkztq+Hatn67QYL5A3I3T4IE/bRA3o6xvIslrJNnhyER7jCc2pwusxt3O4HubA== +"@embroider/macros@^1.0.0", "@embroider/macros@^1.10.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@embroider/macros/-/macros-1.10.0.tgz#af3844d5db48f001b85cfb096c76727c72ad6c1e" + integrity sha512-LMbfQGk/a+f6xtvAv5fq/wf2LRxETnbgSCLUf/z6ebzmuskOUxrke+uP55chF/loWrARi9g6erFQ7RDOUoBMSg== dependencies: - "@embroider/shared-internals" "2.1.0" + "@embroider/shared-internals" "2.0.0" assert-never "^1.2.1" babel-import-util "^1.1.0" ember-cli-babel "^7.26.6" @@ -3575,7 +3575,7 @@ chalk@^1.0.0: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -4551,16 +4551,16 @@ ember-cli-babel@^7.13.0, ember-cli-babel@^7.13.2, ember-cli-babel@^7.22.1, ember rimraf "^3.0.1" semver "^5.5.0" -ember-cli-dependency-checker@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/ember-cli-dependency-checker/-/ember-cli-dependency-checker-3.3.1.tgz#16b44d7a1a1e946f59859fad97f32e616d78323a" - integrity sha512-Tg6OeijjXNKWkDm6057Tr0N9j9Vlz/ITewXWpn1A/+Wbt3EowBx5ZKfvoupqz05EznKgL1B/ecG0t+JN7Qm6MA== +ember-cli-dependency-checker@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/ember-cli-dependency-checker/-/ember-cli-dependency-checker-3.3.2.tgz#94ed7e8e3d47e494082eb9ccfaa489d603ab6017" + integrity sha512-PwkrW5oYsdPWwt+0Tojufmv/hxVETTjkrEdK7ANQB2VSnqpA5UcYubwpQM9ONuR2J8wyNDMwEHlqIrk/FYtBsQ== dependencies: - chalk "^2.3.0" - find-yarn-workspace-root "^1.1.0" + chalk "^2.4.2" + find-yarn-workspace-root "^1.2.1" is-git-url "^1.0.0" - resolve "^1.5.0" - semver "^5.3.0" + resolve "^1.22.0" + semver "^5.7.1" ember-cli-get-component-path-option@^1.0.0: version "1.0.0" @@ -4827,6 +4827,14 @@ ember-destroyable-polyfill@^2.0.3: ember-cli-version-checker "^5.1.1" ember-compatibility-helpers "^1.2.1" +ember-get-config@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ember-get-config/-/ember-get-config-2.1.1.tgz#bede76c25d95dbefab8d30064abf7aa00bc19235" + integrity sha512-uNmv1cPG/4qsac8oIf5txJ2FZ8p88LEpG4P3dNcjsJS98Y8hd0GPMFwVqpnzI78Lz7VYRGQWY4jnE4qm5R3j4g== + dependencies: + "@embroider/macros" "^0.50.0 || ^1.0.0" + ember-cli-babel "^7.26.6" + ember-load-initializers@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ember-load-initializers/-/ember-load-initializers-2.1.2.tgz#8a47a656c1f64f9b10cecdb4e22a9d52ad9c7efa" @@ -4857,10 +4865,10 @@ ember-qunit@^6.0.0: silent-error "^1.1.1" validate-peer-dependencies "^2.2.0" -ember-resolver@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/ember-resolver/-/ember-resolver-10.1.0.tgz#0ac7bb0105f8bd1d5a93603d4ccb5ef0a4205d9f" - integrity sha512-Ju/ORUUbGnR83AgC3qV6fIVuM5tyi/nPRf9ggTM2+kdeGPLNTSkNZ0zSbjWEm0kerDezMjj/RoGuLvZl/L758w== +ember-resolver@^10.1.1: + version "10.1.1" + resolved "https://registry.yarnpkg.com/ember-resolver/-/ember-resolver-10.1.1.tgz#1106a2386337b13a9ee509a9ad2a18b53a728ab3" + integrity sha512-y1zzn6C4YGJui+tJzcCKlsf1oSOSVAkRrvmg8OwqVIKnALKKb9ihx2qLCslHg8x0wJvJgMtDMXgrczvQrZW0Lw== dependencies: ember-cli-babel "^7.26.11" @@ -5828,7 +5836,7 @@ find-up@^6.3.0: locate-path "^7.1.0" path-exists "^5.0.0" -find-yarn-workspace-root@^1.1.0: +find-yarn-workspace-root@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db" integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q== @@ -10440,7 +10448,7 @@ semver-diff@^4.0.0: dependencies: semver "^7.3.5" -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==