UNPKG

alwaysai

Version:

The alwaysAI command-line interface (CLI)

64 lines 2.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const alwayscli_1 = require("@alwaysai/alwayscli"); const prompt_1 = require("../util/prompt"); const check_for_passwordless_ssh_connectivity_component_1 = require("./check-for-passwordless-ssh-connectivity-component"); const run_1 = require("../spawner/spawner-base/run"); const echo_1 = require("../util/echo"); const set_up_passwordless_ssh_component_1 = require("./set-up-passwordless-ssh-component"); const required_with_yes_message_1 = require("../util/required-with-yes-message"); async function targetHostnameInputComponent(props) { if (props.yes) { if (!props.targetHostname) { throw new alwayscli_1.UsageError(required_with_yes_message_1.RequiredWithYesMessage('hostname')); } await check_for_passwordless_ssh_connectivity_component_1.checkForPasswordlessSshConnectivityComponent({ targetHostname: props.targetHostname, }); return props.targetHostname; } let targetHostname = props.targetHostname || ''; let connected = false; while (!connected) { targetHostname = await promptForTargetHostname(); try { await check_for_passwordless_ssh_connectivity_component_1.checkForPasswordlessSshConnectivityComponent({ targetHostname, }); connected = true; } catch (exception) { if (exception && exception.code === alwayscli_1.TERSE && typeof exception.message === 'string' && exception.message.includes(run_1.PROCESS_EXITED_WITH_NON_ZERO_STATUS_CODE)) { if (exception.message.includes('Permission denied')) { await set_up_passwordless_ssh_component_1.setUpPasswordlessSshComponent({ targetHostname }); connected = true; } else { echo_1.echo(exception.message); echo_1.echo('Cannot connect to your device. Please check the address and try again.'); } } else { throw exception; } } } return targetHostname; async function promptForTargetHostname() { const answer = await prompt_1.prompt([ { type: 'text', name: 'hostname', message: 'Please enter the hostname (with optional user name) to connect to your device via ssh (e.g. "pi@1.2.3.4"):', initial: targetHostname, validate: value => (!value ? 'Value is required' : true), }, ]); return answer.hostname; } } exports.targetHostnameInputComponent = targetHostnameInputComponent; //# sourceMappingURL=target-hostname-input-component.js.map