Commit Graph

205 Commits

Author SHA1 Message Date
Trevor Brown
72e876b0ae Handle dashes in executable names properly 2019-10-24 12:05:44 -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
bc309c0fe5 Remove quotes from --unset option 2019-09-02 11:55:42 +09:00
OZAWA Sakuro
503263a68d Add --unset option to shell command 2019-08-17 22:46:00 +09:00
Trevor Brown
549d86e733 Add tests for duplicate colon path issue 2019-08-14 19:31:23 -04:00
Trevor Brown
3516c08c6b Fix failing test 2019-06-17 20:38:17 -04:00
Leonid Shevtsov
d506aa183a tests for install command:
- remove test for install command edge case from parsing tool-versions (no longer relevant)
- add test for install command honoring legacy version files
- clean up test names to differentiate between installing a single version vs all dependencies
2019-06-01 07:48:17 +03:00
Daniel Perez
100776de93
Merge pull request #524 from paulswartz/517-prefix-versions
fix: check shims for the full version
2019-05-18 01:25:46 +01: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
7876fcdd90 Fix fish test 2019-04-07 22:33:26 +01:00
Trevor Brown
ff553324a7 Add tests for code in asdf.fish 2019-04-07 15:01:19 -04:00
Trevor Brown
62015a750d Add test for not adding duplicate paths to PATH 2019-04-06 13:23:30 -04:00
Trevor Brown
13b3d14cac Add tests for code in asdf.sh 2019-04-06 12:43:39 -04:00
Daniel Perez
b8ee616318 Fix current when .tool-versions contains comments 2019-03-31 20:39:36 +01: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
Daniel Perez
81709db18a Fix shim_plugin_version 2019-03-23 21:21:55 +00:00
Trevor Brown
02f24df5e8 Improve output of where command when system version is set 2019-03-23 10:45:50 -04:00
Daniel Perez
1d43a052fe
Merge pull request #480 from jonmast/add-shell-command
Add "shell" subcommand for setting versions in shell session
2019-03-20 19:02:59 +00:00
Daniel Perez
0f0bbef50d Fix select version when multiple versions available
With the previous version, the following case would fail.
It would use python 2.7.15 when running pip
instead of version 3.7.2.

Shim for `pip`

```bash
exec /home/daniel/.asdf/bin/asdf exec "pip" "$@"
```

`.tool-versions`:

```
python 3.7.2 2.7.15 system
```
2019-03-20 17:20:01 +00:00
Daniel Perez
c06799cfca Fix legacy version and multi versions handling 2019-03-16 19:45:37 +00: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
Victor Hugo Borja
4b40e80776 Test that command being executed can see other tools shims on path 2019-01-23 22:18:18 -06:00
Victor Hugo Borja
0260c442cc Test to ensure asdf exec and asdf env use plugin custom exec-env 2019-01-21 01:33:52 -06: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
6da747b6ce Test that asdf exec works even if asdf shims are not in PATH. 2019-01-19 20:09:53 -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
8bcf8caba4 Write test for the exec-path functionality in the which command 2019-01-05 10:54:02 -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
Trevor Brown
54fc0f43dd Add tests for versions set by environment variables
Fixes #327
2018-12-22 15:11:28 -05:00
Trevor Brown
7ca88746a8
Merge pull request #411 from rliebz/update
Fix issues with update command
2018-12-02 14:12:23 -05:00
Robert Liebowitz
321e3b0e46 Exit 1 for failed update 2018-12-01 21:17:27 -05:00
Robert Liebowitz
697772fe8c Fix git dir for update and add error handling 2018-12-01 21:07:44 -05:00
Robert Liebowitz
76c3d426c1 Fix update test setup
Rather than using the project's current `.git` directory, create a new
one. This avoids issues with submodules and potentially other problems.
2018-12-01 21:05:58 -05:00
Daniel Perez
2eae89c432 Fix which for when "system" version is present 2018-11-29 00:31:31 +00:00
Daniel Perez
11882c1151
Merge pull request #382 from fcrespo82/better-which-command
Updated which command.
2018-11-29 00:18:51 +00:00
Trevor Brown
22b709f94e
Merge pull request #403 from burnettk/support-tool-versions-without-newline
support .tool-versions content even if it does not end in a newline
2018-11-20 09:18:41 -05:00
Kevin Burnett
f1b2c59b1d support .tool-versions if it does not end in newline 2018-11-15 21:47:48 -05:00
Fernando Crespo
03394831a8 Merge remote-tracking branch 'upstream/master' into better-which-command 2018-11-12 15:35:19 -02:00
Daniel Perez
18587d4d6f Fix current behavior when multiple versions of a plugin are set 2018-11-10 11:32:02 +00:00
Trevor Brown
359191104b
Merge pull request #389 from mig4/where-default-version-to-current
Make where command default to current version
2018-11-03 10:07:44 -04:00
mig4
a58e9e3c17
Make where command default to current version
Allow not specifying the version on command line in which case fall back
to looking it up.

