private-npm-publish
Version:
prevent accidentally npm published commandline tool.
50 lines (49 loc) • 4.75 kB
JavaScript
// LICENSE : MIT
;
var Promise = require("bluebird");
var npm = require("npm");
var debug = require("debug")("npm-run");
/**
* load `npm` config
* @returns {Promise} the promise was filled when have finished load npm config.
*/
function loadNpmAsync() {
return new Promise(function (resolve, reject) {
npm.load(function (err, npm) {
if (err) {
reject(err);
} else {
resolve(npm);
}
});
});
}
/**
* execute npm <command>
* the command is like "publish".
* @param {string} command the command is like "install"
* @param {string[]} argv te
* http://nodejs.jp/nodejs.org_ja/api/child_process.html#child_process_child_process_spawn_command_args_options
* @return {Promise}
*/
function npmRunAsync(command) {
var argv = arguments[1] === undefined ? [] : arguments[1];
return loadNpmAsync().then(function () {
return new Promise(function (resolve, reject) {
npm.commands[command](argv, function (error, data) {
if (error) {
return reject(error);
}
resolve(data);
});
npm.registry.log.on("log", function (message) {
debug(message);
});
});
});
}
module.exports = {
loadNpmAsync: loadNpmAsync,
npmRunAsync: npmRunAsync
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9ucG0tcnVuLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxZQUFZLENBQUM7QUFDYixJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDbEMsSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQzs7Ozs7QUFLeEMsU0FBUyxZQUFZLEdBQUc7QUFDcEIsV0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUk7QUFDbkMsV0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDekIsZ0JBQUksR0FBRyxFQUFFO0FBQ0wsc0JBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNmLE1BQU07QUFDSCx1QkFBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2hCO1NBQ0osQ0FBQyxDQUFDO0tBQ04sQ0FBQyxDQUFDO0NBQ047Ozs7Ozs7OztBQVNELFNBQVMsV0FBVyxDQUFDLE9BQU8sRUFBYTtRQUFYLElBQUksZ0NBQUcsRUFBRTs7QUFDbkMsV0FBTyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWTtBQUNuQyxlQUFPLElBQUksT0FBTyxDQUFDLFVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBSTtBQUNuQyxlQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxVQUFVLEtBQUssRUFBRSxJQUFJLEVBQUU7QUFDL0Msb0JBQUksS0FBSyxFQUFFO0FBQ1AsMkJBQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUN4QjtBQUNELHVCQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakIsQ0FBQyxDQUFDO0FBQ0gsZUFBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxVQUFVLE9BQU8sRUFBRTtBQUMxQyxxQkFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ2xCLENBQUMsQ0FBQztTQUNOLENBQUMsQ0FBQztLQUNOLENBQUMsQ0FBQztDQUNOO0FBQ0QsTUFBTSxDQUFDLE9BQU8sR0FBRztBQUNiLGdCQUFZLEVBQVosWUFBWTtBQUNaLGVBQVcsRUFBWCxXQUFXO0NBQ2QsQ0FBQyIsImZpbGUiOiJzcmMvbnBtLXJ1bi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExJQ0VOU0UgOiBNSVRcblwidXNlIHN0cmljdFwiO1xudmFyIFByb21pc2UgPSByZXF1aXJlKFwiYmx1ZWJpcmRcIik7XG52YXIgbnBtID0gcmVxdWlyZShcIm5wbVwiKTtcbnZhciBkZWJ1ZyA9IHJlcXVpcmUoXCJkZWJ1Z1wiKShcIm5wbS1ydW5cIik7XG4vKipcbiAqIGxvYWQgYG5wbWAgY29uZmlnXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gdGhlIHByb21pc2Ugd2FzIGZpbGxlZCB3aGVuIGhhdmUgZmluaXNoZWQgbG9hZCBucG0gY29uZmlnLlxuICovXG5mdW5jdGlvbiBsb2FkTnBtQXN5bmMoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT4ge1xuICAgICAgICBucG0ubG9hZChmdW5jdGlvbiAoZXJyLCBucG0pIHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShucG0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbi8qKlxuICogZXhlY3V0ZSBucG0gPGNvbW1hbmQ+XG4gKiB0aGUgY29tbWFuZCBpcyBsaWtlIFwicHVibGlzaFwiLlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbW1hbmQgdGhlIGNvbW1hbmQgaXMgbGlrZSBcImluc3RhbGxcIlxuICogQHBhcmFtIHtzdHJpbmdbXX0gYXJndiB0ZVxuICogaHR0cDovL25vZGVqcy5qcC9ub2RlanMub3JnX2phL2FwaS9jaGlsZF9wcm9jZXNzLmh0bWwjY2hpbGRfcHJvY2Vzc19jaGlsZF9wcm9jZXNzX3NwYXduX2NvbW1hbmRfYXJnc19vcHRpb25zXG4gKiBAcmV0dXJuIHtQcm9taXNlfVxuICovXG5mdW5jdGlvbiBucG1SdW5Bc3luYyhjb21tYW5kLCBhcmd2ID0gW10pIHtcbiAgICByZXR1cm4gbG9hZE5wbUFzeW5jKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+IHtcbiAgICAgICAgICAgIG5wbS5jb21tYW5kc1tjb21tYW5kXShhcmd2LCBmdW5jdGlvbiAoZXJyb3IsIGRhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG5wbS5yZWdpc3RyeS5sb2cub24oXCJsb2dcIiwgZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICBkZWJ1ZyhtZXNzYWdlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIGxvYWROcG1Bc3luYyxcbiAgICBucG1SdW5Bc3luY1xufTsiXX0=