Skip to content

Commit 320c089

Browse files
committed
feat(packaging): automatically copy LICENSE to dist folders
1 parent 583de5b commit 320c089

File tree

2 files changed

+54
-2
lines changed

2 files changed

+54
-2
lines changed

gulpfile.js

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ var dartanalyzer = require('./tools/build/dartanalyzer');
1414
var jsserve = require('./tools/build/jsserve');
1515
var pubserve = require('./tools/build/pubserve');
1616
var rundartpackage = require('./tools/build/rundartpackage');
17+
var multicopy = require('./tools/build/multicopy');
1718
var karma = require('karma').server;
1819
var minimist = require('minimist');
1920

@@ -177,6 +178,9 @@ var CONFIG = {
177178
pubspec: {
178179
src: 'modules/*/pubspec.yaml'
179180
},
181+
license: {
182+
src: 'LICENSE'
183+
},
180184
formatDart: {
181185
packageName: 'dart_style',
182186
args: ['dart_style:format', '-w', 'dist/dart']
@@ -293,6 +297,25 @@ gulp.task('build/html.dart', html(gulp, gulpPlugins, {
293297
scriptsPerFolder: CONFIG.html.scriptsPerFolder.dart
294298
}));
295299

300+
// ------------
301+
// license
302+
303+
gulp.task('build/license.js.dev', multicopy(gulp, gulpPlugins, {
304+
src: CONFIG.license.src,
305+
dest: CONFIG.dest.js.dev
306+
}));
307+
308+
gulp.task('build/license.js.prod', multicopy(gulp, gulpPlugins, {
309+
src: CONFIG.license.src,
310+
dest: CONFIG.dest.js.prod
311+
}));
312+
313+
gulp.task('build/license.dart', multicopy(gulp, gulpPlugins, {
314+
src: CONFIG.license.src,
315+
dest: CONFIG.dest.dart
316+
}));
317+
318+
296319
// ------------
297320
// pubspec
298321

@@ -454,6 +477,7 @@ gulp.task('build.dart', function() {
454477
return runSequence(
455478
['build/deps.js.dart2js', 'build/transpile.dart', 'build/html.dart'],
456479
'build/pubspec.dart',
480+
'build/license.dart',
457481
'build/pubbuild.dart',
458482
'build/analyze.dart',
459483
'build/format.dart'
@@ -462,13 +486,15 @@ gulp.task('build.dart', function() {
462486

463487
gulp.task('build.js.dev', function() {
464488
return runSequence(
465-
['build/deps.js.dev', 'build/transpile.js.dev', 'build/html.js.dev']
489+
['build/deps.js.dev', 'build/transpile.js.dev', 'build/html.js.dev'],
490+
'build/license.js.dev'
466491
);
467492
});
468493

469494
gulp.task('build.js.prod', function() {
470495
return runSequence(
471-
['build/deps.js.prod', 'build/transpile.js.prod', 'build/html.js.prod']
496+
['build/deps.js.prod', 'build/transpile.js.prod', 'build/html.js.prod'],
497+
'build/license.js.prod'
472498
);
473499
});
474500

tools/build/multicopy.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* A utility that allows copying one file to multiple directories, such
3+
* as the LICENSE file.
4+
*/
5+
var path = require('path');
6+
var fs = require('fs');
7+
8+
module.exports = function(gulp, plugins, config) {
9+
return function() {
10+
var content = fs.readFileSync(config.src);
11+
getSubdirs(config.dest).forEach(function(subDir) {
12+
var destFile = path.join(config.dest, subDir, path.basename(config.src));
13+
fs.writeFileSync(destFile, content);
14+
});
15+
};
16+
};
17+
18+
function getSubdirs(rootDir) {
19+
return fs.readdirSync(rootDir).filter(function(file) {
20+
if (file[0] === '.') {
21+
return false;
22+
}
23+
var dirPath = path.join(rootDir, file);
24+
return fs.statSync(dirPath).isDirectory();
25+
});
26+
}

0 commit comments

Comments
 (0)