Мы используем технические cookie и статистику посещений: Яндекс Метрику и собственный обезличенный журнал Zorky (cookie zk_aid). Не собираем содержимое форм, текст поиска и полный IP; данные не продаём. Отказаться можно кнопкой ниже, а также через Global Privacy Control или Do Not Track в браузере. Подробнее о cookie и статистике.
Zorky CRMZorky CRM
EN|RU
@termdocs
← Все вакансии

Commandment, a DevOps-focused CLI framework built around go 1.27 generic methods

DEСкор 57/1001д назад
Аналитика рынка
📊 DevOps / SRE: зарплаты и спрос на рынке
Стек
devopsgosre
Откликнуться
Загрузите резюме — мы свяжем вас с работодателем напрямую через нашу базу.
Отправить резюме →
Описание
I made a CLI library that treats SRE/DevOps workflows as first class citizens. If your team makes many custom CLIs in go, you should check out this project! I started working on this project about a month before 1.27. Today I'm happy to announce that I’ve released `v1.0.0-rc.1` of Commandment, a Go framework for building typed command-line applications. The v1 feature set and public API are now essentially complete; this RC is the point where I want the design exposed to real use and criticism before I freeze it as `v1.0.0`. The main reason Commandment exists is that a nontrivial CLI tends to accumulate several overlapping descriptions of itself. As an SRE consultant, this has been a huge thorn in my side for the better part of a decade. I have played with different CLI libraries and design patterns within those libraries, but nothing really solved the problems I had for making production level CLI-based apps without a significant amount of custom code. A lot of my problems have to do with how most common Go CLI libraries are imperative by design. Commandment instead compiles a typed declaration into one semantic application model. Running the CLI, generating help and completion, inspecting it, and testing its semantics are different operations over that same model rather than separate approximations of it. Its as close to `declarative` as I could get it, and I think it looks pretty clean. Let's check out an example: type scanConfig struct { World string
Контакты работодателя (email/phone/telegram) скрыты из публичного превью — отправьте резюме, чтобы мы связали вас напрямую.
Срочный вопрос? Напишите @termdocs