Also add tests for the `where` command.
2018-10-28 17:47:21 +00:00
mig4
f994b07a2c
Optimise listing all plugins
When checking if a plugin is installed (to display a flag) it is not
necessary to loop through all installed plugins, since we already have
a name we can check directly.

Also expand test case to test this code path too.
2018-10-27 20:05:02 +01:00
Fernando Crespo
46e5f7427f Updated which command.
Should fix #205
2018-10-21 00:47:13 -03:00
Trevor Brown
60e67c4f5b Add primitive tests for plugin_test_command. 2018-10-19 22:44:26 -04:00
Trevor Brown
fc078c5e72 Implement 'asdf local -p'. 2018-10-19 20:41:49 -04:00
Trevor Brown
e8905b42bc Add tests for 'asdf local -p' command. 2018-10-19 20:41:49 -04:00
Trevor Brown
f708e3c15f
Merge pull request #371 from phunehehe/version-set-by
commands/current: add space before parenthesis
2018-10-10 18:21:46 -04:00
Hoang Xuan Phu
1330083229 commands/current: add space before parenthesis
It seems to have been lost in 88d47bbd69.
Probably by accident?

I also pulled the literal bits into the format string. It looks more
readable to me that way. I'm happy to remove that if it's not desired.
2018-10-10 17:28:23 -04:00
Trevor Brown
2bc679084f Add test for the resolve_symlink function. 2018-10-07 21:47:57 -04:00
Trevor Brown
39687b5a94 Add test for not installing system versions. 2018-10-07 14:31:30 -04:00
Trevor Brown
af5393d563 Move current_command test into current_command.bats. 2018-10-07 14:22:31 -04:00
Jose Luis Salas
448d3215d8
Fix asdf current behaviour
Closes: #353
2018-10-04 21:00:29 +02:00
Trevor Brown
266e3cffa5
Merge pull request #360 from teixeiradiego/reshim-fix
Fix reshim to generate shims only for executable files and not directories.
2018-09-19 08:16:33 -04:00
Diego Nogueira Teixeira
20bb61963d Implemented tests for shim generation only for executable files, not directories. 2018-09-19 09:00:11 -03:00
Matt Wean
c468ae7d6a Add another test for the ASDF_DATA_DIR functionality. 2018-09-18 20:21:46 -04:00
Jose Luis Salas
d1782f456e
Retrieve asdf_data_dir from environment variable 2018-09-16 18:39:21 +02:00
Jose Luis Salas
c86707c55f
Add config option to install plugins in $HOME/.asdf 2018-08-11 15:37:56 +02:00
Trevor Brown
c7fb348ffd Add tests for symlink preservation. 2018-06-16 22:48:16 -04:00
Trevor Brown
4a4f453a93 Add readlink to list of banned commands. 2018-06-16 20:19:33 -04:00
Trevor Brown
c1ce9de4d4
Merge pull request #331 from brennanfee/fix-330-asdf-list
Fix for #330 - "asdf list" spacing
2018-06-16 15:30:35 -04:00
Trevor Brown
1b44fa7549 Fix shellcheck warnings. 2018-06-16 15:26:02 -04:00
Brennan Fee
ba1b181b58 Fixing unit tests for 'asdf list'
Now that we put spacing in front of the version #'s the tests need to
reflect that.
2018-06-01 10:15:40 -05:00
Melissa Xie
f79dda865a Include plugin name in error message if plugin doesn't exist
Previously, if we ran a command like `asdf install` and we encountered a
plugin that didn't exist, asdf produces an error saying "No such
plugin". Without knowing which plugin it could be referring too, we'd
have to manually go through each plugin in `.tool-versions` to find the
culprit.

