var chalk = require('chalk'); var Q = require('q'); var defaultConfig = require('../config'); var PackageRepository = require('../core/PackageRepository'); var createError = require('../util/createError'); function unregister(logger, name, config) { if (!name) { return; } var repository; var registryClient; var force; config = defaultConfig(config); force = config.force; // Bypass any cache config.offline = false; config.force = true; // Trim name name = name.trim(); repository = new PackageRepository(config, logger); if (!config.accessToken) { return logger.emit('error', createError('Use "bower login" with collaborator credentials', 'EFORBIDDEN') ); } return Q.resolve() .then(function () { // If non interactive or user forced, bypass confirmation if (!config.interactive || force) { return true; } return Q.nfcall(logger.prompt.bind(logger), { type: 'confirm', message: 'You are about to remove component "' + chalk.cyan.underline(name) + '" from the bower registry (' + chalk.cyan.underline(config.registry.register) + '). It is generally considered bad behavior to remove versions of a library that others are depending on. Are you really sure?', default: false }); }) .then(function (result) { // If user response was negative, abort if (!result) { return; } registryClient = repository.getRegistryClient(); logger.action('unregister', name, { name: name }); return Q.nfcall(registryClient.unregister.bind(registryClient), name); }) .then(function (result) { logger.info('Package unregistered', name); return result; }); } // ------------------- unregister.readOptions = function (argv) { var cli = require('../util/cli'); var options = cli.readOptions(argv); var name = options.argv.remain[1]; return [name]; }; module.exports = unregister;