Skip to content

Latest commit

 

History

History

hw08_envdir_tool

Домашнее задание №8 «Утилита envdir»

Необходимо реализовать утилиту envdir на Go.

Эта утилита позволяет запускать программы, получая переменные окружения из определенной директории:

  • если директория содержит файл с именем S, первой строкой которого является T, то envdir удаляет переменную среды с именем S, если таковая существует, а затем добавляет переменную среды с именем S и значением T;
  • имя S не должно содержать =; пробелы и табуляция в конце T удаляются; терминальные нули (0x00) заменяются на перевод строки (\n);
  • если файл полностью пустой (длина - 0 байт), то envdir удаляет переменную окружения с именем S.

Пример использования:

$ go-envdir /path/to/env/dir command arg1 arg2

Если в директории /path/to/env/dir содержатся файлы:

  • FOO с содержимым 123;
  • BAR с содержимым value,

то вызов выше эквивалентен вызову

$ FOO=123 BAR=value command arg1 arg2

Также необходимо, чтобы:

  • стандартные потоки ввода/вывода/ошибок пробрасывались в вызываемую программу;
  • код выхода утилиты совпадал с кодом выхода программы.

При необходимости можно выделять дополнительные функции / ошибки.

Юнит-тесты могут использовать файлы из testdata или создавать свои директории / файлы, которые обязаны подчищать после своего выполнения.

Критерии оценки

  • Пайплайн зелёный - 4 балла
  • Добавлены юнит-тесты - до 4 баллов
  • Понятность и чистота кода - до 2 баллов

Зачёт от 7 баллов

Подсказки