3 releases
| 0.0.3 | May 10, 2025 |
|---|---|
| 0.0.2 | May 10, 2025 |
| 0.0.1 | May 10, 2025 |
#169 in FFI
61 downloads per month
275KB
4.5K
SLoC
avm
(Potentially) Any language Version Manager, a Command-Line Interface tool designed to manage multiple versions of development tools for potentially any programming language, maximizing code reuse.
Key designs
- Version Management: Easily install, manage, and switch between different versions of various development tools.
- Flexible Installation:
- Configure mirrors using URL prefix replacement to adapt to different network environments.
- Install tools from local archives for offline use. Use
get-downinfoto get download details andinstall-localwith the downloaded files and info for offline installation.
- Tagging and Aliasing:
- Each tool version/architecture is identified by a unique
tag. - Create
aliasesfor tags, providing fixed paths that can point to different underlying tool versions. This is useful for configuring your environment. copya tag to duplicate its contents, ideal for tools that modify themselves during execution.
- Each tool version/architecture is identified by a unique
- Manual Environment Setup:
avmdoes not automatically modify your system's environment variables. Use thepathsubcommand to retrieve the installation path for a specific tag or alias and manually configure your environment. Aliases provide stable paths that can point to different underlying tags.
Roadmap
- Liberica JDK/JRE
- Go
- Node.js
- Python
- .NET
- .NET CLI has its own SDKs manager. Need to decide how to integrate it.
- Rustup
- Rustup delegate
- Install rustup if not found
- Install MSVC toolchain on Windows if not found
- uv for Python
- uv delegate
- Install uv if not found
Configuration
The configuration file path can be found by running avm config-path.
Format:
mirror: # optional: Define download mirrors
- from: https://original-prefix.com/a/b
to: https://mirror-prefix.com/c/d # e.g., https://original-prefix.com/a/b/e/f becomes https://mirror-prefix.com/c/d/e/f
# - ... more mirror rules
dataPath: /path/to/data # Optional: Directory to store downloaded tools. Uses an OS-specific default if omitted.
rustup:
path: /path/to/rustup # Optional: Path to rustup executable.
Dependencies
~20–42MB
~656K SLoC