1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- import WorkingGroupsCommandBase from '../../base/WorkingGroupsCommandBase';
- import { ApiMethodArg, ApiMethodNamedArgs } from '../../Types';
- import chalk from 'chalk';
- import { flags } from '@oclif/command';
- import { apiModuleByGroup } from '../../Api';
- import WorkerOpeningOptions from '../../promptOptions/addWorkerOpening';
- import { setDefaults } from '../../helpers/promptOptions';
- export default class WorkingGroupsCreateOpening extends WorkingGroupsCommandBase {
- static description = 'Create working group opening (requires lead access)';
- static flags = {
- ...WorkingGroupsCommandBase.flags,
- useDraft: flags.boolean({
- char: 'd',
- description:
- "Whether to create the opening from existing draft.\n"+
- "If provided without --draftName - the list of choices will be displayed."
- }),
- draftName: flags.string({
- char: 'n',
- description:
- 'Name of the draft to create the opening from.',
- dependsOn: ['useDraft']
- }),
- createDraftOnly: flags.boolean({
- char: 'c',
- description:
- 'If provided - the extrinsic will not be executed. Use this flag if you only want to create a draft.'
- }),
- skipPrompts: flags.boolean({
- char: 's',
- description:
- "Whether to skip all prompts when adding from draft (will use all default values)",
- dependsOn: ['useDraft'],
- exclusive: ['createDraftOnly']
- })
- };
- async run() {
- const account = await this.getRequiredSelectedAccount();
- // lead-only gate
- await this.getRequiredLead();
- const { flags } = this.parse(WorkingGroupsCreateOpening);
- let promptOptions = new WorkerOpeningOptions(), defaultValues: ApiMethodNamedArgs | undefined;
- if (flags.useDraft) {
- const draftName = flags.draftName || await this.promptForOpeningDraft();
- defaultValues = await this.loadOpeningDraftParams(draftName);
- setDefaults(promptOptions, defaultValues);
- }
- if (!flags.skipPrompts) {
- const module = apiModuleByGroup[this.group];
- const method = 'addOpening';
- let saveDraft = false, params: ApiMethodArg[];
- if (flags.createDraftOnly) {
- params = await this.promptForExtrinsicParams(module, method, promptOptions);
- saveDraft = true;
- }
- else {
- await this.requestAccountDecoding(account); // Prompt for password
- params = await this.buildAndSendExtrinsic(account, module, method, promptOptions, true);
- saveDraft = await this.simplePrompt({
- message: 'Do you wish to save this opening as draft?',
- type: 'confirm'
- });
- }
- if (saveDraft) {
- const draftName = await this.promptForNewOpeningDraftName();
- this.saveOpeningDraft(draftName, params);
- this.log(chalk.green(`Opening draft ${ chalk.white(draftName) } succesfully saved!`));
- }
- }
- else {
- await this.requestAccountDecoding(account); // Prompt for password
- this.log(chalk.white('Sending the extrinsic...'));
- await this.sendExtrinsic(account, apiModuleByGroup[this.group], 'addOpening', defaultValues!.map(v => v.value));
- this.log(chalk.green('Opening succesfully created!'));
- }
- }
- }
|