Необходимо реализовать утилиту 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 баллов
- https://www.unix.com/man-page/debian/8/envdir/
os.Args
os.ReadDir
bytes.Replace
,strings.TrimRight
exec.Command