Проектная лаборатория
Собственный Shell
Этап 38 · Программируемое дополнение
Отображение зарегистрированных спецификаций
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы добавите поддержку флага -C для регистрации дополнений и расширите -p для их отображения.
Регистрация и отображение дополнений
Флаг -C указывает complete зарегистрировать скрипт дополнения для команды. После регистрации complete -p <command> должна выводить его в нормализованном формате.
$ complete -C /path/to/git/completer git
$ complete -p git
complete -C '/path/to/git/completer' git
$ complete -C /path/to/docker/completer docker
$ complete -p docker
complete -C '/path/to/docker/completer' dockerДве особенности формата вывода:
- Путь скрипта заключён в одинарные кавычки.
- Аргументы разделены ровно одним пробелом независимо от записи команды регистрации.
Поэтому даже если при регистрации пользователь добавляет лишние пробелы, вывод всегда остаётся аккуратным:
$ complete -C /path/to/git/completer git
$ complete -p git
complete -C '/path/to/git/completer' gitПроверки
Тестирующая система запустит вашу программу следующим образом:
$ ./your_program.shСистема зарегистрирует дополнения с помощью -C (иногда с лишними пробелами), а затем запросит их с помощью -p:
$ complete -C /path/to/completer/script git
$ complete -p git
complete -C '/path/to/completer/script' git
$ complete -C /path/to/docker/completer docker
$ complete -p docker
complete -C '/path/to/docker/completer' dockerТестирующая система проверит, что:
complete -C <path> <command>регистрирует дополнение и ничего не выводит.complete -p <command>выводит зарегистрированное дополнение в форматеcomplete -C '<path>' <command>.- Вывод использует одинарные кавычки вокруг пути и одиночные пробелы между аргументами.
Примечания
- На предыдущих этапах
complete -p <command>выводилаcomplete: <command>: no completion specification. Эта ошибка по-прежнему является правильным ответом, если для указанной команды не зарегистрировано дополнение. - Не повторяйте исходную команду
complete -C. Разберите аргументы, сохраните их и восстановите вывод в нормализованном формате. - Одинарные кавычки вокруг пути — буквальные символы в выводе.
Проверка в вашей IDE
Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.
Настройка проекта и IDE
1. Создайте проект один раз
node '/opt/graphlms/tools/project-lab/cli.mjs' init shell ./my-shell --language go2. Откройте папку в IDE
cd ./my-shellРеализуйте требования этапа в созданном проекте.
Запустите из папки проекта
node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage wl6Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.