UNPKG

alwaysai

Version:

The alwaysAI command-line interface (CLI)

66 lines 2.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ora = require("ora"); const ssh_spawner_1 = require("../spawner/ssh-spawner"); const js_spawner_1 = require("../spawner/js-spawner"); const echo_1 = require("../util/echo"); const docker_spawner_1 = require("../spawner/docker-spawner"); const alwayscli_1 = require("@alwaysai/alwayscli"); async function checkForDockerComponent(props = {}) { const spawner = props.targetHostname ? ssh_spawner_1.SshSpawner({ hostname: props.targetHostname }) : js_spawner_1.JsSpawner(); { const spinner = ora('Check for docker executable').start(); spinner.start(); try { await spawner.run({ exe: 'docker', args: ['--version'] }); spinner.succeed(); } catch (ex) { spinner.fail('Command "docker --version" failed'); echo_1.echo(ex.message); echo_1.echo(`Please install docker${props.targetHostname ? ' on your target system' : ''}, or \nverify the existing installation if there is one.`); echo_1.echo(); echo_1.echo('For installation instructions for your operating system, see:'); echo_1.echo(); echo_1.echo(' https://docs.docker.com/install/'); echo_1.echo(); throw new alwayscli_1.TerseError('Failed to run "docker --version"'); } } { const spinner = ora('Check docker permissions').start(); spinner.start(); try { await spawner.run({ exe: 'docker', args: ['run', 'hello-world'] }); spinner.succeed(); } catch (ex) { spinner.fail('Command "docker run hello-world" failed'); echo_1.echo(ex.message); echo_1.echo("Please double-check that you've done these post-install steps:"); echo_1.echo(); echo_1.echo(' https://docs.docker.com/install/linux/linux-postinstall/'); echo_1.echo(); throw new alwayscli_1.TerseError('Failed to run "docker run hello-world"'); } } { const spinner = ora(`Check for docker image "${docker_spawner_1.IMAGE_NAME}"`).start(); try { await spawner.run({ exe: 'docker', args: ['image', 'inspect', docker_spawner_1.IMAGE_NAME] }); spinner.succeed(); } catch (ex) { if (!(ex && typeof ex.message === 'string' && ex.message.includes('No such image'))) { throw ex; } spinner.text = `Pull image "${docker_spawner_1.IMAGE_NAME}"`; await spawner.run({ exe: 'docker', args: ['image', 'pull', docker_spawner_1.IMAGE_NAME] }); spinner.succeed(); } } } exports.checkForDockerComponent = checkForDockerComponent; //# sourceMappingURL=check-for-docker-component.js.map