Originally published at: https://sweetops.com/sub/variant/
Variant is a tool to write modern CLIs in YAML. It’s a way to stitch together bash, workflows, dataflows with dependency injection using a modern DSL. Automating DevOps workflows is difficult because it often involves multiple
executables like shell/ruby/perl/etc scripts and commands that each have a different interface which is not standardized. Those tools vary in their quality; from scripts that were written in a day and intended as a one-off command that wind up sticking around for months or even years, to serious commands which are well-designed from the ground up and written in richer programming languages with adequate tests. These commands present different interfaces; some accept passing parameters via environment variables, others having application specific command-line flags, or configuration files. Variant is a single tool which wires up all the executables and re-implements all the standard ways of passing information (flags, arguments, environment variables, configurations) and then allows the developer to pass those along to the dependent tools. This enables an organization to provide a consistent set of tooling for its developers.