UNPKG

alwaysai

Version:

The alwaysAI command-line interface (CLI)

72 lines 2.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SshDockerSpawner = void 0; const path_1 = require("path"); const spawner_base_1 = require("./spawner-base"); const gnu_spawner_1 = require("./gnu-spawner"); const docker_spawner_1 = require("./docker-spawner"); const resolve_posix_path_1 = require("../resolve-posix-path"); const alwayscli_1 = require("@alwaysai/alwayscli"); const constants_1 = require("../../constants"); const docker_1 = require("../docker"); const paths_1 = require("../../paths"); function SshDockerSpawner(opts) { const { targetPath, targetHostname, dockerImageId, targetHardware } = opts; if (!dockerImageId) { throw new alwayscli_1.CliTerseError(constants_1.EMPTY_DOCKER_IMAGE_ID_MESSAGE); } const resolvePath = (0, resolve_posix_path_1.ResolvePosixPath)(docker_spawner_1.APP_DIR); return (0, gnu_spawner_1.GnuSpawner)(Object.assign({ resolvePath }, (0, spawner_base_1.SpawnerBase)(translate))); function translate(cmd) { const exe = 'ssh'; const sshArgs = ['-i', paths_1.PRIVATE_KEY_FILE_PATH]; const systemTargetPath = path_1.posix.isAbsolute(targetPath) ? targetPath : `~/${targetPath}`; const containerTokenDir = cmd.superuser ? '/root/.config/alwaysai' : '/.config/alwaysai'; const volumes = [ `${systemTargetPath}:${docker_spawner_1.APP_DIR}`, '/dev:/dev', '/etc/timezone:/etc/timezone:ro', '/etc/localtime:/etc/localtime:ro', `${paths_1.REMOTE_AAI_CFG_DIR_LINUX}:${containerTokenDir}` ]; if (opts.volumes) { volumes.push(...opts.volumes); } const env_vars = []; if (opts.env_vars) { env_vars.push(...opts.env_vars); } const dockerArgs = (0, docker_1.getDockerRunCmd)({ dockerImageId, remove: true, interactive: true, tty: cmd.tty, volumes, env_vars, user: cmd.superuser ? undefined : '$(id -u ${USER}):$(id -g ${USER})', targetHardware, workdir: resolvePath(cmd.cwd), exe: cmd.exe, exeArgs: cmd.args }); if (cmd.tty) { sshArgs.push('-t', '-t'); } if (cmd.expose5000) { sshArgs.push('-L', '5000:0.0.0.0:5000'); } sshArgs.push(targetHostname); const translated = { exe, args: [...sshArgs, 'docker', ...dockerArgs], input: cmd.input }; return translated; } } exports.SshDockerSpawner = SshDockerSpawner; //# sourceMappingURL=ssh-docker-spawner.js.map