create-tezos-smart-contract
Version:
Node.js toolset to write, test and deploy Tezos smart contracts
82 lines (81 loc) • 2.55 kB
JavaScript
;
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;