jdx / mise

dev tools, env vars, task runner
https://mise.jdx.dev
MIT License
9.1k stars 247 forks source link

Elixir package manager `mix` does not work with shims. #669

Open kevinschweikert opened 1 year ago

kevinschweikert commented 1 year ago

Describe the bug The Elixir package manager mix does not work with shims. I am getting this error:

$: RTX_DEBUG=1 ~/.local/share/rtx/shims/mix
[DEBUG] rtx::config: Files: ~/.tool-versions
Installed Plugins: elixir, erlang, gleam, go, java, neovim, rust, zig
[DEBUG] rtx::cli: rtx x -- /Users/kevinschweikert/.local/share/rtx/plugins/elixir/shims/mix
[DEBUG] rtx::toolset::builder: elixir@1.15, erlang@26, neovim@0.8.3, node@18.16.0, rust@1.68.0, go@1.20.2, zig@0.10.1, gleam@0.28.3
Error: 
   0: "/Users/kevinschweikert/.local/share/rtx/plugins/elixir/shims/mix" couldn't exec process: Permission denied

Location:
   src/cli/exec.rs:84

Version:
   1.34.0 macos-arm64 (unknown 2023-07-10)
$: ls -lah ~/.local/share/rtx/shims/
...
lrwxr-xr-x@  1 kevinschweikert  staff    21B Jul 10 16:19 jstatd@ -> /opt/homebrew/bin/rtx
lrwxr-xr-x@  1 kevinschweikert  staff    21B Jul 10 16:19 jwebserver@ -> /opt/homebrew/bin/rtx
lrwxr-xr-x@  1 kevinschweikert  staff    21B Jul 10 16:19 keytool@ -> /opt/homebrew/bin/rtx
lrwxr-xr-x@  1 kevinschweikert  staff    21B Jul 10 16:19 memsup@ -> /opt/homebrew/bin/rtx
-rwxr-xr-x@  1 kevinschweikert  staff   221B Jul 10 16:19 mix*
lrwxr-xr-x@  1 kevinschweikert  staff    21B Jul 10 16:19 mix.bat@ -> /opt/homebrew/bin/rtx
lrwxr-xr-x@  1 kevinschweikert  staff    21B Jul 10 16:19 mix.ps1@ -> /opt/homebrew/bin/rtx
lrwxr-xr-x@  1 kevinschweikert  staff    21B Jul 10 16:19 no_dot_erlang.boot@ -> /opt/homebrew/bin/rtx
lrwxr-xr-x@  1 kevinschweikert  staff    21B Jul 10 16:19 node@ -> /opt/homebrew/bin/rtx
...

To Reproduce Install the Elixir Plugin

Expected behavior To be able to execute mix via shims for my IDE (VSCode)

rtx doctor output

rtx version:
  1.34.0 macos-arm64 (unknown 2023-07-10)

build:
  Target: aarch64-apple-darwin
  Features: BREW
  Built: Mon, 10 Jul 2023 09:18:06 +0000
  Rust Version: rustc 1.70.0 (90c541806 2023-05-31) (built from a source tarball)
  Profile: release

shell:
  /opt/homebrew/bin/fish
  fish, version 3.6.1

rtx environment variables:
  RTX_SHELL=fish

settings:
  {"always_keep_download": "false", "always_keep_install": "false", "asdf_compat": "false", "disable_default_shorthands": "false", "disable_tools": "[]", "experimental": "false", "jobs": "4", "legacy_version_file": "true", "legacy_version_file_disable_tools": "[]", "log_level": "INFO", "missing_runtime_behavior": "warn", "plugin_autoupdate_last_check_duration": "10080", "raw": "false", "trusted_config_paths": "[]", "verbose": "false"}

config files:
  /Users/kevinschweikert/.tool-versions

plugins:
  elixir   https://github.com/asdf-vm/asdf-elixir.git#a4c42e1
  erlang   https://github.com/asdf-vm/asdf-erlang.git#127716e
  gleam    https://github.com/vic/asdf-gleam.git#c7c3a7c
  go       https://github.com/rtx-plugins/rtx-golang.git#21d9c32
  java     https://github.com/rtx-plugins/rtx-java.git#2fd0883
  neovim   https://github.com/richin13/asdf-neovim.git#0b7b611
  node     (core)
  python   (core)
  rust     https://github.com/code-lever/asdf-rust.git#95acf4f
  zig      https://github.com/cheetah/asdf-zig.git#d88f6db

toolset:
  elixir@1.15, erlang@26, neovim@0.8.3, node@18.16.0, rust@1.68.0, go@1.20.2, zig@0.10.1, gleam@0.28.3

No problems found
jdx commented 1 year ago

it fails because the file is not executable in the repo. It works for me after running this:

chmod +x ~/.local/share/rtx/plugins/elixir/shims/mix

I would file a ticket on asdf-elixir and see if they'd be willing to commit that change in the repo. Apparently it's not necessary for asdf but it shouldn't hurt anything for them to add it for us. Either that or I can fork the repo.

kevinschweikert commented 1 year ago

Awesome! Wasn't sure if this is an rtx or asdf plugin issue. Thanks for the quick response and solution! I opened an issue in the elxir plugin repo: https://github.com/asdf-vm/asdf-elixir/issues/129

tyoc213 commented 2 weeks ago

seems working now

✗ RTX_DEBUG=1 ~/.local/share/mise/shims/mix
** (Mix) "mix" with no arguments must be executed in a directory with a mix.exs file

Usage: mix [task]

Examples:

    mix             - Invokes the default task (mix run) in a project
    mix new PATH    - Creates a new Elixir project at the given path
    mix help        - Lists all available tasks
    mix help TASK   - Prints documentation for a given task

The --help and --version options can be given instead of a task for usage and versioning information.
ls -lah ~/.local/share/mise/shims/
total 8
drwxr-xr-x  39 devworks  staff   1.2K Aug 27 23:04 .
drwxr-xr-x@  7 devworks  staff   224B Aug 27 23:03 ..
lrwxr-xr-x   1 devworks  staff    22B Aug 24 00:28 2to3 -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 24 12:31 2to3-3.11 -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 24 00:28 2to3-3.12 -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 27 23:03 ct_run -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 27 23:03 dialyzer -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 27 22:59 elixir -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 27 22:59 elixirc -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 27 23:03 epmd -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 27 23:03 erl -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 27 23:03 erl_call -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 27 23:03 erlc -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 27 23:03 escript -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 24 00:28 idle3 -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 24 12:31 idle3.11 -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 24 00:28 idle3.12 -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 27 22:59 iex -> /opt/homebrew/bin/mise
-rwxr-xr-x   1 devworks  staff   204B Aug 27 23:04 mix
lrwxr-xr-x   1 devworks  staff    22B Aug 24 00:28 pip -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 24 00:28 pip3 -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 24 12:31 pip3.11 -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 24 00:28 pip3.12 -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 24 00:28 pydoc3 -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 24 12:31 pydoc3.11 -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 24 00:28 pydoc3.12 -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 24 00:28 python -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 24 00:28 python3 -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 24 00:28 python3-config -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 24 12:31 python3.11 -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 24 12:31 python3.11-config -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 24 00:28 python3.12 -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 24 00:28 python3.12-config -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 27 23:03 run_erl -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 27 23:03 start -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 27 23:03 start_erl -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 27 23:03 to_erl -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 27 23:03 typer -> /opt/homebrew/bin/mise
lrwxr-xr-x   1 devworks  staff    22B Aug 25 15:00 zig -> /opt/homebrew/bin/mise

mix looks a little different, but seem to work