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