All files / src/functions run.action.as.command.ts

35.29% Statements 6/17
100% Branches 0/0
0% Functions 0/3
33.33% Lines 5/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30    1x 1x     1x   1x                                       1x  
'use strict';
 
import {Command} from 'commander';
import {each, first} from 'lodash';
 
import ActionAsCommandInterface from '../interfaces/action.as.command.interface';
import getOptionAndDefaultValue from '../functions/get.option.and.default.value';
 
export const runActionAsCommand = async (action: ActionAsCommandInterface): Promise<void> => {
	const program: Command = new Command();
	const signature: string = action.signature();
	const actionCommand: string = first(signature.split(' '));
 
	program
		.name('pnpm cli') //
		.command(actionCommand)
		.description(action.description());
 
	const options: string[] = signature.match(/{([^}]*)}/g);
	each(options, (config) => {
		const {option, defaultValue} = getOptionAndDefaultValue(config);
		program.option(option, '', defaultValue);
	});
 
	program.parse(process.argv);
 
	return action.asCommand(program.opts());
};
export default runActionAsCommand;