aqua

module
v0.7.16 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 11, 2021 License: MIT

README

aqua

Build Status GitHub last commit License

Declarative CLI Version manager. Support Lazy Install and Sharable configuration mechanism named Registry. Switch versions seamlessly.

Install | Config | Usage | Document | Release Note

Currently, aqua doesn't support Windows.

Feature

  • Install tools easily by the declarative YAML Configuration and simple command aqua i
  • Unify tool versions at local development environment and CI/CD for the project
    • It solves the problem due to the difference of versions
  • Support using defferent versions per project
  • Lazy Install
  • Registry - Sharable Configuration mechanism
  • Save installation time and disk by sharing tools across projects
  • Set up your laptops quickly
  • Share aqua configuration for teams and organizations

Overview

You can install CLI tools and manage their versions with declarative YAML configuration aqua.yaml.

e.g. Install jq, direnv, and fzf with aqua.

registries:
- type: standard
  ref: v0.10.6 # renovate: depName=suzuki-shunsuke/aqua-registry

packages:
- name: stedolan/jq
  version: jq-1.6
- name: direnv/direnv@v2.28.0
- name: junegunn/fzf@0.27.2

You can install tools by aqua i.

$ aqua i

aqua i installs all packages all at once. Tools are installed in ~/.aqua/pkgs and symbolic links are created in ~/.aqua/bin, so please add ~/.aqua/bin to the environment variable PATH.

It takes a long time to install many tools all at once, and some tools might not be actually needed.

So instead of aqua i let's execute aqua i -l.

$ aqua i -l

aqua i -l creates symbolic links to aqua-proxy in ~/.aqua/bin but skipping the downloading and installing tools. When you execute the tool, the tool is installed automatically if it isn't installed yet before it is executed. We call this feature as lazy install. By the lazy install, you don't have to execute aqua explicitly after changing the tool's version. When aqua.yaml is managed with Git, the lazy install is very useful because aqua.yaml is updated by git pull then the update is reflected automatically.

By adding aqua.yaml in your Git repositories, you can manage tools per repository. You can use the different version of tools per project.

aqua installs the tools in the shared directory ~/.aqua, so the same version of the same tool is installed only at once. It saves the installation time and the disk usage.

aqua supports the mechanism named Registry. You can share and reuse the aqua configuration, so it makes easy to write aqua.yaml.

registries:
- type: standard
  ref: v0.10.6 # renovate: depName=suzuki-shunsuke/aqua-registry

packages:
- name: direnv/direnv@v2.28.0
  # The default value of `registry` is `standard`
  # registry: standard

In the above configuration, the Standard Registry is used so you can install direnv easily.

By the command aqua generate, you can check if the registry supports the tool you need and write the configuration quickly.

$ aqua g

aqua g launches the interactive UI and you can select the package and it's version interactively.

  direnv (standard)
  consul (standard)
  conftest (standard)
> golangci-lint (standard)
  47/47
>

After selecting the package, the configuration is outputted.

$ aqua g
- name: golangci-lint@v1.42.0

If the Registries don't support the tool, you can send the pull request to the registry or create your own Registry or add the configuration in aqua.yaml as inline Registry.

Install

Add ~/.aqua/bin to the environmenet variable PATH.

$ export PATH=$HOME/.aqua/bin:$PATH

Install tools in your laptop

If you want to install tools in your laptop regardless specific project, create the global configuration ~/.aqua/global/aqua.yaml. Like dotfiles, it is good to manage the Global Configuration with Git and share it with your multiple laptops.

For example,

$ git clone https://github.com/suzuki-shunsuke/my-aqua-config ~/.aqua/global
$ cd ~/.aqua/global
$ aqua i -l

Welcome your contribution to Standard Registry!

https://github.com/suzuki-shunsuke/aqua-registry

If tools you want aren't found in Standard Registry, please create issues or send pull requests!

Slide, Blog

Versioning Policy

We are Conforming suzuki-shunsuke/versioning-policy v0.1.0, which is compatible with Semantic Versioning 2.0.0.

License

MIT

Directories

Path Synopsis
cmd
aqua command
pkg
cli
log

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL