alwaysai
Version:
The alwaysAI command-line interface (CLI)
66 lines • 2.87 kB
JavaScript
;
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