Поделиться через


Добавление новой команды разработки интерфейса командной строки CoE (не рекомендуется)

Заметка

Интерфейс командной строки CoE устарел и будет удален в следующем выпуске. Используйте Мастер установки проекта Power Platform для настройки и администрирования ваших проектов ALM Accelerator for Power Platform.

Чтобы добавить новый пример команды, вы можете использовать следующую команду для шаблона начальной настройки команды TypeScript и модульного теста Jest JavaScript.

cd coe-cli
coe cli add -n sample

Подключение команды к командной строке

После завершения модульного теста для вашей новой команды выполните следующие задачи:

  1. Прочтите https://www.npmjs.com/package/commander по командам, параметрам.

  2. Обновите command.ts для включения новой команды или подкоманды.

    • Импортируйте свои файлы в верхней части файла.
    import { SampleArguments, SampleCommand} from './sample';
    
    • Добавьте функцию для имитации инъекции.
        createSampleCommand: () => SampleCommand
    
    • Создайте команду в функции-конструкторе.
           this.createSampleCommand = () => new SampleCommand
    
    • Добавьте функцию.
        AddSampleCommand(program: commander.Command) {
            var run = program.command('sample')
                .description('A new sample command')
                .option('-c, --comment <comment>', 'The comment for the command')
                .action(async (options: any) : Promise<void> => {
                    let args = new SampleArguments();
                    args.comment = options.comment;
                    let command = this.createSampleCommand();
                    await command.execute(args)
                });
        }
    
    • Зарегистрируйте новую команду для функции init.
            this.AddSampleCommand(program);
    
  3. Обновите command.spec.ts, чтобы включить модульные тесты.

    • Включите ссылку на команду.
    import { SampleCommand } from '../../src/commands/sample'
    
    • Добавьте набор тестов Jest.
    describe('Sample', () => {
        test('Execute', async () => {
            // Arrange
            var commands = new CoeCliCommands();
            let mockSampleCommand = mock<SampleCommand>(); 
    
            commands.createSampleCommand = () => { return mockSampleCommand }
    
            mockSampleCommand.execute.mockResolvedValue()
    
            // Act
            await commands.execute(['node', 'commands.spec', 'sample', '-c', 'Some comment'])
    
            // Assert
            expect(mockSampleCommand.execute).toHaveBeenCalled()
        })
    });
    
  4. Запустите модульные тесты с новыми изменениями.

    npm run test