UNPKG

28

Version:

Command line utility to download and upload 28.io queries.

64 lines (55 loc) 2.08 kB
'use strict'; var cli = require('commander'); var Config = require('../config').Config; var $28 = Config.getAPIClient(); var options = function(cmd){ cmd.option( '-o, --overwrite <value>', 'Overwrite files. Value can be yes, no, if-newer, or ask.', function(value){ return $28.overwriteCoercion(value, cmd); } ) .option('-s, --simulate', 'Simulate for extra safety.') .option('-d, --delete-orphaned', 'Delete orphaned files.') .option('-c, --concurrency <int>', 'Concurrency level.', function(value){ return $28.concurrencyCoercion(value, cmd); } ); }; var action = function(cmd, method) { cmd.action(function(projectName){ projectName = projectName || Config.getDefaultProject(); Config.refreshTokens(projectName).then(function(){ var projectToken; try { projectToken = Config.getProjectToken(projectName); } catch(e) { console.error(('Project not found: ' + projectName).red); return; } var localProjectPath = process.cwd(); method.apply($28, [ Config.getProjectEndpoint(projectName), projectToken, localProjectPath, cmd.overwrite === undefined ? $28.Options.OVERWRITE_ASK : cmd.overwrite, cmd.deleteOrphaned ? true : false, cmd.simulate ? true : false, function(queries){ return Config.filterQueries(queries); }, cmd.concurrency === undefined ? 8 : cmd.concurrency] ).then(function(){ console.log('All done.'.grey); }).catch(Config.handleAPIError); }); }); }; var dlCmd = cli.command('download <project-name>'); options(dlCmd); dlCmd.description('Download 28.io project.'); action(dlCmd, $28.download); var upCmd = cli.command('upload <project-name>'); options(upCmd); upCmd.description('Upload 28.io project.'); action(upCmd, $28.upload);