123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import WorkingGroupsCommandBase from '../../base/WorkingGroupsCommandBase';
- import _ from 'lodash';
- import { apiModuleByGroup } from '../../Api';
- import { WorkerId } from '@joystream/types/lib/working-group';
- import { bool } from '@polkadot/types/primitive';
- import { formatBalance } from '@polkadot/util';
- import chalk from 'chalk';
- import { createParamOptions } from '../../helpers/promptOptions';
- export default class WorkingGroupsEvictWorker extends WorkingGroupsCommandBase {
- static description = 'Evicts given worker. Requires lead access.';
- static args = [
- {
- name: 'workerId',
- required: true,
- description: 'Worker ID'
- },
- ]
- static flags = {
- ...WorkingGroupsCommandBase.flags,
- };
- async run() {
- const { args } = this.parse(WorkingGroupsEvictWorker);
- const account = await this.getRequiredSelectedAccount();
-
- await this.getRequiredLead();
- const workerId = parseInt(args.workerId);
-
- const groupMember = await this.getWorkerForLeadAction(workerId);
-
- const rationale = await this.promptForParam('Bytes', createParamOptions('rationale'));
- const shouldSlash = groupMember.stake
- ?
- await this.simplePrompt({
- message: `Should the worker stake (${formatBalance(groupMember.stake)}) be slashed?`,
- type: 'confirm',
- default: false
- })
- : false;
- await this.requestAccountDecoding(account);
- await this.sendAndFollowExtrinsic(
- account,
- apiModuleByGroup[this.group],
- 'terminateRole',
- [
- new WorkerId(workerId),
- rationale,
- new bool(shouldSlash)
- ]
- );
- this.log(chalk.green(`Worker ${chalk.white(workerId)} has been evicted!`));
- if (shouldSlash) {
- this.log(chalk.green(`Worker stake totalling ${chalk.white(formatBalance(groupMember.stake))} has been slashed!`));
- }
- }
- }
|