• 0 Posts
  • 12 Comments
Joined 1 year ago
cake
Cake day: June 4th, 2025

help-circle







  • I think it depends a lot on what kind of application you’re thinking of. Here are some examples of tools that I particularly remember for having nice CLI interfaces, but they are all slightly different in terms of the number of operations/entities they support.

    Single operation, a lot of different types of data: httpie

    httpie is a CLI HTTP client. It allows to generate fairly complex requests, choose which diagnostic information you want to see, etc.

    Examples:

    $ https httpie.io/hello
    $ http PUT pie.dev/put X-API-Token:123 name=John
    $ http -v pie.dev/get
    

    Several operations, a lot of parameters: Bazel

    Bazel is a build system. There are only a handful of operations you typically perform (build, run, test, query), but they all follow the same pattern.

    Examples:

    $ bazel build //app
    $ bazel --quiet build //app -c opt
    $ bazel --quiet run //app -c opt -- --port=1234
    

    Multiple entites, multiple operations: LVM

    I really liked the interface of Linux Volume Manager tools. They consist of multiple commands that follow the same pattern, and use the same flags for options.

    Examples:

    # vgcreate -n vg_name
    # vgs
    # pvcreate /dev/sda
    # vgextend vg_name /dev/sda
    # lvcreate vg_name -n lv_name -L5G
    # lvresize vg_name/lv_name -L+1G
    # lvs