From ea6aa488af12d539f73794f2e6bbe3c3846c0fb0 Mon Sep 17 00:00:00 2001 From: Florian Pichler Date: Wed, 1 Oct 2025 17:46:51 +0200 Subject: [PATCH] Force people using the default blueprint to move to the newly published package --- src/constants.js | 4 ++++ src/index.js | 21 ++++++++++++++++++++- src/save-blueprint.js | 20 ++++++++++++++++++++ 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/src/constants.js b/src/constants.js index 445f94244..aead07e10 100644 --- a/src/constants.js +++ b/src/constants.js @@ -7,3 +7,7 @@ module.exports.defaultAddonBlueprintName = 'addon'; module.exports.glimmerPackageName = '@glimmer/blueprint'; module.exports.defaultTo = '*'; + +module.exports.EMBER_LEGACY_BLUEPRINT_VERSION = '6.7.0'; +module.exports.CLASSIC_BUILD_APP_BLUEPRINT = + '@ember-tooling/classic-build-app-blueprint'; diff --git a/src/index.js b/src/index.js index bf3741f36..a71c09736 100644 --- a/src/index.js +++ b/src/index.js @@ -20,8 +20,15 @@ const getBaseBlueprint = require('./get-base-blueprint'); const chooseBlueprintUpdates = require('./choose-blueprint-updates'); const getBlueprintFilePath = require('./get-blueprint-file-path'); const resolvePackage = require('./resolve-package'); -const { defaultTo } = require('./constants'); +const { + defaultTo, + defaultAppBlueprintName, + defaultPackageName, + EMBER_LEGACY_BLUEPRINT_VERSION, + CLASSIC_BUILD_APP_BLUEPRINT +} = require('./constants'); const normalizeBlueprintArgs = require('./normalize-blueprint-args'); +const semver = require('semver'); /** * If `version` attribute exists in the `blueprint` object and URL is empty, skip. Otherwise resolve the details of @@ -211,6 +218,18 @@ module.exports = async function emberCliUpdate({ let versions = await getVersions(packageName); let getTagVersion = _getTagVersion(versions, packageName); endBlueprint.version = await getTagVersion(to); + + if ( + endBlueprint.isBaseBlueprint && + packageName === defaultPackageName && + endBlueprint.name === defaultAppBlueprintName && + semver.gte(to, EMBER_LEGACY_BLUEPRINT_VERSION) + ) { + endBlueprint.name = CLASSIC_BUILD_APP_BLUEPRINT; + endBlueprint.packageName = CLASSIC_BUILD_APP_BLUEPRINT; + + await _resolvePackage(endBlueprint, packageUrl, to); + } } let customDiffOptions = getStartAndEndCommands({ diff --git a/src/save-blueprint.js b/src/save-blueprint.js index 21d8322ec..ba0eda9e0 100644 --- a/src/save-blueprint.js +++ b/src/save-blueprint.js @@ -2,6 +2,13 @@ const utils = require('./utils'); const findBlueprint = require('./find-blueprint'); +const { + defaultPackageName, + defaultAppBlueprintName, + EMBER_LEGACY_BLUEPRINT_VERSION, + CLASSIC_BUILD_APP_BLUEPRINT +} = require('./constants'); +const semver = require('semver'); function addBlueprint(emberCliUpdateJson, blueprint) { emberCliUpdateJson.blueprints.push(blueprint); @@ -67,6 +74,19 @@ async function saveBlueprint({ emberCliUpdateJsonPath, blueprint }) { savedBlueprint.version = version; } + if ( + savedBlueprint.isBaseBlueprint && + packageName === defaultPackageName && + name === defaultAppBlueprintName && + semver.gte(version, EMBER_LEGACY_BLUEPRINT_VERSION) + ) { + savedBlueprint.name = CLASSIC_BUILD_APP_BLUEPRINT; + delete savedBlueprint.packageName; + delete savedBlueprint.location; + delete savedBlueprint.codemodsSource; + delete savedBlueprint.outputRepo; + } + await utils.saveBlueprintFile(emberCliUpdateJsonPath, emberCliUpdateJson); }