Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
oh-my-zsh
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
github
oh-my-zsh
Commits
5c14474e
Unverified
Commit
5c14474e
authored
Dec 13, 2021
by
Marc Cornellà
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
style(chruby): fix plugin code style and loading process
parent
7b12fa97
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
71 additions
and
97 deletions
+71
-97
README.md
plugins/chruby/README.md
+2
-1
chruby.plugin.zsh
plugins/chruby/chruby.plugin.zsh
+69
-96
No files found.
plugins/chruby/README.md
View file @
5c14474e
...
...
@@ -5,6 +5,7 @@ current Ruby version, and completion and a prompt function to display the Ruby v
Supports brew and manual installation of chruby.
To use it, add
`chruby`
to the plugins array in your zshrc file:
```
zsh
plugins
=(
... chruby
)
```
...
...
@@ -14,7 +15,7 @@ plugins=(... chruby)
If you'd prefer to specify an explicit path to load chruby from
you can set variables like so:
```
```
zsh
zstyle :omz:plugins:chruby path /local/path/to/chruby.sh
zstyle :omz:plugins:chruby auto /local/path/to/auto.sh
```
plugins/chruby/chruby.plugin.zsh
View file @
5c14474e
#
# INSTRUCTIONS
#
# With either a manual or brew installed chruby things should just work.
#
# If you'd prefer to specify an explicit path to load chruby from
# you can set variables like so:
#
# zstyle :omz:plugins:chruby path /local/path/to/chruby.sh
# zstyle :omz:plugins:chruby auto /local/path/to/auto.sh
#
# TODO
# - autodetermine correct source path on non OS X systems
# - completion if ruby-install exists
## load chruby from different locations
# rvm and rbenv plugins also provide this alias
alias
rubies
=
'chruby'
_source-from-omz-settings
()
{
local
_chruby_path _chruby_auto
zstyle
-s
:omz:plugins:chruby path _chruby_path
||
return
1
zstyle
-s
:omz:plugins:chruby auto _chruby_auto
||
return
1
if
[[
-r
${
_chruby_path
}
]]
;
then
source
${
_chruby_path
}
fi
_homebrew-installed
()
{
whence brew &> /dev/null
_xit
=
$?
if
[
$_xit
-eq
0
]
;
then
# ok , we have brew installed
# speculatively we check default brew prefix
if
[
-h
/usr/local/opt/chruby
]
;
then
_brew_prefix
=
"/usr/local/opt/chruby"
else
# ok , it is not default prefix
# this call to brew is expensive ( about 400 ms ), so at least let's make it only once
_brew_prefix
=
$(
brew
--prefix
chruby
)
fi
return
0
else
return
$_xit
fi
if
[[
-r
${
_chruby_auto
}
]]
;
then
source
${
_chruby_auto
}
fi
}
_chruby-from-homebrew-installed
()
{
[
-r
$_brew_prefix
]
&> /dev/null
}
_source-from-homebrew
()
{
((
$+
commands[brew]
))
||
return
1
_ruby-build_installed
()
{
whence ruby-build &> /dev/null
}
local
_brew_prefix
# check default brew prefix
if
[[
-h
/usr/local/opt/chruby
]]
;
then
_brew_prefix
=
"/usr/local/opt/chruby"
else
# ok , it is not default prefix
# this call to brew is expensive ( about 400 ms ), so at least let's make it only once
_brew_prefix
=
$(
brew
--prefix
chruby
)
fi
_ruby-install-installed
()
{
whence ruby-install &> /dev/null
}
[[
-r
"
$_brew_prefix
"
]]
||
return
1
# Simple definition completer for ruby-build
if
_ruby-build_installed
;
then
_ruby-build
()
{
compadd
$(
ruby-build
--definitions
)
}
compdef _ruby-build ruby-build
fi
_source_from_omz_settings
()
{
local
_chruby_path
local
_chruby_auto
zstyle
-s
:omz:plugins:chruby path _chruby_path
zstyle
-s
:omz:plugins:chruby auto _chruby_auto
if
[[
-r
${
_chruby_path
}
]]
;
then
source
${
_chruby_path
}
fi
if
[[
-r
${
_chruby_auto
}
]]
;
then
source
${
_chruby_auto
}
fi
source
$_brew_prefix
/share/chruby/chruby.sh
source
$_brew_prefix
/share/chruby/auto.sh
}
_
chruby_
dirs
()
{
chrubydirs
=(
$HOME
/.rubies/
$PREFIX
/opt/rubies
)
for
dir
in
chrubydirs
;
do
if
[[
-d
$dir
]]
;
then
RUBIES+
=
$dir
fi
done
_
load-chruby-
dirs
()
{
local dir
for
dir
in
"
$HOME
/.rubies"
"
$PREFIX
/opt/rubies"
;
do
if
[[
-d
"
$dir
"
]]
;
then
RUBIES+
=(
"
$dir
"
)
fi
done
}
if
_homebrew-installed
&&
_chruby-from-homebrew-installed
;
then
source
$_brew_prefix
/share/chruby/chruby.sh
source
$_brew_prefix
/share/chruby/auto.sh
_chruby_dirs
# Load chruby
if
_source-from-omz-settings
;
then
_load-chruby-dirs
elif
[[
-r
"/usr/local/share/chruby/chruby.sh"
]]
;
then
source
/usr/local/share/chruby/chruby.sh
source
/usr/local/share/chruby/auto.sh
_chruby_dirs
else
_source_from_omz_settings
_chruby_dirs
source
/usr/local/share/chruby/chruby.sh
source
/usr/local/share/chruby/auto.sh
_load-chruby-dirs
elif
_source-from-homebrew
;
then
_load-chruby-dirs
fi
function
ensure_chruby
()
{
$(
whence chruby
)
}
unfunction _source-from-homebrew _source-from-omz-settings _load-chruby-dirs
## chruby utility functions and aliases
# rvm and rbenv plugins also provide this alias
alias
rubies
=
'chruby'
function
current_ruby
()
{
local
_
ruby
_ruby
=
"
$(
chruby |grep
\*
|
tr
-d
'* '
)
"
if
[[
$(
chruby |
grep
-c
\*
)
-eq
1
]]
;
then
echo
${
_
ruby
}
else
echo
"system"
fi
local
ruby
ruby
=
"
$(
chruby |
grep
\*
|
tr
-d
'* '
)
"
if
[[
$(
chruby |
grep
-c
\*
)
-eq
1
]]
;
then
echo
${
ruby
}
else
echo
"system"
fi
}
function
chruby_prompt_info
()
{
echo
"
$(
current_ruby
)
"
echo
"
$(
current_ruby
)
"
}
#
complete on
installed rubies
#
Complete chruby command with
installed rubies
_chruby
()
{
compadd
$(
chruby |
tr
-d
'* '
)
local
default_path
=
'/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin'
if
PATH
=
${
default_path
}
type
ruby &> /dev/null
;
then
compadd system
fi
compadd
$(
chruby |
tr
-d
'* '
)
if
PATH
=
"/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
command
ruby &>/dev/null
;
then
compadd system
fi
}
compdef _chruby chruby
# Simple definition completer for ruby-build
if
command
ruby-build &> /dev/null
;
then
_ruby-build
()
{
compadd
$(
ruby-build
--definitions
)
}
compdef _ruby-build ruby-build
fi
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment