veendor
Version:
a tool for stroing your npm dependencies in arbitraty storage
69 lines (68 loc) • 3.5 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = __importDefault(require("path"));
const fs_extra_1 = __importDefault(require("fs-extra"));
const commander_1 = __importDefault(require("commander"));
const resolveConfig_1 = __importDefault(require("../lib/resolveConfig"));
const logger = __importStar(require("../lib/util/logger"));
const gitWrapper = __importStar(require("../lib/commandWrappers/gitWrapper"));
const resolveLockfile_1 = __importDefault(require("../lib/resolveLockfile"));
const install_1 = __importStar(require("../lib/install"));
process.on('uncaughtException', console.error);
process.on('unhandledRejection', console.error);
commander_1.default
.description('Download and install node_modules')
.option('-f, --force', 'overwrite node_modules if it already exists')
.option('-c --config [configuration-file]')
.option('-r --rsync', 'download node_modules into tmpdir \n' +
'and then rsync --delete them to working directory\n' +
'somewhat slower, but you-know-which IDE won\'t go crazy reindexing it')
.option('--debug', 'don\'t remove .veendor-debug.log')
.option('-v --verbose', 'Verbose output. Could be from `-v` to `-vvv`', increaseVerbosity, 0)
.parse(process.argv);
// @ts-ignore
function increaseVerbosity(v, total) {
return total + 1;
}
const daLogger = logger.setDefaultLogger(1, 3 - (commander_1.default.verbose || 0));
let config;
resolveConfig_1.default(commander_1.default.config)
.then((resolvedConfig) => __awaiter(void 0, void 0, void 0, function* () {
config = resolvedConfig;
const lockfilePath = yield resolveLockfile_1.default();
yield install_1.default({ force: Boolean(commander_1.default.force), config, lockfilePath, rsyncMode: commander_1.default.rsync });
if (!(commander_1.default.debug)) {
yield fs_extra_1.default.remove(path_1.default.resolve(process.cwd(), '.veendor-debug.log'));
}
}))
.catch(e => {
if (e instanceof install_1.NodeModulesAlreadyExistError) {
daLogger.error('\'node_modules\' directory already exists. Use -f option to overwrite');
return;
}
else if (e instanceof gitWrapper.NotAGitRepoError && config.useGitHistory) {
daLogger.error(`'useGitHistory' set in config, but ${process.cwd()} is not a git repo`);
return;
}
daLogger.error(e);
process.exit(1);
});