UNPKG

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
"use strict"; 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; }