Commit Graph

331 Commits

Author SHA1 Message Date
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
Jonathan Knapp
85550c8c0c
Remove extra, unnecessary quoting 2017-10-02 09:51:07 -04:00
Hugo Peixoto
15e59686c4 Add support for $ASDF_DEFAULT_TOOL_VERSIONS_FILENAME
Instead of just looking in $HOME/.tool-versions, allow the default
tool-versions file location to be specified through the variable
$ASDF_TOOL_VERSIONS.
2017-09-25 14:26:14 +01:00
Jonathan Knapp
808a8d48b7
Fix many shellcheck issues; ignore a few others 2017-09-04 10:09:47 -04:00
Victor Borja
e74c472829 Test current command with no installed version 2017-09-03 22:20:35 -05:00
vic
779e757b56 Merge pull request #212 from asdf-vm/asdf-plugin-version
Add asdf-plugin-version metadata to shims
2017-09-03 20:26:27 -05:00
Victor Borja
5398d8949c Fix sed invocations for OSX 2017-09-03 20:23:06 -05:00
Victor Borja
f23b448c0c Merge remote-tracking branch 'origin/master' into asdf-plugin-version 2017-09-03 20:01:27 -05:00
vic
28d7921777 Merge pull request #221 from asdf-vm/plugin-list-all
Add plugin-list-all command
2017-09-03 20:00:02 -05:00
Victor Borja
e75cc3a7a2 Add a test for #224
Allow spaces in .tool_versions file path
See #202, #224
2017-09-03 19:53:01 -05:00
Daniel Perez
b9fae70c0d Add plugin-list-all command 2017-08-25 11:29:23 +09:00
Daniel Perez
8af4b3377c List all installed plugins when no argument is passed to current 2017-08-19 13:56:28 +09:00
Victor Hugo Borja
242d132afb Find correct installation path for ref: versions
Noticed we had some duplicated logic for finding the
plugins installation path. This caused the bug described
by #213  where the installation command and the find_executable_path
were using different paths.

Fixes #213
2017-07-29 12:47:21 -05:00
Daniel Perez
5a270d4cb4 Add asdf-plugin-version metadata to shims
This adds `asdf-plugin-version` to all generated shims.
This metadata is used to remove the shim when necessary.
2017-07-27 01:26:38 +02:00
Daniel Perez
78fbbaf584 Merge pull request #183 from doughsay/master
Use a git repository for installing plugins.
2017-07-26 18:49:15 +02:00
Chris Dosé
23f767c624
Add test for bad plugin name case. 2017-07-25 17:03:30 -07:00
Chris Dosé
a4fed4e4cd
Add simple test for plugin-add command. 2017-07-23 09:34:58 -07:00
Fernando
1e9166e9bc Merge branch 'master' into which_command 2017-05-15 15:40:42 -03:00
Trevor Brown
564b9ed517 Fix tests that were failing due to improved error messages. 2017-03-25 15:16:58 -04:00
Trevor Brown
5899d47d75 Fix tests for update command. 2017-03-17 22:24:34 -04:00
Daniel Perez
23f92987c0 Start adding tests for system version 2017-03-17 22:00:38 -04:00
Trevor Brown
2ca517d8c1 Add tests for the update command. Use sed instead of tail -r to get the
latest tag from the list of sorted tags.

