UNPKG

dmc

Version:

Cross-platform, developer cli tool for Salesforce

63 lines (54 loc) 1.67 kB
var Promise = require('bluebird'); var glob = Promise.promisify(require('glob')); var cliUtil = require('../lib/cli-util'); var _ = require('lodash'); var logger = require('../lib/logger'); var watch = require('node-watch'); var hl = logger.highlight; var deploy = require('./deploy'); var globOpts = { matchBase: true, nodir: false, noglobstar: false, nomount: true }; var run = module.exports.run = function(opts) { if(!opts.globs || !opts.globs.length) { opts.globs = [ 'src/**/*' ]; } Promise.reduce(opts.globs, function(allFiles, file) { return glob(file, globOpts).then(function(files) { return allFiles.concat(files); }); }, []) .then(function(allFiles) { logger.log('now watching ' + hl(allFiles.length) + ' files'); watch(_.uniq(allFiles), function(f) { logger.log('file changed: ' + f); deploy.run({ org: opts.org, oauth: opts.oauth, globs: [f], meta: opts.meta }, function(err, res) { if(err) { console.error(err); logger.error('deploy failed: re-watching files'); } else { logger.success('deploy complete: re-watching files'); } }); }); }); }; module.exports.cli = function(program) { program.command('watch [globs...]') .description('watch files and deploy metadata to target org') .option('-o, --org <org>', 'the Salesforce organization to use') .option('--meta', 'force deploy with metadata api') .action(function(globs, opts) { opts.globs = globs; opts._loadOrg = true; return cliUtil.executeRun(run)(opts); }); };