With this commit, we'll now also include the plugin name as part of the
messaging for easier debugging.
2018-04-30 12:49:40 -04:00
hlhr
e1a4ff244f list command without parameter lists all packages with versions 2018-04-16 18:37:22 -04:00
Edoardo Tenani
e710959d1b adapt test to new error code 2018-04-09 20:35:51 +02:00
james.bunch
d62fa098c1 AZDF -> ASDF environment variable name spelling
change all instances of `AZDF` to read `ASDF` instead, to bring the
variable names in line with the project name
2018-02-27 11:56:04 -08:00
Trevor Brown
123c1404c1
Merge pull request #298 from aj-foster/fix-plugin-list-all-test
Fix `plugin-list-all` test
2018-02-26 09:17:37 -05:00
AJ Foster
210598239b Fix plugin-list-all test file name and update it for current output 2018-02-25 19:16:35 -05:00
AJ Foster
a195da28c2 Promote which version check from subshell to enable error emission 2018-02-25 18:34:39 -05:00
AJ Foster
eb5e5b780c Refactor "no version set" message to utilities 2018-02-25 18:33:42 -05:00
AJ Foster
c2fb6a3140 Escape backticks in command suggestion 2018-02-25 00:50:46 -05:00
AJ Foster
f15a0c9de3 Suggest action when no version is set 2018-02-25 00:40:26 -05:00
Trevor Brown
4efa8a9707 Fix failing test for ASDF_DEFAULT_TOOL_VERSIONS_FILENAME environment variable. 2018-02-12 18:41:27 -05:00
Trevor Brown
ed3a029e86
Merge branch 'master' into env-config-file-location 2018-02-11 17:31:17 -05:00
Trevor Brown
8abcceb8c0 Add test for tool name matching. 2018-02-11 17:28:29 -05:00
jthegedus
f99bdc75c0 add --urls flag for asdf list-plugins
Fixed tests due to use of printf
2018-01-14 19:38:00 +11:00
jthegedus
4d2870dcd5 update test accounting for URL output 2018-01-14 15:50:49 +11:00
Trevor Brown
8794210b8e Add 'eval' to list of banned commands. 2017-11-16 22:43:52 -05:00
Trevor Brown
e91e453580
Merge pull request #251 from asdf-vm/banned-commands
Add test that greps source code for banned commands.
2017-10-28 11:02:03 -04:00
Trevor Brown
7601afd9b9 Add test that greps source code for banned commands. 2017-10-28 10:54:10 -04:00
William Ashton
dc3865c9fd Prevent sed from creating -e backup files. Fixes #242 2017-10-26 15:58:45 -04:00
Victor Borja
db54c6bad1 test reshim with install from tool-versions 2017-10-25 14:19:03 -05:00
Victor Borja
97312e2f26 Test reshim a second time 2017-10-25 14:14:19 -05:00
Victor Borja
7a15a88493 Test shims are not duplicated 2017-10-25 14:05:59 -05:00
DustinChaloupka
05a7446619
Add installing from a parent directory's .tool-versions 2017-10-10 12:02:42 -05:00