The setup code for these tests isn't ideal. It would be nice not to have
to worry about the remote. Without the 'origin' remote set the Travis
build would fail though.
2017-03-17 21:19:46 -04:00
Fernando Crespo
97c0fc44e2 Add tests for which command 2017-03-16 00:57:15 -03:00
Victor Hugo Borja
873dc5eb3e Merge pull request #110 from vic/get_version_from_env
Get version from env if ASDF_${TOOL}_VERSION is defined.
2017-01-19 11:27:25 -06:00
Victor Hugo Borja
8709d197f1 Merge pull request #137 from vic/set-path-version
Allow `asdf local` and `asdf global` to take path: versions
2017-01-19 11:27:06 -06:00
Victor Borja
85a37ca9a5 Add couple of tests 2016-12-23 11:11:47 -06:00
Victor Borja
716d8a93cd Allow asdf local and asdf global to take path: versions
When given a path: version, just check that the directory
actually exists.
2016-12-19 00:25:29 -06:00
Stratus3D
7c28074423 Add a helpful error message to the install command to warn users when they don't specify a version to install. 2016-12-18 12:52:23 -05:00
Trevor Brown
127f926391 Merge pull request #123 from vic/shims-remove
Shims remove on latest version uninstall (depends on #122).
2016-12-16 15:47:24 -07:00
Victor Borja
f4bc8b58ff Merge remote-tracking branch 'origin/master' into get_version_from_env 2016-12-15 06:28:01 -06:00
Victor Borja
a1bc06fb82 Bugfix: ref: and path: versions are not read correctly.
Before this patch, with a `.tool-versions` file like:

```
lfe ref:master
```

`get_preset_version_for` would return `ref` instead of `ref:master`.

Same was happening for `path:` versions. Actually there was PR #95
on which I based my changes but instead of using space as delimiter
I went for using `|` which would be a lot more weird if present as
part of a file path, this also allows to specify paths which have
spaces which are much more frequent.

Closes #94 #95
2016-12-15 06:12:09 -06:00
Victor Borja
a98185b16a Get version from env if ASDF_${TOOL}_VERSION is defined.
For example if asdf finds that the `ASDF_FOO_VERSION` is
defined in the current environment it will override the
version of `foo` from the `.tool-version` file.

Closes #49
2016-12-15 06:10:25 -06:00
Victor Borja
d1f0b64c2f Remove shims on uninstall or plugin-remove
- Remove plugin shims when last version is uninstalled.
- Remove shims on plugin-remove

When the latest version of a tool is uninstalled,
Remove the plugin shims (marked with metadata at #122)

Also found lots of missing tests and added them.

Closes #67
2016-12-15 06:05:23 -06:00
Victor Borja
eecd1f36d1 Test produced shims by actually running them.
Test using a dummy executable.

Closes #127
2016-12-13 13:32:49 -06:00
Victor Borja
1c99863e56 Add documentation on metadata for shim authors 2016-12-10 14:05:23 -06:00
Victor Borja
c7d21bfb2c Test shims executable 2016-12-10 12:22:36 -06:00
Victor Borja
7512d9abf4 Add metadata to shims
When a shim is created, add plugin metadata so we can later know which shims belong to which plugins, this will help aid with removing unused shims on uninstall. See #67

```
# asdf-plugin: ${plugin_name}”
```

Thanks to @duijf for the metadata proposal.
2016-12-10 12:17:50 -06:00
Victor Borja
26532e7914 Determine version from global setting when project is outside home.
Without this patch, asft was not able to determine the tool version
for a project located outside the user's HOME directory.

```
/work/project/
/home/me/.tool-versions
```

This changeset lets asdf find the global version stored at
$HOME/.tool-versions when the directory traversal from
the project dir was not able to find a suitable version.
2016-10-29 06:08:54 -05:00
Stratus3D
20ef5321e1 Update the install_command function so it works when invoked in directory whose name contains whitespace. 2016-10-25 21:45:17 -04:00
Stratus3D
8bc937689c Add test for the install command in a directory name containing whitespace. 2016-10-25 18:11:36 -04:00
Daniel Perez
95bde8e86f Fix local and global commands to accept multiple versions 2016-08-30 19:13:10 -04:00
Stratus3D
181b5a769b Add test for 'asdf local' in a directory with a name containing whitespace. 2016-08-30 19:13:10 -04:00
Kevin Rockwood
d505c0ee71 Return both version and path from find_version
This allows the current command to print the setting file.
2016-08-30 09:21:26 +09:00
Kevin Rockwood
cec4e9a737 Combine search and parse operations
We need to search and parse simultaneously in case the tool-versions 
file doesn't contain a setter line for the plugin.
2016-08-28 13:41:37 +09:00
Kevin Rockwood
4d75ddd50b Update current command with new util functions
current will now print paths to legacy files and .tool-version files
2016-08-14 09:10:24 +09:00
Kevin Rockwood
c6d814e247 Unify .tool-versions and legacy file search 2016-08-14 09:10:24 +09:00
Kevin Rockwood
16f3fa9f03 Use dummy plugin for utils test 2016-08-14 09:10:24 +09:00
Kevin Rockwood
7517aa3abc Remove getter feature on local and global commands
This simplifies the `local` and `global` commands. `asdf current` should
be sufficient for getting the current version.

closes #80
2016-07-25 09:44:53 +09:00
Kevin Rockwood
0ce18100c5 Use dummy plugin in version_commands test
This adds a helper to install dummy versions. Hopefully it makes the
test setup a little easier to reason about.
2016-07-25 09:40:52 +09:00
Kevin Rockwood
ca1273e7d4 Rename which to current (#79)
* Rename `asdf which` -> `asdf current`

* Output `set by $path` with current command

* Use dummy plugin in current_command test

* Hide "set by" message if derived from legacy file
2016-07-25 00:47:17 +09:00
Laurens Duijvesteijn
337b335c4d Check if plugin exists before removing it (#77)
Check if plugin exists before removing it
2016-07-06 08:19:15 +09:00
Daniel Perez
3af5d21067 Set ASDF_CONCURRENCY when installing 2016-07-01 16:42:59 +09:00
Daniel Perez
61e014a2d6 Fix local command bug. 2016-05-14 11:11:16 +09:00
Daniel Perez
b0513a6da0 Fix local command to support legacy files. 2016-05-03 00:27:52 +09:00
Daniel Perez
784d7e9f34 Add support for local and global commands. 2016-04-25 02:13:09 +09:00
Daniel Perez
d4ee3aa999 Add support for config file. 2016-04-24 22:39:24 +09:00