ad4m-host
Version:
Self hosting ad4m service
65 lines (64 loc) • 2.06 kB
JavaScript
import { buildAd4mClient, readPassphrase, prettify } from './util';
export const command = 'agent [action]';
export const desc = 'Agent related action';
;
export const builder = (yargs) => yargs
.positional('action', {
type: 'string',
describe: 'Action that should be executed on the agent',
choices: ['generate', 'lock', 'unlock', 'status', 'me'],
default: 'status',
}).options({
passphrase: { type: 'string', describe: 'Password for the agent' }
});
export const handler = async (argv) => {
const { server, verbose, action, passphrase } = argv;
if (verbose) {
console.info(`Attempting to connect to ${server}`);
}
const ad4mClient = buildAd4mClient(server);
switch (action) {
case 'generate':
await generate(ad4mClient, passphrase);
break;
case 'lock':
await lock(ad4mClient);
break;
case 'unlock':
await unlock(ad4mClient, passphrase);
break;
case 'status':
await status(ad4mClient);
break;
case 'me':
await me(ad4mClient);
break;
default:
console.info(`Action "${argv.action}" is not defined on agent.`);
break;
}
process.exit();
};
async function generate(ad4mClient, password) {
const passphrase = password || readPassphrase();
const agentStatus = await ad4mClient.agent.generate(passphrase);
prettify(agentStatus);
}
async function lock(ad4mClient) {
// Passphrase not needed
const agentStatus = await ad4mClient.agent.lock("");
prettify(agentStatus);
}
async function unlock(ad4mClient, password) {
const passphrase = password || readPassphrase();
const agentStatus = await ad4mClient.agent.unlock(passphrase);
prettify(agentStatus);
}
async function status(ad4mClient) {
const agentStatus = await ad4mClient.agent.status();
prettify(agentStatus);
}
async function me(ad4mClient) {
const agent = await ad4mClient.agent.me();
prettify(agent);
}