Проектная лаборатория
Собственный Shell
Этап 40 · Программируемое дополнение
Обработка отсутствия дополнений
Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.
На этом этапе вы обработаете случай, когда скрипт дополнения не возвращает вариантов.
Обработка пустого вывода скрипта дополнения
Если скрипт дополнения ничего не выводит в stdout, у оболочки нет вариантов для дополнения. В этом случае она должна:
- Оставить ввод без изменений.
- Вызвать звуковой сигнал терминала, напечатав
\x07в stdout.
Это сообщает пользователю, что нажатие TAB получено, но доступного дополнения нет.
Например, скрипт дополнения, который всегда завершается без вывода:
#!/usr/bin/env python3
exit(0)После регистрации и вызова по TAB оболочка должна лишь подать звуковой сигнал и оставить ввод без изменений:
$ complete -C /path/to/completer_script docker
$ docker xyz<TAB>
# bell rings, input line stays as "docker xyz"Проверки
Тестирующая система запустит вашу программу следующим образом:
$ ./your_program.shСистема предоставит скрипт дополнения без вывода, зарегистрирует его для команды и нажмёт TAB:
$ complete -C /path/to/completer_script docker
$ docker xyz<TAB>
# bell rings, input unchangedТестирующая система проверит, что:
- После нажатия TAB строка ввода не меняется.
- Символ звукового сигнала (
\x07) выводится в stdout.
Проверка в вашей 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 qf1Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.
Результат проверки
go / ЛОКАЛЬНОПодключение к локальной проверке…
Здесь появится результат
Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.