Commit Graph

324 Commits

Author SHA1 Message Date
Matt
a7d3661f6c
fix: insert error handling in list-all & download plugin scripts (#881) 2021-05-19 19:51:45 +10:00
James Hegedus
b9228a26de
fix: remove find -print0 2021-05-19 19:43:16 +10:00
James Hegedus
26d2c64477
fix: pipe find into while 2021-05-19 19:01:36 +10:00
James Hegedus
10d9c1218e
Merge branch 'master' into ban-process-substitution 2021-04-27 19:34:35 +10:00
jthegedus
43d6fef000 fix: format command-reshim 2021-04-27 19:31:22 +10:00
jthegedus
ade70b94db chore: sync master 2021-04-27 19:28:24 +10:00
James Hegedus
d7b62d2e92
fix: plugin update portability (#924) 2021-04-18 15:03:00 +10:00
James Hegedus
456d8e36ca
fix: <plugin update all> to latest commit on default branch for each plugin (#800) 2021-03-02 17:37:05 +11:00
Trevor Brown
f633811577 Ban process substitution from asdf codebase 2021-02-05 11:28:27 -05:00
Nanda Lopes
dc776c0bc0 Fix find global options warning
find: warning: you have specified the global option -mindepth after the argument
-type, but global options are not positional, i.e., -mindepth affects tests
specified before it as well as those specified after it.  Please specify global
options before other arguments.

find: warning: you have specified the global option -maxdepth after the argument
-type, but global options are not positional, i.e., -maxdepth affects tests
specified before it as well as those specified after it.  Please specify global
options before other arguments.
2021-01-19 11:14:26 -03:00
Aaron Jensen
d2b7e2fceb
Update no plugin installed error message (#818) 2020-12-21 11:00:09 +11:00
Trevor Brown
ebc52b150b
Merge branch 'master' into parallelize-plugin-updates 2020-09-28 12:16:06 -04:00
Trevor Brown
8bbefba072
chore: ban echo command (#806) 2020-09-22 08:27:52 +10:00
Jochen Schalanda
0edb50547c
feat: support for "latest" in shell, local, and global (#802) 2020-09-19 15:37:52 +10:00
Trevor Brown
d93a2b6fe1 Fix syntax for plugin update loop 2020-09-18 11:41:56 -04:00
Joel Parker Henderson
0efc04bca5
Fix plugin-update --all when there are no plugins
Issue: when asdf is first installed, there are no plugins, and running `asdf plugin-update --all` crashes because the plugin directory doesn't exist; similarly, the command crashes if the plugins directory exists yet doesn't contain any subdirectories.

Solution: This patch changes the directory loop from using a wildcard `plugins/*` to a more robust approach: first verify the plugins directory exists, then use the`find` command to list subdirectories and correctly handle the corner case of no subdirectories.

Future: Consider printing an error message and/or advice message. Consider automatically creating the plugins directory as needed. Consider prompting the user to install some popular plugins.
2020-09-16 21:00:35 -07:00
James Hegedus
b178cb07a7
fix: rm asdf current header row for now (#793) 2020-09-02 09:11:07 +10:00
Timo Sand
d27b3661a9
Fixes linter issues 2020-09-01 23:27:56 +02:00
Timo Sand
cd4c1c5748
Changes to use function to update plugin
Enables us to add parallelization
2020-09-01 23:27:56 +02:00
James Hegedus
e9c149ea21
fix: incorrect version output in asdf current (#746) 2020-08-29 09:09:22 +10:00
Daniel Perez
77a748d70a
fix: _where_ bug when multiple versions are selected (#790)
Fixes #690
2020-08-28 19:24:59 +10:00
James Hegedus
8ca2af3316
feat: cmd to print debug information (#787) 2020-08-24 10:55:41 +10:00
samontea
b6deb141b5 fix: typo causing plugin-test to erroneously fail 2020-08-17 15:38:36 -07:00
Daniel Perez
1a01356935
fix: plugin test to emit error message when latest fails (#772)
Fix #756
2020-08-10 13:27:35 +10:00
Trevor Brown
cc0023b022
feat: plugin documentation callback support 🎉 (#757) 2020-07-31 18:47:18 +10:00
Dan Fuchs
6a1855e26f Install one tool specified in .tool-versions
`asdf install <name>` installs that single tool at the version specified
in `.tool-versions`.  If there is no `.tool-versions` or if that tool is
not in it, an error message is shown and `asdf` exits `1`.

Implements #759
2020-07-09 18:16:50 -05:00
James Hegedus
50feef2a77
fix: CI formatting use editorconfig (#751) 2020-06-30 09:16:35 +10:00
Thomas B Homburg
1b7b4da0a6
fix: remove column command in favor of awk (#721) 2020-06-17 08:26:46 +10:00
James Hegedus
0f80ac3567
fix: remove sort --version-sort from command-latest as list is already sorted (#700) 2020-06-09 09:24:41 +10:00
Aravinda Rao
fe26274f38 Ensure consistency in indentation for message shown when no versions installed 2020-05-18 21:48:27 +05:30
Trevor Brown
410f414529 Remove downloads when removing a plugin 2020-05-14 09:13:51 -04:00
Trevor Brown
2a058af9eb
Merge branch 'master' into tb/keep-source 2020-05-08 10:21:59 -04:00
Trevor Brown
f28c518dc7 Address shellcheck warnings 2020-05-05 08:57:42 -04:00
Trevor Brown
309a4f1a12 Don't delete the download directory if the --keep-download flag is passed or the always_keep_download config is set to yes 2020-05-04 15:05:10 -04:00
Trevor Brown
a886303065 Remove duplicate mkdir calls in install_tool_version function 2020-05-04 10:51:07 -04:00
Trevor Brown
c4c022454f Revert "Change exit code to 0 and output message to stdout"
This reverts commit e48ed1c228.
2020-03-31 09:09:52 -04:00
Paulo Renato
e48ed1c228 Change exit code to 0 and output message to stdout 2020-03-30 16:06:12 -03:00
Jochen Schalanda
3c3f0e67f6
Rename custom plugin-add/plugin-remove for plugins (#684)
Rename custom scripts for `plugin-add` and `plugin-remove` phases in plugins to make clear when they are executed:

`plugin-add` -> `post-plugin-add`
`plugin-remove` -> `pre-plugin-remove`
2020-03-22 12:57:54 +11:00
Jochen Schalanda
57186be6d9
Support customizing plugin-add and plugin-remove
* Add support for custom `plugin-add` and `plugin-remove` in plugins
* Add configurable command hooks for plugin installation and removal

```shell
pre_asdf_plugin_remove = echo will remove plugin ${1}
pre_asdf_plugin_remove_foo = echo will remove plugin foo
post_asdf_plugin_remove = echo removed plugin ${1}
post_asdf_plugin_remove_foo = echo removed plugin foo
```

Closes #670
2020-03-21 14:59:33 +01:00
Victor Hugo Borja
a26bed6586 Make sure extension commands are properly displayed by asdf help 2020-03-15 11:45:09 -06:00
Jochen Schalanda
609e41e276 Use different exit code if updates are disabled
If asdf-vm was installed with a package manager and the user doesn't
have the necessary permissions to update it with `asdf update`, asdf-vm
emits an informational message and exits with exit code 1.

This makes it hard to programmatically detect whether the update failed
or wasn't even attempted because it's not possible.

With this change, asdf-vm would exit with the exit code 42 if updates are
disabled instead of exit code 1, which signals an error during update.

Refs r-darwish/topgrade#367
2020-03-13 10:14:28 +01:00
Trevor Brown
ac62c7c4d4 Invoke the plugin's download script before invoking the plugin's install script 2020-03-06 19:15:06 -05:00
Trevor Brown
52cbf1165c Add .bash file extensions to files containing code executed by Bash 2020-03-02 12:48:05 -05:00
James Hegedus
c69ed91886
fix: consistent use of plugin_name
All other instances of `check_if_plugin_exists` pass the value as `plugin_name`. Minor fix for consistency.
2020-02-14 17:21:58 +11:00
Trevor Brown
f787b719ac
Merge pull request #640 from asdf-vm/improve-export-shell
Fix asdf shell xx --unset for fish
2020-02-04 08:17:54 -05:00
Trevor Brown
a6b8996f2a Address shellcheck warnings 2020-01-29 08:04:39 -05:00
Daniel Perez
e53de6726f Fix asdf shell xx --unset for fish 2020-01-25 20:42:43 +00:00
Victor Hugo Borja
04b61ae62c Support latest:<version> on plugin-test 2019-11-30 15:13:41 -06:00
Victor Hugo Borja
c986bc9726 Fix plugin update command to check for at least one arg 2019-11-30 15:03:30 -06:00
Victor Hugo Borja
3d3595c7a3 Improvements to asdf plugin commands. 2019-11-30 14:18:37 -06:00
Victor Hugo Borja
1d48d8dbfb Dont use pull on command-update 2019-11-29 10:42:22 -06:00
Victor Hugo Borja
f0bdbe1d89 fix shellcheck on command-help 2019-11-29 10:20:03 -06:00
Victor Hugo Borja
b8dc5f1604 Run shfmt on bash files 2019-11-29 10:15:38 -06:00
Victor Hugo Borja
3f0fe57db9 Let asdf help show plugin commands when available.
Also fix `asdf list all` to work as subcommand. Fixes #602
2019-11-29 07:42:55 -06:00
Victor Hugo Borja
1be6614aa7 Add shellcheck source comments 2019-11-27 12:29:04 -06:00
Victor Hugo Borja
e968fe6142 Subcommand-aware command line interface. 2019-11-27 12:17:17 -06:00
Victor Hugo Borja
4939e24c90 Make asdf plugin test determine plugin version with asdf latest
Fixes #541
2019-11-26 22:23:27 -06:00
Victor Hugo Borja
70099027c2 Move plugin extension command into it's own file.
Add a test for calling default command with arguments.
2019-11-25 12:07:55 -06:00
Kevin Lane
9fd7b83973
Add credit to xxenv-latest in comments 2019-11-22 10:37:53 -08:00
Kevin Lane
d2324e36e7
Fix shellcheck errors 2019-11-22 10:37:53 -08:00
Kevin Lane
301cd3db3f
Add support for installing the latest stable version of a tool 2019-11-22 10:37:53 -08:00
Kevin Lane
36ba38d921
Add asdf latest command to show latest stable version of a tool 2019-11-22 10:37:52 -08:00
Kevin Lane
292d5951bd
Add ability to show available versions that begin with a given string 2019-11-22 10:37:46 -08:00
Trevor Brown
1580310064 Fix sed command so it handles paths correctly
Fixes #559
2019-10-31 10:56:41 -04:00
Trevor Brown
edb5839239 Rename find_version to find_versions since it can return multiple versions 2019-10-22 19:03:05 -04:00
Trevor Brown
cea9b9574f Install multiple versions when multiple versions are present in a .tool-versions file 2019-10-22 18:58:30 -04:00
OZAWA Sakuro
b26f56692d Surround mutually exclusive arguments with curly braces 2019-09-02 11:55:09 +09:00
OZAWA Sakuro
503263a68d Add --unset option to shell command 2019-08-17 22:46:00 +09:00
Kevin Lundberg
fd3faf8084 removing unneeded flag on a copy action 2019-07-31 21:42:43 -04:00
Kevin Lundberg
1862ff6eee Only copy the necessary things to the test area 2019-07-31 21:18:54 -04:00
Kevin Lundberg
c77ee57fe2 Fix for asdf plugin-test when installed with brew, and a minor logic fix to a warning 2019-07-30 23:33:07 -04:00
Spencer Carlson
8865f7a66d add quite flag to git clone 2019-07-05 16:38:33 -07:00
Trevor Brown
3516c08c6b Fix failing test 2019-06-17 20:38:17 -04:00
Leonid Shevtsov
d1f09c3fca Change asdf install to loop through available plugins 2019-05-31 08:32:12 +03:00
Paul Swartz
4e9d04ccaa fix: also fix bug with cleaning up old versions
It had a similiar issue with removing plugins based on the prefix and not the
full version string.
2019-05-17 14:34:44 -04:00
Paul Swartz
e5863f3701 fix: check shims for the full version
The current behavior in shims is to check if there's an existing shim for
which the shim we're currently checking is a prefix. For example, if the shim
has

    # asdf-plugin: erlang 21.2.6

Then adding a shim for `erlang 21.2` will fail.

This updates the `grep` check to match the end of the line as well so we
always get a full version check.

Fixes #517
2019-05-17 14:30:05 -04:00
Daniel Perez
f2674374b0
Merge pull request #502 from asdf-vm/use-exec
Revert to using exec when running a shim
2019-03-31 20:15:46 +01:00
Trevor Brown
28cf1a74b9 Create function for removing comments from .tool-versions files 2019-03-27 08:50:15 -04:00
Trevor Brown
1a4a9435f3 Make install command ignore comments 2019-03-27 08:50:15 -04:00
Daniel Perez
450660018c Revert to using exec when running a shim 2019-03-26 17:36:08 +00:00
Trevor Brown
bc1d9cb2c2
Merge pull request #497 from asdf-vm/rc-releases
Add support for RC releases
2019-03-25 08:19:30 -04:00
Trevor Brown
85057b6969 Add support for RC versions to asdf update command 2019-03-24 18:24:19 -04:00
Trevor Brown
02f24df5e8 Improve output of where command when system version is set 2019-03-23 10:45:50 -04:00
Jonathan Mast
9116e8453d
Add "shell" subcommand for setting versions in shell session
Add a "shell" command similar to the existing "global" and "local"
commands, which sets the version in an environment variable instead of
writing it to a file. This was inspired by the similar functionality in
rbenv.

It works by adding a wrapper function for the asdf command. It forwards
to a "sh-shell" command that returns the exports as shell code which is
then evaled by the wrapper. This is a little gross, but we need to run
the code in the shell context in order to set variables.

Resolves #378
2019-03-09 13:19:33 -05:00
Trevor Brown
ba42343f92
Merge pull request #474 from asdf-vm/update-fix
Use asdf_dir instead of $ASDF_DIR
2019-03-01 15:09:46 -05:00
Trevor Brown
a60b28e716 Use asdf_dir instead of $ASDF_DIR 2019-02-28 22:55:50 -05:00
Victor Hugo Borja
ab59e5618f Move common functionality to utils.sh
- Make shim-exec, shim-env, and which use the same logic to look for commands
- Make sure shim-exec and which use a plugin exec-path hook as documented
  (the hook takes a relative path to the executable and returns also
   a relative path, possibly modified)
- Fix shellchecks
2019-01-20 14:02:22 -06:00
Victor Hugo Borja
9cac0ac50a Faster exec times. Load commands only when nedded.
When testing, use `run asdf` to actually test the command
as the user would invoke it, so that we might catch possible
errors on `bin/asdf`.
2019-01-20 02:13:20 -06:00
Victor Hugo Borja
8927a4a09f Add asdf env command 2019-01-19 20:59:27 -06:00
Victor Hugo Borja
89775c8d88 fix lint on shim-exec 2019-01-19 20:25:41 -06:00
Victor Hugo Borja
e51f778b61 Move bin/private/asdf-tool-exec to be asdf exec command
This way the code for executing shims can also be invoked via
`asdf exec <tool> [args..]` and can be linted.
2019-01-19 20:02:14 -06:00
Victor Hugo Borja
a46eaf3b4a Merge remote-tracking branch 'origin/shim-versions-command' into 0.6.4-dev 2019-01-19 13:56:56 -06:00
Victor Hugo Borja
9420ca1aec Add hooks for plugin uninstall 2019-01-19 13:48:21 -06:00
Victor Hugo Borja
dcc3727cab Add pre-install and pre-reshim hooks 2019-01-19 13:32:07 -06:00
Victor Hugo Borja
9a79ac9526 user configurable pre-post command hooks
Suppose a `foo` plugin is installed and provides a `bar` executable.
The following hooks will be executed when set in `.asdfrc`:

```shell
post_asdf_install_foo = echo installed foo version ${1}
post_asdf_reshim_foo = echo reshimmed foo version ${1}

pre_foo_bar = echo about to execute command bar from foo with args: ${@}
post_foo_bar = echo just executed command bar from foo with args: ${@}
```
2019-01-19 13:32:07 -06:00
Victor Hugo Borja
7fda291df0 Add asdf shim-versions command (#380)
For example `asdf shim-versions npm` will list the plugins and their
versions on which the `npm` command is available.

Based on #432
2019-01-19 13:31:26 -06:00
Victor Hugo Borja
9b27848d07 New shim metadata to allow many plugins with same executable names
Features

* New shim version meta-data allows shims to not depend on a particular plugin
  nor on its relative executable path (#431)
  Upgrading requires shim re-generation and should happen automatically
  by `asdf-exec`:
    `rm -rf ~/.asdf/shims/` followed by `asdf reshim`
* Added lots of tests for shim execution.
  We now make sure that shim execution obeys plugins hooks like
  `list-bin-paths` and `exec-path`.
* Shim exec is now performed by a new `bin/private/asdf-tool-exec` that might
  be faster for most common use case: (versions on local .tool-versions file)
  but fallbacks to slower `get_preset_version_for` which takes legacy formats
  into account.
* Shim exec recommends which plugins or versions to set when command is
  not found.

Fixed Bugs

* Allow many plugins to provide shims with same executable name (#431)
2019-01-19 13:22:12 -06:00
Trevor Brown
8f242e7ec2 Address shellcheck warnings 2019-01-05 11:10:59 -05:00
Trevor Brown
c37307a2cc Create get_custom_executable_path function to hold the custom exec path logic 2019-01-05 10:23:41 -05:00
Raphx
ec6662d4c0
Continue list even when version is not found
Previous implementation exits abruptly when no version is installed for
a plugin. This prevented the list command from listing the versions for
some other plugins.

This commit allows list command to continue executing even when no
version is installed for some plugins.

Example, plugin a with 1.0, b with none, and c with 2.0.

Previous implementation:

```
$ asdf list

a
  1.0
b
No versions installed
```

After commit changes:

```
$ asdf list

a
  1.0
b
No versions installed
c
  2.0
```
2018-12-28 09:21:43 +08:00