public async prompts()

in source/packages/services/installer/src/commands/modules/service/bulkCerts.ts [48:251]


    public async prompts(answers: Answers): Promise<Answers> {
        delete answers.bulkCerts?.redeploy;
        let updatedAnswers: Answers = await inquirer.prompt(
            [redeployIfAlreadyExistsPrompt(this.name, this.stackName)],
            answers
        );
        if ((updatedAnswers.bulkCerts?.redeploy ?? true) === false) {
            return updatedAnswers;
        }

        const suppliers = await this.getSuppliers(answers);

        if (updatedAnswers.bulkCerts === undefined) {
            updatedAnswers.bulkCerts = {} as BulkCerts;
        }

        updatedAnswers.bulkCerts.suppliers = suppliers;

        updatedAnswers = await inquirer.prompt(
            [
                {
                    message: `Create or modify supplier CA alias ?`,
                    type: 'confirm',
                    name: 'bulkCerts.setSupplier',
                    default: answers.bulkCerts?.setSupplier ?? true,
                    askAnswered: true,
                },
                {
                    message: 'Select the suppliers you wish to modify',
                    type: 'list',
                    name: 'bulkCerts.caAlias',
                    choices: suppliers.list,
                    pageSize: 20,
                    loop: false,
                    askAnswered: true,
                    default: suppliers.list.length - 1,
                    validate(answer: string[]) {
                        if (answer?.length === 0) {
                            return false;
                        }
                        return true;
                    },
                    when(answers: Answers) {
                        return (
                            answers.bulkCerts?.setSupplier === true && suppliers.list?.length > 1
                        );
                    },
                },
                {
                    message: `No supplier was found, Create a new alias ?`,
                    type: 'confirm',
                    name: 'bulkCerts.setSupplier',
                    default: answers.bulkCerts?.setSupplier ?? true,
                    askAnswered: true,
                    when(answers: Answers) {
                        return (
                            answers.bulkCerts?.setSupplier === true && suppliers.list?.length === 1
                        );
                    },
                },
                {
                    message: `Enter new supplier alias:`,
                    type: 'input',
                    name: 'bulkCerts.caAlias',
                    default: answers.bulkCerts?.caAlias,
                    askAnswered: true,
                    validate(answer: string[]) {
                        if (answer?.length === 0) {
                            return false;
                        }
                        return true;
                    },
                    when(answers: Answers) {
                        return (
                            answers.bulkCerts?.setSupplier === true &&
                            (answers.bulkCerts.suppliers.list?.length === 1 ||
                                answers.bulkCerts.caAlias === 'Create New Supplier')
                        );
                    },
                },
                {
                    message: `Supplier CA value:`,
                    type: 'input',
                    name: 'bulkCerts.caValue',
                    default: answers.bulkCerts?.caValue,
                    askAnswered: true,
                    when(answers: Answers) {
                        return answers.bulkCerts?.setSupplier === true;
                    },
                },
                {
                    message:
                        'Would you like to provide any default values for the device certificates?',
                    type: 'confirm',
                    name: 'bulkCerts.setCertificateDefaults',
                    default: answers.bulkCerts?.setCertificateDefaults ?? true,
                    askAnswered: true,
                },
                {
                    message: `Default certificate common name (leave blank to skip):`,
                    type: 'input',
                    name: 'bulkCerts.commonName',
                    default: answers.bulkCerts?.commonName,
                    askAnswered: true,
                    when(answers: Answers) {
                        return answers.bulkCerts?.setCertificateDefaults === true;
                    },
                },
                {
                    message: `Default certificate organization (leave blank to skip):`,
                    type: 'input',
                    name: 'bulkCerts.organization',
                    default: answers.bulkCerts?.organization,
                    askAnswered: true,
                    when(answers: Answers) {
                        return answers.bulkCerts?.setCertificateDefaults === true;
                    },
                },
                {
                    message: `Default certificate organizational unit (leave blank to skip):`,
                    type: 'input',
                    name: 'bulkCerts.organizationalUnit',
                    default: answers.bulkCerts?.organizationalUnit,
                    askAnswered: true,
                    when(answers: Answers) {
                        return answers.bulkCerts?.setCertificateDefaults === true;
                    },
                },
                {
                    message: `Default certificate locality (leave blank to skip):`,
                    type: 'input',
                    name: 'bulkCerts.locality',
                    default: answers.bulkCerts?.locality,
                    askAnswered: true,
                    when(answers: Answers) {
                        return answers.bulkCerts?.setCertificateDefaults === true;
                    },
                },
                {
                    message: `Default certificate state name (leave blank to skip):`,
                    type: 'input',
                    name: 'bulkCerts.stateName',
                    default: answers.bulkCerts?.stateName,
                    askAnswered: true,
                    when(answers: Answers) {
                        return answers.bulkCerts?.setCertificateDefaults === true;
                    },
                },
                {
                    message: `Default certificate country (leave blank to skip):`,
                    type: 'input',
                    name: 'bulkCerts.country',
                    default: answers.bulkCerts?.country,
                    askAnswered: true,
                    when(answers: Answers) {
                        return answers.bulkCerts?.setCertificateDefaults === true;
                    },
                },
                {
                    message: `Default certificate email address (leave blank to skip):`,
                    type: 'input',
                    name: 'bulkCerts.emailAddress',
                    default: answers.bulkCerts?.emailAddress,
                    askAnswered: true,
                    when(answers: Answers) {
                        return answers.bulkCerts?.setCertificateDefaults === true;
                    },
                },
                {
                    message: `Default certificate distinguished name identifier (leave blank to skip):`,
                    type: 'input',
                    name: 'bulkCerts.distinguishedNameIdentifier',
                    default: answers.bulkCerts?.distinguishedNameIdentifier,
                    askAnswered: true,
                    when(answers: Answers) {
                        return answers.bulkCerts?.setCertificateDefaults === true;
                    },
                },
                ...applicationConfigurationPrompt(this.name, answers, [
                    {
                        question: 'Default certificate expiry days (leave blank to skip):',
                        defaultConfiguration: 365,
                        propertyName: 'expiryDays',
                    },
                    {
                        question:
                            'The chunk size that the number of requested certificates are split into',
                        defaultConfiguration: 100,
                        propertyName: 'chunksize',
                    },
                    {
                        question:
                            'Default number of concurrent threads for issuing ACM certificates:',
                        defaultConfiguration: 10,
                        propertyName: 'acmConcurrencyLimit',
                    },
                ]),
                ...customDomainPrompt(this.name, answers),
            ],
            updatedAnswers
        );

        return updatedAnswers;
    }