Сегодня хочу рассказать про некоторые Go библиотеки от известного гофера из Google, соавтора hugospf13.

  • viper – Go пакет для чтения конфигов. Поддерживает JSON, TOML, YAML, etcd, Consul, переменные окружения, флаги, отслеживание изменений, значение по умолчанию. В README написано, что сливать несколько конфигов нельзя, но вообще можно. Внимания заслуживает подход о том, что библиотеке должно быть совершенно без разницы, в каком там формате конфиг, поэтому имя конфига указывается без расширения, а то и вовсе просто директория, где конфиг нужно искать.

Я просмотрел все более-менее толковые пакеты для работы с конфигами, этот лучший. Хотя внимания ещё заслуживают go-config, который довольно хорошо поддерживает чтение и слияние нескольких конфигов, и envconfig, который умеет читать только переменные окружения, но делает это очень круто.

  • cobra – фреймворк для красивого построения CLI приложений с командами (и подкомандами), флагами, исправлением ошибок, генерацией help и man. Получается очень круто.

  • pflag – замена встроенному в Go flags с таким же интерфейсом, но поддержкой флагов в POSIX стиле. Хорошая штука, я её всегда использую.

  • afero – мощная абстракция над файловой системой. Удобные функции для всех основных операций с директориями и файлами, несколько бэкендов (локальная ФС, SFTP, in-memory), возможность превратить любой бэкенд в HTTP сервер, поддержка кеширования операций. К сожалению, SSH, ZIP и S3 бэкенды пока не сделаны, так что если хотите сделать что-то крутое на Go – вот он, шанс.