bit-bin
Version:
<a href="https://opensource.org/licenses/Apache-2.0"><img alt="apache" src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"></a> <a href="https://github.com/teambit/bit/blob/master/CONTRIBUTING.md"><img alt="prs" src="https://img.shields.io/b
124 lines (90 loc) • 2.64 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = npmLogin;
function _fs() {
const data = _interopRequireDefault(require("fs"));
_fs = function () {
return data;
};
return data;
}
function _path() {
const data = _interopRequireDefault(require("path"));
_path = function () {
return data;
};
return data;
}
function _iniBuilder() {
const data = _interopRequireDefault(require("ini-builder"));
_iniBuilder = function () {
return data;
};
return data;
}
function _userHome() {
const data = _interopRequireDefault(require("user-home"));
_userHome = function () {
return data;
};
return data;
}
function _constants() {
const data = require("../constants");
_constants = function () {
return data;
};
return data;
}
function _exceptions() {
const data = require("./exceptions");
_exceptions = function () {
return data;
};
return data;
}
/** @flow */
function findrc(pathToNpmrc) {
let userNpmrc = _path().default.join(_userHome().default, '.npmrc');
if (pathToNpmrc) {
if (!_fs().default.existsSync(pathToNpmrc)) throw new (_exceptions().PathToNpmrcNotExist)(pathToNpmrc);
const stats = _fs().default.statSync(pathToNpmrc);
if (stats.isFile()) userNpmrc = pathToNpmrc;else userNpmrc = _path().default.join(pathToNpmrc, '.npmrc');
}
return userNpmrc;
}
function mergeOrCreateConfig(token, url, config = []) {
const strippedUrl = url.replace(/(^\w+:|^)\/\//, '');
const iniReg = _iniBuilder().default.find(config, `${_constants().DEFAULT_BINDINGS_PREFIX}:registry`);
const iniToken = _iniBuilder().default.find(config, `//${strippedUrl}/:_authToken`);
if (!iniReg) {
config.push({
path: [`${_constants().DEFAULT_BINDINGS_PREFIX}:registry`],
value: url
});
} else {
iniReg.value = url;
}
if (!iniToken) {
config.push({
path: [`//${strippedUrl}/:_authToken`],
value: token
});
} else {
iniToken.value = token;
}
return config;
}
function npmLogin(token, pathToNpmrc, url) {
const npmrcPath = findrc(pathToNpmrc);
const npmrcConfig = _fs().default.existsSync(npmrcPath) ? mergeOrCreateConfig(token, url, _iniBuilder().default.parse(_fs().default.readFileSync(npmrcPath, 'utf-8'))) : mergeOrCreateConfig(token, url);
try {
_fs().default.writeFileSync(npmrcPath, _iniBuilder().default.serialize(npmrcConfig));
} catch (err) {
throw new (_exceptions().WriteToNpmrcError)(npmrcPath);
}
return npmrcPath;
}
;