diff --git a/modules/rbenv/README.md b/modules/rbenv/README.md index 4088fd41f..8cf04557f 100644 --- a/modules/rbenv/README.md +++ b/modules/rbenv/README.md @@ -4,7 +4,7 @@ This script provides minimal working rbenv setup. It can be used by importing its exported commands via: ``` -use path/to/rbenv.nu * +use path/to/rbenv.nu ``` With `path/to` being either the relative path of the file to your current working directory or its absolute path. diff --git a/modules/rbenv/rbenv.nu b/modules/rbenv/rbenv.nu index 0e2c79aa0..2d0728f51 100644 --- a/modules/rbenv/rbenv.nu +++ b/modules/rbenv/rbenv.nu @@ -1,38 +1,19 @@ # rbenv -export-env { - load-env { - PATH: ($env.PATH | split row (char esep) | prepend [$"($env.HOME)/.rbenv/bin" $"($env.HOME)/.rbenv/shims"]) - RBENV_VERSION: "" - RBENV_VERSION_OLD: "" - RBENV_SHELL: "nu" - } +export-env { + use std/util "path add" + + $env.RBENV_SHELL = 'nu' + $env.RBENV_VERSION = '' + path add $"($env.HOME)/.rbenv/bin" + path add $"($env.HOME)/.rbenv/shims" } -export def --env main [ - command?: string@'nu-complete rbenv', - ...args -] { - let new_env = if $command in ["rehash", "shell"] { - # implement each on indiviudaly e.g. - if $command == "shell" { - { RBENV_VERSION_OLD: $env.RBENV_VERSION RBENV_VERSION: $args.0 } - } else { - error make { msg: $"`($command)` command is not supported yet" } - } +export def --env "shell" [version: string] { + let run = (^rbenv sh-shell $version | complete) + if ($run.exit_code == 0) { + $env.RBENV_VERSION_OLD = ($env.RBENV_VERSION | default "") + $env.RBENV_VERSION = $version } else { - if ($command | is-empty) { - ^rbenv - } else { - ^rbenv $command $args - } - {} + print -e $run.stderr } - load-env $new_env -} - -def 'nu-complete rbenv' [] { - ^rbenv help - | lines - | where ($it | str starts-with " ") - | each {|entry| $entry | split row ' ' | get 0 } }