UNPKG

@iexec/iapp

Version:

A CLI to guide you through the process of building an iExec iApp

43 lines (36 loc) 1.56 kB
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 askForDockerhubAccessToken({ spinner, }: { spinner: Spinner; }): Promise<string> { const config = await readIAppConfig(); const dockerhubAccessToken = config.dockerhubAccessToken || ''; if (dockerhubAccessToken) { spinner.log( `Using saved dockerhubAccessToken ${color.comment(`(from ${color.file(CONFIG_FILE)})`)}` ); return dockerhubAccessToken; } const { dockerHubAccessTokenAnswer } = await spinner.prompt({ type: 'password', name: 'dockerHubAccessTokenAnswer', message: `What is your DockerHub access token? ${color.promptHelper(`You need to provide a Personal access token with ${color.emphasis('Read & Write')} access This token will be used to push your iApp docker images to your account You can create a new token by visiting ${color.link('https://app.docker.com/settings/personal-access-tokens/create')}`)}`, }); // TODO check token against API if (!/[a-zA-Z0-9-]+/.test(dockerHubAccessTokenAnswer)) { spinner.log(color.error('Invalid DockerHub access token.')); return askForDockerhubAccessToken({ spinner }); } // Save it into JSON config file config.dockerhubAccessToken = dockerHubAccessTokenAnswer; await writeIAppConfig(config); spinner.log(`dockerhubAccessToken saved to ${color.file(CONFIG_FILE)}`); return dockerHubAccessTokenAnswer; }