UNPKG

create-tezos-smart-contract

Version:

Node.js toolset to write, test and deploy Tezos smart contracts

82 lines (81 loc) 2.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleDockerWarnings = exports.ensureImageIsPresent = exports.pullImage = exports.hasImage = exports.DOCKER_WARNING = void 0; const child_process_1 = require("child_process"); const console_1 = require("../../console"); exports.DOCKER_WARNING = /(?<=warning: ).+/igm; const hasImage = (imageName) => { try { const args = [ 'inspect', '--type=image', imageName, ]; const docker = (0, child_process_1.spawnSync)("docker", args); // if (docker.status == 0) { // return true; // } else { // const error = docker.output[2].toString(); // if (error.startsWith(`Error: No such image: ${imageName}`)) { // console.log('Image not present'); // } // return false; // } return docker.status === 0; } catch (err) { (0, console_1.error)(err); return false; } }; exports.hasImage = hasImage; const pullImage = (imageName) => { return new Promise((resolve, reject) => { const args = [ 'pull', imageName, ]; const docker = (0, child_process_1.spawn)("docker", args, { stdio: [process.stdin, process.stdout, process.stderr], }); docker.on('close', (code) => { if (code === 0) { resolve(true); } else { reject(); } }); }); }; exports.pullImage = pullImage; const ensureImageIsPresent = async (imageName) => { const image = (0, exports.hasImage)(imageName); if (!image) { (0, console_1.log)(`Docker image "${imageName}" was not found, pulling...`); const res = await (0, exports.pullImage)(imageName); if (res) { (0, console_1.log)("Download completed.\n"); } else { (0, console_1.error)("Download failed"); } return res; } else { (0, console_1.debug)(`Docker image "${imageName}" found.`); } return true; }; exports.ensureImageIsPresent = ensureImageIsPresent; const handleDockerWarnings = (message, warnFn = console_1.warn) => { const warnings = message.match(exports.DOCKER_WARNING); if (warnings?.length) { for (const wMessage of warnings) { warnFn(`Warning: ${wMessage}`); } return true; } return false; }; exports.handleDockerWarnings = handleDockerWarnings;