@iexec/iapp
Version:
A CLI to guide you through the process of building an iExec iApp
74 lines (65 loc) • 1.94 kB
text/typescript
import { readIAppConfig, writeIAppConfig } from '../utils/iAppConfigFile.js';
import { CONFIG_FILE } from '../config/config.js';
import * as color from './color.js';
import type { Spinner } from './spinner.js';
export async function askForAppSecret({
spinner,
}: {
spinner: Spinner;
}): Promise<string | null> {
const config = await readIAppConfig();
const { appSecret: savedAppSecret } = config;
if (savedAppSecret === null) {
spinner.log(
`"No app secret" is configured ${color.comment(`(from ${color.file(CONFIG_FILE)})`)}`
);
return savedAppSecret;
}
if (savedAppSecret !== undefined) {
spinner.log(
`Using saved appSecret ${color.comment(`(from ${color.file(CONFIG_FILE)})`)}`
);
return savedAppSecret;
}
const { useAppSecret } = await spinner.prompt({
type: 'confirm',
name: 'useAppSecret',
message: 'Do you want to attach an app secret to your iApp?',
initial: false,
});
if (!useAppSecret) {
const { saveNull } = await spinner.prompt({
type: 'confirm',
name: 'saveNull',
message:
'Do you want to save your choice (no app secret) to your config?',
initial: false,
});
if (saveNull) {
config.appSecret = null;
await writeIAppConfig(config);
spinner.log(`"No appSecret" choice saved to ${color.file(CONFIG_FILE)}`);
}
return null;
}
const { appSecret } = await spinner.prompt({
type: 'password',
name: 'appSecret',
message: 'What is the app secret?',
mask: '*',
});
const { saveAppSecret } = await spinner.prompt([
{
type: 'confirm',
name: 'saveAppSecret',
message: 'Do you want to save this app secret to your config?',
initial: false,
},
]);
if (saveAppSecret) {
config.appSecret = appSecret;
await writeIAppConfig(config);
spinner.log(`appSecret saved to ${color.file(CONFIG_FILE)}`);
}
return appSecret;
}