3 releases
new 0.0.3 | May 10, 2025 |
---|---|
0.0.2 | May 10, 2025 |
0.0.1 | May 10, 2025 |
#340 in Filesystem
32 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-downinfo
to get download details andinstall-local
with the downloaded files and info for offline installation.
- Tagging and Aliasing:
- Each tool version/architecture is identified by a unique
tag
. - Create
aliases
for tags, providing fixed paths that can point to different underlying tool versions. This is useful for configuring your environment. copy
a 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:
avm
does not automatically modify your system's environment variables. Use thepath
subcommand 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
~21–38MB
~630K SLoC