UNPKG

@dependabot/yarn-lib

Version:

📦🐈 Fast, reliable, and secure dependency management.

333 lines (276 loc) 10.2 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.getGitConfigInfo = exports.run = exports.shouldRunInCurrentCwd = undefined; var _asyncToGenerator2; function _load_asyncToGenerator() { return _asyncToGenerator2 = _interopRequireDefault(require('babel-runtime/helpers/asyncToGenerator')); } let run = exports.run = (() => { var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) { const installVersion = flags[`2`] ? `berry` : flags.install; const forwardedArgs = process.argv.slice(process.argv.indexOf('init', 2) + 1); if (installVersion) { if (flags[`2`] && process.env.COREPACK_ROOT) { yield (_child || _load_child()).spawn((_constants || _load_constants()).NODE_BIN_PATH, [path.join(process.env.COREPACK_ROOT, 'dist/corepack.js'), `yarn@${flags.install || `stable`}`, `init`, ...forwardedArgs, `--install=self`], { stdio: 'inherit', cwd: config.cwd }); } else { const lockfilePath = path.resolve(config.cwd, 'yarn.lock'); if (!(yield (_fs || _load_fs()).exists(lockfilePath))) { yield (_fs || _load_fs()).writeFile(lockfilePath, ''); } yield (_child || _load_child()).spawn((_constants || _load_constants()).NODE_BIN_PATH, [process.argv[1], 'policies', 'set-version', installVersion, '--silent'], { stdio: 'inherit', cwd: config.cwd }); yield (_child || _load_child()).spawn((_constants || _load_constants()).NODE_BIN_PATH, [process.argv[1], 'init', ...forwardedArgs], { stdio: 'inherit', cwd: config.cwd }); } return; } const manifests = yield config.getRootManifests(); let repository = {}; const author = { name: config.getOption('init-author-name'), email: config.getOption('init-author-email'), url: config.getOption('init-author-url') }; if (yield (_fs || _load_fs()).exists(path.join(config.cwd, '.git'))) { // get git origin of the cwd try { repository = { type: 'git', url: yield (_child || _load_child()).spawn('git', ['config', 'remote.origin.url'], { cwd: config.cwd }) }; } catch (ex) { // Ignore - Git repo may not have an origin URL yet (eg. if it only exists locally) } if (author.name === undefined) { author.name = yield getGitConfigInfo('user.name'); } if (author.email === undefined) { author.email = yield getGitConfigInfo('user.email'); } } const keys = [{ key: 'name', question: 'name', default: path.basename(config.cwd), validation: (_validate || _load_validate()).isValidPackageName, validationError: 'invalidPackageName' }, { key: 'version', question: 'version', default: String(config.getOption('init-version')) }, { key: 'description', question: 'description', default: '' }, { key: 'main', question: 'entry point', default: 'index.js' }, { key: 'repository', question: 'repository url', default: (0, (_util || _load_util()).extractRepositoryUrl)(repository) }, { key: 'author', question: 'author', default: (0, (_util || _load_util()).stringifyPerson)(author) }, { key: 'license', question: 'license', default: String(config.getOption('init-license')) }, { key: 'private', question: 'private', default: config.getOption('init-private') || '', inputFormatter: yn }]; // get answers const pkg = {}; for (var _iterator = keys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { var _ref2; if (_isArray) { if (_i >= _iterator.length) break; _ref2 = _iterator[_i++]; } else { _i = _iterator.next(); if (_i.done) break; _ref2 = _i.value; } const entry = _ref2; const yes = flags.yes, privateFlag = flags.private; const manifestKey = entry.key; let question = entry.question, def = entry.default; for (var _iterator4 = (_index || _load_index()).registryNames, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { var _ref5; if (_isArray4) { if (_i4 >= _iterator4.length) break; _ref5 = _iterator4[_i4++]; } else { _i4 = _iterator4.next(); if (_i4.done) break; _ref5 = _i4.value; } const registryName = _ref5; const object = manifests[registryName].object; let val = objectPath.get(object, manifestKey); if (!val) { break; } if (typeof val === 'object') { if (manifestKey === 'author') { val = (0, (_util || _load_util()).stringifyPerson)(val); } else if (manifestKey === 'repository') { val = (0, (_util || _load_util()).extractRepositoryUrl)(val); } } def = val; } if (manifestKey === 'private' && privateFlag) { def = true; } if (def) { question += ` (${String(def)})`; } let answer; let validAnswer = false; if (yes) { answer = def; } else { // loop until a valid answer is provided, if validation is on entry if (entry.validation) { while (!validAnswer) { answer = (yield reporter.question(question)) || def; // validate answer if (entry.validation(String(answer))) { validAnswer = true; } else { reporter.error(reporter.lang('invalidPackageName')); } } } else { answer = (yield reporter.question(question)) || def; } } if (answer) { if (entry.inputFormatter) { answer = entry.inputFormatter(answer); } objectPath.set(pkg, manifestKey, answer); } } if (pkg.repository && (_githubResolver || _load_githubResolver()).default.isVersion(pkg.repository)) { pkg.repository = `https://github.com/${pkg.repository}`; } // save answers const targetManifests = []; for (var _iterator2 = (_index || _load_index()).registryNames, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { var _ref3; if (_isArray2) { if (_i2 >= _iterator2.length) break; _ref3 = _iterator2[_i2++]; } else { _i2 = _iterator2.next(); if (_i2.done) break; _ref3 = _i2.value; } const registryName = _ref3; const info = manifests[registryName]; if (info.exists) { targetManifests.push(info); } } if (!targetManifests.length) { targetManifests.push(manifests.npm); } for (var _iterator3 = targetManifests, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { var _ref4; if (_isArray3) { if (_i3 >= _iterator3.length) break; _ref4 = _iterator3[_i3++]; } else { _i3 = _iterator3.next(); if (_i3.done) break; _ref4 = _i3.value; } const targetManifest = _ref4; Object.assign(targetManifest.object, pkg); reporter.success(`Saved ${path.basename(targetManifest.loc)}`); } yield config.saveRootManifests(manifests); }); return function run(_x, _x2, _x3, _x4) { return _ref.apply(this, arguments); }; })(); let getGitConfigInfo = exports.getGitConfigInfo = (() => { var _ref6 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (credential, spawn = (_child || _load_child()).spawn) { try { // try to get author default based on git config return yield spawn('git', ['config', credential]); } catch (e) { return ''; } }); return function getGitConfigInfo(_x5) { return _ref6.apply(this, arguments); }; })(); exports.setFlags = setFlags; exports.hasWrapper = hasWrapper; var _util; function _load_util() { return _util = require('../../util/normalize-manifest/util.js'); } var _index; function _load_index() { return _index = require('../../registries/index.js'); } var _githubResolver; function _load_githubResolver() { return _githubResolver = _interopRequireDefault(require('../../resolvers/exotics/github-resolver.js')); } var _child; function _load_child() { return _child = _interopRequireWildcard(require('../../util/child.js')); } var _fs; function _load_fs() { return _fs = _interopRequireWildcard(require('../../util/fs.js')); } var _validate; function _load_validate() { return _validate = _interopRequireWildcard(require('../../util/normalize-manifest/validate.js')); } var _constants; function _load_constants() { return _constants = require('../../constants'); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const objectPath = require('object-path'); const path = require('path'); const yn = require('yn'); function setFlags(commander) { commander.description('Interactively creates or updates a package.json file.'); commander.option('-y, --yes', 'use default options'); commander.option('-p, --private', 'use default options and private true'); commander.option('-i, --install <value>', 'install a specific Yarn release'); commander.option('-2', 'generates the project using Yarn 2'); } function hasWrapper(commander, args) { return true; } const shouldRunInCurrentCwd = exports.shouldRunInCurrentCwd = true;