UNPKG

gia-cli

Version:

Guardian US Interactive CLI tool

114 lines (91 loc) 3.58 kB
var path = require( 'path' ); var sander = require( 'sander' ); var findup = require( 'findup-sync' ); var chalk = require( 'chalk' ); var checkVersion = require( '../utils/checkVersion' ); var cwd = process.cwd(); module.exports = function ( options ) { checkVersion( options.flags.force ).then( function () { var giafile = findup( 'giafile.js' ); if ( !giafile ) { console.error( 'Could not find giafile.js. Aborting' ); process.exit( 1 ); } cwd = path.dirname( giafile ); process.chdir( cwd ); if ( !sander.existsSync( 'gobblefile.js' ) ) { console.error( 'Wow, this project is really old. You\'ll have to upgrade it manually. Terribly sorry about that' ); process.exit( 1 ); } var pkg = JSON.parse( sander.readFileSync( 'package.json' ).toString() ); var gia = require( cwd + '/giafile.js' ); if ( pkg.dependencies ) { // Install legacy version of gia-toolkit console.log( '> setting gia-toolkit version to 0.0.1' ); if ( 'gia-toolkit' in pkg.dependencies ) pkg.dependencies[ 'gia-toolkit' ] = '0.0.1'; } console.log( '> adding gobble-cli to devDependencies' ); pkg.devDependencies[ 'gobble-cli' ] = '0.4.2'; console.log( '> setting gobble version to 0.10.2' ); pkg.devDependencies[ 'gobble' ] = '0.10.2'; // create npm run scripts if ( !pkg.scripts ) pkg.scripts = {}; var scripts = pkg.scripts; var warnings = []; // npm start if ( !scripts.start ) { console.log( '> adding start script' ); scripts.start = 'gobble -p ' + gia.port; } else { warnings.push( 'existing npm start script may cause issues' ); } // npm run deploy if ( !scripts.deploy ) { console.log( '> adding deploy script' ); scripts.deploy = 'node scripts/deploy.js'; scripts.predeploy = 'npm run build'; sander.copyFileSync( __dirname, 'resources/scripts/deploy.js' ).to( 'scripts/deploy.js' ); // this is crude, but whatever pkg.devDependencies.mime = '1.3.4'; pkg.devDependencies[ 'aws-sdk' ] = '2.2.4'; pkg.devDependencies.glob = '5.0.15'; pkg.devDependencies.filesize = '3.1.3'; pkg.devDependencies.stevedore = '0.1.4'; pkg.devDependencies.chalk = '1.1.1'; } else { warnings.push( 'existing npm run deploy script may cause issues' ); } // npm run build if ( !scripts.build ) { console.log( '> adding build script' ); scripts.build = 'gobble build -f .deploy'; } else { warnings.push( 'existing npm run build script may cause issues' ); } // npm run open if ( !scripts.open ) { console.log( '> adding open script' ); scripts.open = 'node scripts/open.js'; sander.copyFileSync( __dirname, 'resources/scripts/open.js' ).to( 'scripts/open.js' ); } // npm run serve if ( !scripts.serve ) { console.log( '> adding serve script' ); scripts.serve = 'open http://localhost:5800 && npm start'; } // copy over .babelrc and .eslintrc files [ '.eslintrc', '.babelrc' ].forEach( function( file ) { if ( !sander.existsSync( file ) ) { console.log( '> creating', file ); sander.copyFileSync( __dirname, 'resources', file ).to( file ); } }); // save updated package.json console.log( '> saving updated package.json' ); sander.writeFileSync( 'package.json', JSON.stringify( pkg, null, ' ' ) + '\n' ); console.log( 'Now update your dependencies with ' + chalk.cyan( 'npm i' ) + ', then test with ' + chalk.cyan( 'npm start' ) + '. Upgrading old projects is an inexact science; test thoroughly before redeploying' ); warnings.forEach( function ( msg ) { console.log( chalk.red( '* ' + msg ) ); }); }); }