fusionauth-cli
Version:
FusionAuth CLI for node 22
40 lines (37 loc) • 1.58 kB
text/typescript
import {Command} from '@commander-js/extra-typings';
import {FusionAuthClient} from '@fusionauth/typescript-client';
import chalk from 'chalk';
import {existsSync} from 'fs';
import {join} from 'path';
import {mkdir, writeFile} from 'fs/promises';
import {errorAndExit, toJson} from '../utils.js';
import {apiKeyOption, hostOption} from "../options.js";
const action = async function (lambdaId: string, {output, key: apiKey, host}: {
output: string;
key: string;
host: string
}) {
console.log(`Retrieving lambda ${lambdaId} from ${host}`);
try {
const fusionAuthClient = new FusionAuthClient(apiKey, host);
const clientResponse = await fusionAuthClient.retrieveLambda(lambdaId);
if (!clientResponse.wasSuccessful())
errorAndExit(`Error retrieving lambda: `, clientResponse);
if (!existsSync(output))
await mkdir(output);
const filename = join(output, clientResponse.response.lambda?.id + ".json");
await writeFile(filename, toJson(clientResponse.response.lambda));
console.log(chalk.green(`Lambda downloaded to ${filename}`));
}
catch (e: unknown) {
errorAndExit(`Error retrieving lambda:`, e);
}
}
// noinspection JSUnusedGlobalSymbols
export const lambdaRetrieve = new Command('lambda:retrieve')
.description('Retrieve a lambda from FusionAuth')
.argument('<lambdaId>', 'The lambda id to retrieve')
.option('-o, --output <output>', 'The output directory', './lambdas/')
.addOption(apiKeyOption)
.addOption(hostOption)
.action(action);