@erda-ui/cli
Version:
Command line interface for rapid Erda UI development
61 lines (60 loc) • 3.21 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 };
};
Object.defineProperty(exports, "__esModule", { value: true });
const execa_1 = __importDefault(require("execa"));
const env_1 = require("./util/env");
const log_1 = require("./util/log");
const stopDockerContainer = () => __awaiter(void 0, void 0, void 0, function* () {
yield (0, execa_1.default)('docker', ['container', 'stop', 'erda-ui-for-build'], { stdio: 'inherit' });
yield (0, execa_1.default)('docker', ['rm', 'erda-ui-for-build'], { stdio: 'inherit' });
});
const restoreFromDockerImage = (image) => __awaiter(void 0, void 0, void 0, function* () {
try {
yield (0, execa_1.default)('docker', ['ps']);
}
catch (error) {
if (error.message.includes('Cannot connect to the Docker daemon')) {
(0, log_1.logInfo)('Starting Docker');
try {
yield (0, execa_1.default)('open', ['--background', '-a', 'Docker']);
}
catch (e) {
(0, log_1.logError)('Launch Docker failed! Please start Docker manually');
}
(0, log_1.logWarn)('Since partial build depends on docker, please rerun this command after Docker launch completed');
process.exit(1);
}
else {
(0, log_1.logError)('Docker maybe crashed', error);
process.exit(1);
}
}
const { stdout: containers } = yield (0, execa_1.default)('docker', ['container', 'ls', '-al']);
if (containers && containers.includes('erda-ui-for-build')) {
(0, log_1.logInfo)('erda-ui container already exist, stop & delete it before next step');
yield stopDockerContainer();
(0, log_1.logSuccess)('stop & delete erda-ui container successfully');
}
yield (0, execa_1.default)('docker', ['run', '-d', '--name', 'erda-ui-for-build', image]);
(0, log_1.logSuccess)('erda-ui docker container has been launched');
const publicDir = (0, env_1.getPublicDir)();
yield (0, execa_1.default)('docker', ['cp', 'erda-ui-for-build:/usr/src/app/public/.', `${publicDir}/`]);
(0, log_1.logSuccess)('finished copy image content to local');
stopDockerContainer();
});
exports.default = ({ image }) => __awaiter(void 0, void 0, void 0, function* () {
yield (0, env_1.clearPublic)();
(0, log_1.logInfo)(`Start pull and restore content from ${image}`);
yield restoreFromDockerImage(image);
});