Engineer in Tokyo

TIL: Aqua CLI Version Manager

When I worked on the SLSA project I came across the Aqua CLI version manager. It’s a pretty cool tool that acts sort of like a package manager for CLI binaries.

The aqua generate -i command allows you to search for commands via the Aqua registry and saves the tool dependency in aqua.yaml.

checksum:
    enabled: true
    require_checksum: true
    supported_envs:
        - all
registries:
    - type: standard
      ref: v4.333.3 # renovate: depName=aquaproj/aqua-registry
packages:
    - name: rhysd/actionlint@v1.7.7
    - name: koalaman/shellcheck@v0.10.0
    - name: jqlang/jq@jq-1.7.1
    - name: mvdan/sh@v3.11.0
    - name: JohnnyMorganz/StyLua@v2.0.2
    - name: Kampfkarren/selene@0.28.0

Another thing that’s cool is that it can keep a checksum of the dependency in aqua-checksums.json or use SLSA provenance to verify the integrity of the downloaded binary tools. There are a lot of features like managing tool versions per project as well. The only downside I’ve found so far is that it can only really support tools that can be compiled to a binary so it can’t really manage tools written in interpretet languages like JavaScript, or Python.