@zkochan/pnpm
Version:
Fast, disk space efficient package manager
43 lines • 2.28 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const logger_1 = require("@pnpm/logger");
const server_1 = require("@pnpm/server");
const store_path_1 = require("@pnpm/store-path");
const delay_1 = require("delay");
const path = require("path");
const processExists = require("process-exists");
const killcb = require("tree-kill");
const promisify = require("util.promisify");
const createStoreController_1 = require("../../createStoreController");
const serverConnectionInfoDir_1 = require("../../serverConnectionInfoDir");
const kill = promisify(killcb);
exports.default = (opts) => __awaiter(this, void 0, void 0, function* () {
const store = yield store_path_1.default(opts.prefix, opts.store);
const connectionInfoDir = serverConnectionInfoDir_1.default(store);
const serverJson = yield createStoreController_1.tryLoadServerJson({
serverJsonPath: path.join(connectionInfoDir, 'server.json'),
shouldRetryOnNoent: false,
});
if (serverJson === null) {
logger_1.storeLogger.info(`Nothing to stop. No server is running for the store at ${store}`);
return;
}
const storeController = yield server_1.connectStoreController(serverJson.connectionOptions);
yield storeController.stop();
if (!(yield processExists(serverJson.pid)) || (yield delay_1.default(5000)) && !(yield processExists(serverJson.pid))) {
logger_1.storeLogger.info('Server gracefully stopped');
return;
}
logger_1.storeLogger.warn('Graceful shutdown failed');
yield kill(serverJson.pid, 'SIGINT');
logger_1.storeLogger.info('Server process terminated');
});
//# sourceMappingURL=stop.js.map