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