mirror of
https://github.com/asdf-vm/asdf.git
synced 2024-11-15 01:28:17 -07:00
Update readme with all details
This commit is contained in:
parent
aa050b6152
commit
da67af8759
136
README.md
136
README.md
@ -2,36 +2,140 @@
|
||||
|
||||
> for everything that needs a version manager
|
||||
|
||||
asdf is an extendable version manager.
|
||||
|
||||
## Commands
|
||||
|
||||
asdf install <package> <version>
|
||||
asdf uninstall <package> <version>
|
||||
asdf list <package>
|
||||
asdf list-all <package>
|
||||
asdf use <package> <version>
|
||||
asdf source-add <package> <source>
|
||||
asdf source-remove <package>
|
||||
asdf source-update --all
|
||||
asdf source-update <package>
|
||||
Add or create a source for any package/language/tool you want. There's a simple API for it.
|
||||
|
||||
|
||||
## `.versions` file
|
||||
## Manage sources
|
||||
|
||||
Sources are how asdf understands how to handle packages.
|
||||
|
||||
#### Add a source for a package
|
||||
|
||||
```
|
||||
elixir 1.0.0
|
||||
asdf source-add <name> <git-url>
|
||||
```
|
||||
|
||||
Say you want to add Erlang. There's a package source for it at <https://github.com/HashNuke/asdf-erlang>.
|
||||
|
||||
```
|
||||
asdf source-add erlang https://github.com/HashNuke/asdf-erlang.git
|
||||
```
|
||||
|
||||
#### Remove a source
|
||||
|
||||
```
|
||||
asdf source-remove <name>
|
||||
```
|
||||
|
||||
Now you want to remove the package source for erlang you added earlier.
|
||||
|
||||
```
|
||||
asdf source-remove erlang
|
||||
```
|
||||
|
||||
#### Update sources
|
||||
|
||||
To update all sources run the following
|
||||
|
||||
```
|
||||
asdf source-update --all
|
||||
```
|
||||
|
||||
If you want to update a specific package, just say so.
|
||||
|
||||
```
|
||||
asdf source-update <name>
|
||||
```
|
||||
|
||||
## Manage packages
|
||||
|
||||
```
|
||||
# asdf install <name> <version>
|
||||
asdf install erlang 17.3
|
||||
|
||||
# asdf uninstall <name> <version>
|
||||
asdf uninstall erlang 17.3
|
||||
```
|
||||
|
||||
#### Lists installed versions
|
||||
|
||||
```
|
||||
# asdf list <name>
|
||||
asdf list <name>
|
||||
```
|
||||
|
||||
#### List all available versions
|
||||
|
||||
```
|
||||
# asdf list-all <name>
|
||||
asdf list-all erlang
|
||||
```
|
||||
|
||||
#### Use a specific version of a package
|
||||
|
||||
```
|
||||
asdf use <name> <version>
|
||||
asdf use erlang 17.3
|
||||
```
|
||||
|
||||
It writes the version to the `.versions` file in the current working directory.
|
||||
|
||||
|
||||
## The `.versions` file
|
||||
|
||||
Add a `.versions` file to your project dir and versions of those packages will be used.
|
||||
|
||||
```
|
||||
elixir 1.0.2
|
||||
erlang 17.3
|
||||
```
|
||||
|
||||
|
||||
## Package source structure
|
||||
## Creating package sources
|
||||
|
||||
A package source is a git repo, with the following executable scripts
|
||||
|
||||
* `bin/list-all` - lists all installable versions
|
||||
* `bin/install` - installs the specified version
|
||||
* `bin/uninstall` - uninstalls the specified version
|
||||
* `bin/use` - uses the specified version (and also adds the version to `.versions` file in the dir)
|
||||
* `bin/use` - whatever you want to run when a specific version is used (like set an env var?)
|
||||
|
||||
|
||||
These scripts are run when `list-all`, `install`, `uninstall` or `use` commands are run. You can set or unset env vars,
|
||||
### list-all
|
||||
|
||||
This script should list stable versions that can be installed
|
||||
|
||||
### install
|
||||
|
||||
This script should install the package. It will be passed the following command-line args (in order).
|
||||
|
||||
* *install type* - "version", "tag", "commit"
|
||||
* *version* - this is the version or commit sha or the tag name that should be installed (use the first argument to figure out what to do).
|
||||
* *install path* - the dir where the it *should* be installed
|
||||
|
||||
**Any other args that comes after this is whatever the user passes to the install command**. Feel free to use them in whatever way you think is appropriate.
|
||||
|
||||
These scripts are run when `list-all`, `install`, `uninstall` or `use` commands are run. You can set or unset env vars and do whatever you need.
|
||||
|
||||
### uninstall
|
||||
|
||||
Uninstalls a command
|
||||
|
||||
You'll get the same args as the `install` script.
|
||||
|
||||
### use
|
||||
|
||||
Will be passed the following args
|
||||
|
||||
* *install type*
|
||||
* *version*
|
||||
|
||||
Feel free to set env vars and do what is appropriate to setup the version of the package for use.
|
||||
|
||||
## Credits
|
||||
|
||||
Me ([@HashNuke](http://github.com/HashNuke)), High-fever, cold, cough
|
||||
|
||||
Copyright 2014 to the end of time
|
||||
|
Loading…
Reference in New Issue
Block a user