Skip to content

Commit 4e7d36f

Browse files
author
Kelly Selden
committed
consolidate code into resolvePackage
1 parent d4ee886 commit 4e7d36f

5 files changed

Lines changed: 91 additions & 69 deletions

File tree

src/index.js

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,34 @@ const findBlueprint = require('./find-blueprint');
2323
const getBaseBlueprint = require('./get-base-blueprint');
2424
const chooseBlueprintUpdates = require('./choose-blueprint-updates');
2525
const getBlueprintFilePath = require('./get-blueprint-file-path');
26+
const resolvePackage = require('./resolve-package');
2627

2728
const {
2829
'to': { default: toDefault },
2930
'codemods-url': { default: codemodsUrlDefault }
3031
} = require('./args');
3132

33+
async function _resolvePackage(blueprint, url, range) {
34+
if (blueprint.version && !url) {
35+
return;
36+
}
37+
38+
let {
39+
version,
40+
path
41+
} = await resolvePackage({
42+
name: blueprint.packageName,
43+
url,
44+
range
45+
});
46+
47+
blueprint.version = version;
48+
49+
if (path) {
50+
blueprint.path = path;
51+
}
52+
}
53+
3254
module.exports = async function emberCliUpdate({
3355
blueprint: _blueprint,
3456
from,
@@ -173,29 +195,13 @@ module.exports = async function emberCliUpdate({
173195
}
174196

175197
endBlueprint = { ...blueprint };
198+
delete endBlueprint.version;
176199

177200
if (isCustomBlueprint) {
178-
if (packageUrl) {
179-
let [
180-
startDownloadedPackage,
181-
endDownloadedPackage
182-
] = await Promise.all([
183-
startBlueprint ? downloadPackage(startBlueprint.packageName, packageUrl, startBlueprint.version) : null,
184-
downloadPackage(endBlueprint.packageName, packageUrl, to)
185-
]);
186-
187-
if (startBlueprint) {
188-
startBlueprint.path = startDownloadedPackage.path;
189-
startBlueprint.version = startDownloadedPackage.version;
190-
}
191-
192-
endBlueprint.path = endDownloadedPackage.path;
193-
endBlueprint.version = endDownloadedPackage.version;
194-
} else {
195-
let versions = await getVersions(endBlueprint.packageName);
196-
let getTagVersion = _getTagVersion(versions, endBlueprint.packageName);
197-
endBlueprint.version = await getTagVersion(to);
198-
}
201+
await Promise.all([
202+
startBlueprint ? _resolvePackage(startBlueprint, packageUrl, startBlueprint.version) : null,
203+
_resolvePackage(endBlueprint, packageUrl, to)
204+
]);
199205
} else {
200206
let packageName = getPackageName(projectOptions);
201207
let packageVersion = getPackageVersion(packageJson, packageName);

src/init.js

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
const boilerplateUpdate = require('boilerplate-update');
44
const getStartAndEndCommands = require('./get-start-and-end-commands');
55
const parseBlueprintPackage = require('./parse-blueprint-package');
6-
const downloadPackage = require('./download-package');
76
const saveBlueprint = require('./save-blueprint');
87
const loadDefaultBlueprintFromDisk = require('./load-default-blueprint-from-disk');
98
const loadSafeBlueprint = require('./load-safe-blueprint');
@@ -14,9 +13,8 @@ const loadBlueprintFile = require('./load-blueprint-file');
1413
const bootstrap = require('./bootstrap');
1514
const findBlueprint = require('./find-blueprint');
1615
const getBaseBlueprint = require('./get-base-blueprint');
17-
const getVersions = require('boilerplate-update/src/get-versions');
18-
const _getTagVersion = require('./get-tag-version');
1916
const getBlueprintFilePath = require('./get-blueprint-file-path');
17+
const resolvePackage = require('./resolve-package');
2018

2119
module.exports = async function init({
2220
blueprint: _blueprint,
@@ -52,19 +50,18 @@ module.exports = async function init({
5250
name = defaultBlueprint.name;
5351
}
5452

55-
let version;
56-
let path;
57-
if (url) {
58-
let downloadedPackage = await downloadPackage(packageName, url, to);
59-
packageName = downloadedPackage.name;
60-
name = downloadedPackage.name;
61-
version = downloadedPackage.version;
62-
path = downloadedPackage.path;
63-
} else {
64-
let versions = await getVersions(packageName);
65-
let getTagVersion = _getTagVersion(versions, packageName);
66-
version = await getTagVersion(to);
53+
let packageInfo = await resolvePackage({
54+
name: packageName,
55+
url,
56+
range: to
57+
});
58+
59+
packageName = packageInfo.name;
60+
if (!name) {
61+
name = packageInfo.name;
6762
}
63+
let version = packageInfo.version;
64+
let path = packageInfo.path;
6865

6966
let emberCliUpdateJson = await loadSafeBlueprintFile(emberCliUpdateJsonPath);
7067

src/install.js

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
'use strict';
22

33
const parseBlueprintPackage = require('./parse-blueprint-package');
4-
const downloadPackage = require('./download-package');
54
const loadSafeBlueprint = require('./load-safe-blueprint');
65
const saveBlueprint = require('./save-blueprint');
76
const loadBlueprintFile = require('./load-blueprint-file');
87
const bootstrap = require('./bootstrap');
98
const emberInstallAddon = require('./ember-install-addon');
10-
const getVersions = require('boilerplate-update/src/get-versions');
11-
const _getTagVersion = require('./get-tag-version');
129
const getBlueprintFilePath = require('./get-blueprint-file-path');
10+
const resolvePackage = require('./resolve-package');
1311

1412
const toDefault = require('./args').to.default;
1513

@@ -28,20 +26,15 @@ module.exports = async function install({
2826
blueprint: addon
2927
});
3028

31-
let packageName;
32-
let version;
33-
let path;
34-
if (parsedPackage.location) {
35-
let downloadedPackage = await downloadPackage(null, parsedPackage.url, toDefault);
36-
packageName = downloadedPackage.name;
37-
version = downloadedPackage.version;
38-
path = downloadedPackage.path;
39-
} else {
40-
packageName = addon;
41-
let versions = await getVersions(packageName);
42-
let getTagVersion = _getTagVersion(versions, packageName);
43-
version = await getTagVersion(toDefault);
44-
}
29+
let {
30+
name: packageName,
31+
version,
32+
path
33+
} = await resolvePackage({
34+
name: addon,
35+
url: parsedPackage.url,
36+
range: toDefault
37+
});
4538

4639
// We are double installing it, via the above and the below.
4740
// The above is needed to resolve the real package name

src/resolve-package.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
'use strict';
2+
3+
const downloadPackage = require('./download-package');
4+
const getVersions = require('boilerplate-update/src/get-versions');
5+
const _getTagVersion = require('./get-tag-version');
6+
7+
async function resolvePackage({
8+
name,
9+
url,
10+
range
11+
}) {
12+
let version;
13+
let path;
14+
15+
if (url) {
16+
let downloadedPackage = await downloadPackage(name, url, range);
17+
name = downloadedPackage.name;
18+
version = downloadedPackage.version;
19+
path = downloadedPackage.path;
20+
} else {
21+
let versions = await getVersions(name);
22+
let getTagVersion = _getTagVersion(versions, name);
23+
version = await getTagVersion(range);
24+
}
25+
26+
return {
27+
name,
28+
version,
29+
path
30+
};
31+
}
32+
33+
module.exports = resolvePackage;

src/save.js

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
'use strict';
22

33
const parseBlueprintPackage = require('./parse-blueprint-package');
4-
const downloadPackage = require('./download-package');
54
const loadSafeBlueprint = require('./load-safe-blueprint');
65
const saveBlueprint = require('./save-blueprint');
76
const loadBlueprintFile = require('./load-blueprint-file');
87
const bootstrap = require('./bootstrap');
98
const getBlueprintFilePath = require('./get-blueprint-file-path');
10-
const getVersions = require('boilerplate-update/src/get-versions');
11-
const _getTagVersion = require('./get-tag-version');
9+
const resolvePackage = require('./resolve-package');
1210

1311
module.exports = async function save({
1412
blueprint: _blueprint,
@@ -31,19 +29,14 @@ module.exports = async function save({
3129
blueprint: _blueprint
3230
});
3331

34-
let packageName;
35-
let version;
36-
37-
if (parsedPackage.location) {
38-
let downloadedPackage = await downloadPackage(null, parsedPackage.url, from);
39-
packageName = downloadedPackage.name;
40-
version = downloadedPackage.version;
41-
} else {
42-
packageName = _blueprint;
43-
let versions = await getVersions(packageName);
44-
let getTagVersion = _getTagVersion(versions, packageName);
45-
version = await getTagVersion(from);
46-
}
32+
let {
33+
name: packageName,
34+
version
35+
} = await resolvePackage({
36+
name: _blueprint,
37+
url: parsedPackage.url,
38+
range: from
39+
});
4740

4841
let blueprint = loadSafeBlueprint({
4942
packageName,

0 commit comments

Comments
 (0)