Skip to content

Commit 274de2b

Browse files
committed
Extract package.js
1 parent a7be776 commit 274de2b

File tree

3 files changed

+90
-65
lines changed

3 files changed

+90
-65
lines changed

gulpfile.js

Lines changed: 31 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,91 +1,57 @@
11
'use strict';
22

3-
const path = require('path');
43
const gulp = require('gulp');
54
const log = require('fancy-log');
6-
const glob = require('glob');
75
const ejs = require('gulp-ejs');
86
const zip = require('gulp-zip');
97
const mergeStream = require('merge-stream');
108
const {
119
formatVersionFolder,
1210
compareStrings,
1311
formatPackageUpgrades,
12+
getLibraries,
13+
getUpgradeVersions,
1414
} = require('./utility');
1515

16-
const { dependencies } = require('./package.json');
17-
18-
const libraries = glob
19-
.sync('*/dnn-library.json')
20-
.map(manifestPath => ({
21-
path: path.dirname(manifestPath),
22-
manifest: require(path.resolve(manifestPath)),
23-
}))
24-
.map(library =>
25-
Object.assign(library, { name: path.basename(library.path) })
26-
)
27-
.map(library =>
28-
Object.assign(library, { version: dependencies[library.name] })
29-
);
16+
const libraries = getLibraries();
3017

3118
libraries.forEach(library =>
32-
gulp.task(library.path, () =>
33-
mergeStream(
34-
gulp.src(library.manifest.files),
35-
gulp
36-
.src(library.manifest.resources || [])
37-
.pipe(zip('Resources.zip')),
38-
gulp
39-
.src(['LICENSE.htm', 'CHANGES.htm', '*.dnn'], {
40-
cwd: library.path,
41-
})
42-
.pipe(
43-
ejs(
44-
{
45-
version: library.version,
46-
versionFolder: formatVersionFolder(library.version),
47-
},
48-
{ delimiter: '~' }
49-
)
50-
)
19+
gulp.task(library.path, () => {
20+
const mainFileStream = gulp.src(library.manifest.files);
21+
const resourceZipStream = gulp
22+
.src(library.manifest.resources || [])
23+
.pipe(zip('Resources.zip'));
24+
25+
const templateData = {
26+
version: library.version,
27+
versionFolder: formatVersionFolder(library.version),
28+
};
29+
const packageFilesStream = gulp
30+
.src(['LICENSE.htm', 'CHANGES.htm', '*.dnn'], {
31+
cwd: library.path,
32+
})
33+
.pipe(ejs(templateData, { delimiter: '~' }));
34+
35+
return mergeStream(
36+
mainFileStream,
37+
resourceZipStream,
38+
packageFilesStream
5139
)
5240
.pipe(zip(`${library.name}_${library.version}.zip`))
53-
.pipe(gulp.dest('./_InstallPackages/'))
54-
)
41+
.pipe(gulp.dest('./_InstallPackages/'));
42+
})
5543
);
5644

57-
const libraryTaskNames = libraries.map(l => l.path);
45+
const libraryTaskNames = libraries.map(library => library.path);
5846

5947
gulp.task('default', libraryTaskNames);
6048

6149
gulp.task('outdated', () => {
62-
const packageJson = require('package-json');
63-
const semver = require('semver');
64-
65-
const allUpgradesPromises = Object.keys(dependencies).map(name => {
66-
const currentVersion = dependencies[name];
67-
68-
const packageUpgrades = packageJson(name, { allVersions: true }).then(
69-
({ versions }) =>
70-
Object.keys(versions)
71-
.filter(version => semver.gt(version, currentVersion))
72-
.sort(semver.compare)
73-
.reduce(
74-
(upgrades, version) =>
75-
upgrades.set(
76-
semver.diff(version, currentVersion),
77-
version
78-
),
79-
new Map()
80-
)
81-
);
82-
83-
return packageUpgrades.then(upgrades => ({
84-
name,
85-
version: currentVersion,
86-
upgrades,
87-
}));
88-
});
50+
const allUpgradesPromises = libraries.map(library =>
51+
getUpgradeVersions(library).then(upgrades =>
52+
Object.assign(library, { upgrades })
53+
)
54+
);
8955

9056
return Promise.all(allUpgradesPromises).then(allUpgrades => {
9157
const validUpgrades = allUpgrades

utility/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
'use strict';
22

33
const { formatPackageUpgrades } = require('./ui');
4+
const { getLibraries, getUpgradeVersions } = require('./packages');
45

56
/**
67
* Format a version number in the format used by DNN JS library folders
@@ -42,4 +43,6 @@ module.exports = {
4243
formatVersionFolder,
4344
compareStrings,
4445
formatPackageUpgrades,
46+
getLibraries,
47+
getUpgradeVersions,
4548
};

utility/packages.js

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
'use strict';
2+
3+
const path = require('path');
4+
const glob = require('glob');
5+
const semver = require('semver');
6+
const packageJson = require('package-json');
7+
const { dependencies } = require('../package.json');
8+
9+
/**
10+
* Gets the current list of DNN JS libraries in this repo
11+
*
12+
* @returns {object[]} An array of objects with path, manifest, name, and version
13+
*/
14+
function getLibraries() {
15+
return glob
16+
.sync('*/dnn-library.json')
17+
.map(manifestPath => ({
18+
path: path.dirname(manifestPath),
19+
manifest: require(path.resolve(manifestPath)),
20+
}))
21+
.map(library =>
22+
Object.assign(library, { name: path.basename(library.path) })
23+
)
24+
.map(library =>
25+
Object.assign(library, { version: dependencies[library.name] })
26+
);
27+
}
28+
29+
/**
30+
* Gets the available upgrade versions for a library
31+
*
32+
* @param {object} library - A library object
33+
* @returns {Promise} A Promise which returns a Map with available version upgrades
34+
*/
35+
function getUpgradeVersions(library) {
36+
return packageJson(library.name, {
37+
allVersions: true,
38+
}).then(({ versions }) =>
39+
Object.keys(versions)
40+
.filter(version => semver.gt(version, library.version))
41+
.sort(semver.compare)
42+
.reduce(
43+
(upgrades, version) =>
44+
upgrades.set(
45+
semver.diff(version, library.version),
46+
version
47+
),
48+
new Map()
49+
)
50+
);
51+
}
52+
53+
module.exports = {
54+
getLibraries,
55+
getUpgradeVersions,
56+
};

0 commit comments

Comments
 (0)