## Домашнее задание №8 «Утилита envdir» Необходимо реализовать утилиту `envdir` на Go. Эта утилита позволяет запускать программы, получая переменные окружения из определенной директории: - если директория содержит файл с именем `S`, первой строкой которого является `T`, то `envdir` удаляет переменную среды с именем `S`, если таковая существует, а затем добавляет переменную среды с именем `S` и значением `T`; - имя `S` не должно содержать `=`; пробелы и табуляция в конце `T` удаляются; терминальные нули (`0x00`) заменяются на перевод строки (`\n`); - если файл полностью пустой (длина - 0 байт), то `envdir` удаляет переменную окружения с именем `S`. --- Пример использования: ```bash $ go-envdir /path/to/env/dir command arg1 arg2 ``` Если в директории `/path/to/env/dir` содержатся файлы: * `FOO` с содержимым `123`; * `BAR` с содержимым `value`, то вызов выше эквивалентен вызову ```bash $ FOO=123 BAR=value command arg1 arg2 ``` --- Также необходимо, чтобы: * стандартные потоки ввода/вывода/ошибок пробрасывались в вызываемую программу; * код выхода утилиты совпадал с кодом выхода программы. При необходимости можно выделять дополнительные функции / ошибки. Юнит-тесты могут использовать файлы из `testdata` или создавать свои директории / файлы, которые **обязаны** подчищать после своего выполнения. ### Критерии оценки - Пайплайн зелёный - 4 балла - Добавлены юнит-тесты - до 4 баллов - Понятность и чистота кода - до 2 баллов #### Зачёт от 7 баллов ### Подсказки - https://www.unix.com/man-page/debian/8/envdir/ - `os.Args` - `ioutil.ReadDir` - `bytes.Replace`, `strings.TrimRight` - `exec.Command`