Skip to content

Instantly share code, notes, and snippets.

@njs50
Created June 2, 2016 13:22
Show Gist options
  • Save njs50/3df497ebec5539e632fef0ac410f9f1c to your computer and use it in GitHub Desktop.
Save njs50/3df497ebec5539e632fef0ac410f9f1c to your computer and use it in GitHub Desktop.
shell script to update seed
#!/usr/bin/env node
var fs = require('fs');
var join = require('path').join;
var EDC_HOME = process.env.EDC_HOME;
var seedPath = join(EDC_HOME, 'angular2-seed');
// update seed git repo
console.log('Updating seed (git pull)')
var exec = require('child_process').execSync;
var execOutput = exec('git pull', {cwd: seedPath});
console.log(execOutput.toString())
var targetPath = process.cwd();
var targetPackagePath = join(targetPath, 'package.json');
var seedPackage, targetPackage;
try {
targetPackage = JSON.parse(fs.readFileSync(targetPackagePath, 'utf8'));
} catch (err) {
console.log('unable to read package.json in this directory');
process.exit(1);
}
try {
seedPackage = JSON.parse(fs.readFileSync(join(seedPath, 'package.json'), 'utf8'));
} catch (err) {
console.log('unable to read package.json in this directory');
process.exit(1);
}
console.log('Checking ' + targetPackagePath + ' for updates from angular2-seed');
/* add ability to ignore specific npm modules via the target package.json configuration */
var mergeFields = ['devDependencies', 'dependencies'];
for (var i = 0 ; i < mergeFields.length; i++ ) {
var field = mergeFields[i];
if (seedPackage.hasOwnProperty(field)) {
for (var package in seedPackage[field]) {
// if a dependency is also in dev dependencies remove it from the dev dependencies
if (field == 'dependencies' && targetPackage.devDependencies && targetPackage.devDependencies[package] ) {
console.log(' * removing dependency from devDependencies : ' + package + ' ' + targetPackage.devDependencies[package]);
delete targetPackage.devDependencies[package];
}
// log message for added or updated files
if (!targetPackage[field] || !targetPackage[field][package]) {
console.log(' * adding ' + field + ' : ' + package + ' ' + seedPackage[field][package]);
targetPackage[field][package] = seedPackage[field][package];
} else if (targetPackage[field][package] !== seedPackage[field][package]) {
console.log(' * updating ' + field + ' : ' + package + ' to ' + seedPackage[field][package] );
targetPackage[field][package] = seedPackage[field][package];
}
}
}
}
// replace master package.json
fs.writeFileSync(targetPackagePath, JSON.stringify(targetPackage, null, 2), 'utf8');
console.log('Copying seed files...');
// copy seed files!
var gulp = require(join(targetPath, 'node_modules', 'gulp'));
var complete = false;
gulp.task('copy', function() {
return gulp.src([
join(seedPath, 'tools', 'utils', 'seed*.ts'),
join(seedPath, 'tools', 'config', 'seed*.ts'),
join(seedPath, 'tools', 'tasks', 'seed', '*'),
join(seedPath, 'tools', 'utils', 'seed', '*'),
join(seedPath, 'tools', 'manual_typings', 'seed', '*'),
join(seedPath, 'karma.conf.js'),
join(seedPath, 'protractor.conf.js'),
join(seedPath, 'test-main.js'),
join(seedPath, 'typings.json')
], {base: seedPath})
.pipe(gulp.dest(targetPath))
;
});
gulp.run('copy');
console.log('... complete');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment