Overview of aqua-registry
mainaqua-registry serves as the Standard Registry for aqua. It acts as a central repository for managing and documenting products and components within the aqua ecosystem.repository·main·Indexed 18 days ago
https://github.com/aquaproj/aqua-registryThe standard registry for the aqua ecosystem, providing a centralized location for product documentation and registry management. This documentation covers adding new tools using the `argd s` command, customizing code generation via `aqua-generate-registry.yaml`, manual troubleshooting of package installations, and guidelines for handling forked package sources and versioning styles.
aqua-registry serves as the Standard Registry for aqua. It acts as a central repository for managing and documenting products and components within the aqua ecosystem.aqua installs commands into a specific directory in your PATH (AQUA_ROOT_DIR/bin). Because of this design, aqua cannot support tools that require plugins to be installed in specific, non-standard locations.
Examples of tools that may have compatibility issues include:
If you are submitting a pull request to add a plugin to aqua-registry, you must verify that the plugin works when installed via aqua's mechanism. If the plugin requires a specific installation path, please explain this behavior in your pull request description so the maintainers can evaluate it.
Files located at pkgs/**/pkg.yaml serve as test data within the registry. Their primary purpose is to verify that specific packages can be installed properly.
Important: These files are not exhaustive lists of all available versions. You can still install any version of a package that is not explicitly listed in a pkg.yaml file.
To prevent name conflicts, all tool names in registry.yaml must include a namespace-like prefix using a /.
namespace/tool-name (e.g., hashicorp/terraform instead of terraform).winebarrel/cronplan/cronmatch).aqua-renovate-config assumes a package name without a period (e.g., owner/repo) refers to a GitHub repository and attempts to fetch versions from GitHub Releases or Tags. If the package is not hosted on GitHub, include a period in the name as a workaround.crates.io/<crate name> (e.g., crates.io/skim).gitlab.com/<repository name>.When deciding whether to regenerate a package, check the version_constraint and version_overrides syntax in the package configuration:
version_constraint: "false" and a list of version_overrides. Constraints typically use <= (e.g., semver("<= 0.1.0")) and end with a version_constraint: "true" entry for the latest version.version_overrides definition entirely. If you encounter this style, it is usually better to regenerate the package from scratch.version_constraint: "false" # Root version_constraint is "false"
version_overrides:
- version_constraint: semver("<= 0.1.0")
# ...
- version_constraint: "true" # End with "true" for latest version configuration
# ...aqua does not support dynamic $PATH modification. For a programming language to be supported, its commands and libraries must be installable in a way that allows aqua to manage them without breaking the environment.
Key constraints:
$PATH, aqua cannot execute them.Example: Node.js Support
Node.js is supported because the installation path can be redirected using the NPM_CONFIG_PREFIX environment variable, preventing npm i -g from installing into the same directory as the Node.js binary itself.
Package-related code and configuration are organized within the pkgs/<package name> directory. Each package directory typically contains three key files:
registry.yaml: The primary configuration for a specific tool. These individual files are merged to generate the master registry.yaml located at the repository root.pkg.yaml: Contains test data, specifically a list of versions installed during testing. Note that pkg.yaml is only for testing; you can install versions that are not listed in this file.scaffold.yaml (Optional): Used to configure commands that auto-generate pkg.yaml and registry.yaml. This file is required if you need to modify the auto-generation behavior.If a package uses version_overrides, you should test more than just the latest version. Add both the latest version and older versions to the packages list to ensure backward compatibility and proper installation of legacy versions.
packages:
- name: scaleway/scaleway-cli@v2.12.0
- name: scaleway/scaleway-cli
version: v2.4.0When reporting an issue, provide as much detail as possible to avoid misunderstandings. For a high-quality How to reproduce section, include the following information:
If you are testing multiple versions, describe the results for each.
If auto-generation fails or produces errors that are difficult to resolve via configuration, you can modify the files manually.
Steps for manual troubleshooting:
pkg.yaml to isolate the issue.argd t to verify that the package can be installed correctly.argd t cycle until the installation succeeds.# Verify manual changes
argd t