UNPKG

@nuofe/ndk-commit-tool

Version:
130 lines (88 loc) 2.56 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _ndkCli = _interopRequireDefault(require("@nuofe/ndk-cli")); var _ndkLogger = _interopRequireDefault(require("@nuofe/ndk-logger")); var _fsExtra = _interopRequireDefault(require("fs-extra")); var _inquirer = _interopRequireDefault(require("inquirer")); var _path = _interopRequireDefault(require("path")); const { prompt } = _inquirer.default; const debug = _ndkLogger.default.debug('ndk-commit-tool:git:link'); var _default = async options => { if (!options.root) { return false; } const { cwd, package: pkg, spinner } = options; const { type = '', url = '' } = pkg?.repository ?? {}; const gitPath = _path.default.resolve(cwd, '.git'); const tempDir = 'tmp'; const tempPath = _path.default.resolve(cwd, tempDir); const tempGitPath = _path.default.resolve(tempPath, '.git'); debug('type: %s', type); debug('url: %s', url); if (type !== 'git') { return false; } if (!url) { spinner.stop(); _ndkLogger.default.logError('[i] 没有远程 Git 库地址,请检查 package.json 文件!'); _ndkLogger.default.logEmpty(); process.exit(1); } if (_fsExtra.default.existsSync(tempPath)) { debug('remove %s', tempPath); _fsExtra.default.removeSync(tempPath); } spinner.stop(); const { result } = await prompt({ type: 'confirm', name: 'result', message: '你是否要关联远程 Git 库?', default: true }); _ndkLogger.default.logEmpty(); if (result) { spinner.start(); } else { _ndkLogger.default.logWarning('[i] 请先关联远程 Git 库!'); _ndkLogger.default.logEmpty(); process.exit(); } const { status, stderr } = await _ndkCli.default.spawn('git', ['clone', url, tempDir], { cwd }); if (status !== 0) { spinner.stop(); console.error(stderr); _ndkLogger.default.logEmpty(); _ndkLogger.default.logError(`[i] 关联远程 Git 库 ${url} 失败!`); _ndkLogger.default.logEmpty(); process.exit(1); } debug('move %s to %s', tempGitPath, gitPath); _fsExtra.default.moveSync(tempGitPath, gitPath); debug('remove %s', tempPath); _fsExtra.default.removeSync(tempPath); spinner.succeed(`关联远程 Git 库 ${url} 成功。`); _ndkLogger.default.logEmpty(); spinner.start(); return true; }; exports.default = _default;