diff --git a/cli/facade/init.js b/cli/facade/init.js index d6aed9bd2..2ffdf4794 100644 --- a/cli/facade/init.js +++ b/cli/facade/init.js @@ -2,6 +2,7 @@ var colors = require('colors/safe'); var format = require('stringformat'); +var _ = require('underscore'); var strings = require('../../resources/index'); @@ -10,7 +11,10 @@ module.exports = function(dependencies){ var local = dependencies.local, logger = dependencies.logger; - return function(opts){ + return function(opts, callback){ + + callback = callback || _.noop; + var componentName = opts.componentName, templateType = opts.templateType, errors = strings.errors.cli; @@ -25,10 +29,12 @@ module.exports = function(dependencies){ err = errors.TEMPLATE_TYPE_NOT_VALID; } - logger.log(format(colors.red(errors.INIT_FAIL), err)); + logger.log(colors.red(format(errors.INIT_FAIL, err))); } else { - logger.log(format(colors.green(strings.messages.cli.COMPONENT_INITED), componentName)); + logger.log(colors.green(format(strings.messages.cli.COMPONENT_INITED, componentName))); } + + callback(err, componentName); }); }; }; \ No newline at end of file diff --git a/cli/facade/mock.js b/cli/facade/mock.js index 048313c7c..60539f156 100644 --- a/cli/facade/mock.js +++ b/cli/facade/mock.js @@ -2,6 +2,7 @@ var colors = require('colors/safe'); var format = require('stringformat'); +var _ = require('underscore'); var strings = require('../../resources/index'); @@ -10,9 +11,13 @@ module.exports = function(dependencies){ var local = dependencies.local, logger = dependencies.logger; - return function(opts){ + return function(opts, callback){ + + callback = callback || _.noop; + local.mock(opts, function(err, res){ - return logger.log(colors.green(format(strings.messages.cli.MOCKED_PLUGIN, opts.targetName, opts.targetValue))); + logger.log(colors.green(format(strings.messages.cli.MOCKED_PLUGIN, opts.targetName, opts.targetValue))); + callback(err, res); }); }; }; \ No newline at end of file diff --git a/cli/facade/preview.js b/cli/facade/preview.js index 288628a06..4ff982638 100644 --- a/cli/facade/preview.js +++ b/cli/facade/preview.js @@ -2,6 +2,7 @@ var colors = require('colors/safe'); var opn = require('opn'); +var _ = require('underscore'); var strings = require('../../resources/index'); @@ -10,10 +11,17 @@ module.exports = function(dependencies){ var logger = dependencies.logger, registry = dependencies.registry; - return function(opts){ + return function(opts, callback){ + + callback = callback || _.noop; + registry.getComponentPreviewUrlByUrl(opts.componentHref, function(err, href){ - if(err){ return logger.log(colors.red(strings.errors.cli.COMPONENT_HREF_NOT_FOUND)); } + if(err){ + logger.log(colors.red(strings.errors.cli.COMPONENT_HREF_NOT_FOUND)); + return callback(strings.errors.cli.COMPONENT_HREF_NOT_FOUND); + } opn(href); + callback(null, href); }); }; }; diff --git a/cli/facade/publish.js b/cli/facade/publish.js index 320eb6ffe..ab45eb94a 100644 --- a/cli/facade/publish.js +++ b/cli/facade/publish.js @@ -28,7 +28,8 @@ module.exports = function(dependencies){ var componentPath = opts.componentPath, packageDir = path.resolve(componentPath, '_package'), - compressedPackagePath = path.resolve(componentPath, 'package.tar.gz'); + compressedPackagePath = path.resolve(componentPath, 'package.tar.gz'), + errorMessage; var getCredentials = function(cb){ if(opts.username && opts.password){ @@ -84,41 +85,51 @@ module.exports = function(dependencies){ var upgradeCommand = format(strings.commands.cli.UPGRADE, err.details.suggestedVersion), errorDetails = format(strings.errors.cli.OC_CLI_VERSION_NEEDS_UPGRADE, colors.blue(upgradeCommand)); - log.err(format(strings.errors.cli.PUBLISHING_FAIL, errorDetails)); - return cb(); + errorMessage = format(strings.errors.cli.PUBLISHING_FAIL, errorDetails); + log.err(errorMessage); + return cb(errorMessage); } else if(err.code === 'node_version_not_valid') { var details = format(strings.errors.cli.NODE_CLI_VERSION_NEEDS_UPGRADE, err.details.suggestedVersion); - log.err(format(strings.errors.cli.PUBLISHING_FAIL, details)); - return cb(); + errorMessage = format(strings.errors.cli.PUBLISHING_FAIL, details); + log.err(errorMessage); + return cb(errorMessage); } else { - log.err(format(strings.errors.cli.PUBLISHING_FAIL, err)); - return cb(); + errorMessage = format(strings.errors.cli.PUBLISHING_FAIL, err); + log.err(errorMessage); + return cb(errorMessage); } } else { - log.ok(format(strings.messages.cli.PUBLISHED, options.route.green)); - return cb(); + log.ok(format(strings.messages.cli.PUBLISHED, options.route)); + return cb(null, 'ok'); } }); }; registry.get(function(err, registryLocations){ - if(err){ return log.err(err); } + if(err){ + log.err(err); + return callback(err); + } packageAndCompress(function(err, component){ if(err){ - return log.err(format(strings.errors.cli.PACKAGE_CREATION_FAIL, err)); + errorMessage = format(strings.errors.cli.PACKAGE_CREATION_FAIL, err); + log.err(errorMessage); + return callback(errorMessage); } - async.eachSeries(registryLocations, function(l, next){ - var registryUrl = l, - registryLength = registryUrl.length, + async.eachSeries(registryLocations, function(registryUrl, next){ + var registryLength = registryUrl.length, registryNormalised = registryUrl.slice(registryLength - 1) === '/' ? registryUrl.slice(0, registryLength - 1) : registryUrl, componentRoute = format('{0}/{1}/{2}', registryNormalised, component.name, component.version); putComponentToRegistry({ route: componentRoute, path: compressedPackagePath}, next); }, function(err){ - local.cleanup(compressedPackagePath, callback); + local.cleanup(compressedPackagePath, function(err2, res){ + if(err){ return callback(err); } + callback(err2, res); + }); }); }); }); diff --git a/cli/facade/registry.js b/cli/facade/registry.js index 2ac66eef2..99bab13a8 100644 --- a/cli/facade/registry.js +++ b/cli/facade/registry.js @@ -17,30 +17,50 @@ module.exports = function(dependencies){ warn: function(msg){ return logger.log(colors.yellow(msg)); } }; - return function(opts){ + return function(opts, callback){ + + callback = callback || _.noop; + if(opts.command === 'ls'){ registry.get(function(err, registries){ if(err){ - return log.err(format(strings.errors.generic, err)); + log.err(format(strings.errors.generic, err)); + return callback(err); } else { log.warn(strings.messages.cli.REGISTRY_LIST); if(registries.length === 0){ - log.err(strings.errors.cli.REGISTRY_NOT_FOUND); + err = strings.errors.cli.REGISTRY_NOT_FOUND; + log.err(err); + return callback(err); } _.forEach(registries, function(registryLocation){ log.ok(registryLocation); }); + + callback(null, registries); } }); } else if(opts.command === 'add'){ registry.add(opts.parameter, function(err, res){ - return err ? log.err(err) : log.ok(strings.messages.cli.REGISTRY_ADDED); + if(err){ + log.err(err); + return callback(err); + } + + log.ok(strings.messages.cli.REGISTRY_ADDED); + callback(null, 'ok'); }); } else if(opts.command === 'remove'){ registry.remove(opts.parameter, function(err, res){ - return err ? log.err(err) : log.ok(strings.messages.cli.REGISTRY_REMOVED); + if(err){ + log.err(err); + return callback(err); + } + + log.ok(strings.messages.cli.REGISTRY_REMOVED); + callback(null, 'ok'); }); } }; diff --git a/test/unit/cli-facade-publish.js b/test/unit/cli-facade-publish.js index a5864354d..4b80712cc 100644 --- a/test/unit/cli-facade-publish.js +++ b/test/unit/cli-facade-publish.js @@ -128,7 +128,7 @@ describe('cli : facade : publish', function(){ }); it('should publish to all registries', function(){ - sinon.stub(registry, 'putComponent').yields('blabla'); + sinon.stub(registry, 'putComponent').yields(null, 'ok'); execute(); registry.putComponent.restore();