Browse Source

Return 1 when GNU Core Utilities are not found

master
Sorin Ionescu 12 years ago
parent
commit
9155aea2db
  1. 115
      plugins/gnu-utils/init.zsh

115
plugins/gnu-utils/init.zsh

@ -5,70 +5,73 @@
# Sorin Ionescu <sorin.ionescu@gmail.com> # Sorin Ionescu <sorin.ionescu@gmail.com>
# #
if (( $+commands[gdircolors] )); then # Check for the presence of GNU Core Utilities.
function __gnu_utils { if (( ! $+commands[gdircolors] )); then
emulate -L zsh return 1
local gcmds fi
local gcmd
local cmd
local prefix
# GNU Coreutils.
gcmds=('g[' 'gbase64' 'gbasename' 'gcat' 'gchcon' 'gchgrp' 'gchmod'
'gchown' 'gchroot' 'gcksum' 'gcomm' 'gcp' 'gcsplit' 'gcut' 'gdate'
'gdd' 'gdf' 'gdir' 'gdircolors' 'gdirname' 'gdu' 'gecho' 'genv' 'gexpand'
'gexpr' 'gfactor' 'gfalse' 'gfmt' 'gfold' 'ggroups' 'ghead' 'ghostid'
'gid' 'ginstall' 'gjoin' 'gkill' 'glink' 'gln' 'glogname' 'gls' 'gmd5sum'
'gmkdir' 'gmkfifo' 'gmknod' 'gmktemp' 'gmv' 'gnice' 'gnl' 'gnohup' 'gnproc'
'god' 'gpaste' 'gpathchk' 'gpinky' 'gpr' 'gprintenv' 'gprintf' 'gptx' 'gpwd'
'greadlink' 'grm' 'grmdir' 'gruncon' 'gseq' 'gsha1sum' 'gsha224sum'
'gsha256sum' 'gsha384sum' 'gsha512sum' 'gshred' 'gshuf' 'gsleep' 'gsort'
'gsplit' 'gstat' 'gstty' 'gsum' 'gsync' 'gtac' 'gtail' 'gtee' 'gtest'
'gtimeout' 'gtouch' 'gtr' 'gtrue' 'gtruncate' 'gtsort' 'gtty' 'guname'
'gunexpand' 'guniq' 'gunlink' 'guptime' 'gusers' 'gvdir' 'gwc' 'gwho'
'gwhoami' 'gyes')
# Not part of coreutils, installed separately. function __gnu_utils {
gcmds+=('ggrep' 'gsed' 'gtar' 'gtime') emulate -L zsh
local gcmds
local gcmd
local cmd
local prefix
for gcmd in "$gcmds[@]"; do # GNU Coreutils.
# gcmds=('g[' 'gbase64' 'gbasename' 'gcat' 'gchcon' 'gchgrp' 'gchmod'
# This method allows for builtin commands to be primary but it's 'gchown' 'gchroot' 'gcksum' 'gcomm' 'gcp' 'gcsplit' 'gcut' 'gdate'
# lost if hash -r or rehash -f is executed. Thus, those two 'gdd' 'gdf' 'gdir' 'gdircolors' 'gdirname' 'gdu' 'gecho' 'genv' 'gexpand'
# functions have to be wrapped. 'gexpr' 'gfactor' 'gfalse' 'gfmt' 'gfold' 'ggroups' 'ghead' 'ghostid'
# 'gid' 'ginstall' 'gjoin' 'gkill' 'glink' 'gln' 'glogname' 'gls' 'gmd5sum'
if (( $+commands[$gcmd] )); then 'gmkdir' 'gmkfifo' 'gmknod' 'gmktemp' 'gmv' 'gnice' 'gnl' 'gnohup' 'gnproc'
hash "$gcmd[2,-1]"="$commands[$gcmd]" 'god' 'gpaste' 'gpathchk' 'gpinky' 'gpr' 'gprintenv' 'gprintf' 'gptx' 'gpwd'
fi 'greadlink' 'grm' 'grmdir' 'gruncon' 'gseq' 'gsha1sum' 'gsha224sum'
done 'gsha256sum' 'gsha384sum' 'gsha512sum' 'gshred' 'gshuf' 'gsleep' 'gsort'
'gsplit' 'gstat' 'gstty' 'gsum' 'gsync' 'gtac' 'gtail' 'gtee' 'gtest'
'gtimeout' 'gtouch' 'gtr' 'gtrue' 'gtruncate' 'gtsort' 'gtty' 'guname'
'gunexpand' 'guniq' 'gunlink' 'guptime' 'gusers' 'gvdir' 'gwc' 'gwho'
'gwhoami' 'gyes')
return 0 # Not part of coreutils, installed separately.
} gcmds+=('ggrep' 'gsed' 'gtar' 'gtime')
__gnu_utils;
function hash { for gcmd in "$gcmds[@]"; do
if (( $+argv[(er)-r] )) || (( $+argv[(er)-f] )); then #
builtin hash "$@" # This method allows for builtin commands to be primary but it's
__gnu_utils # lost if hash -r or rehash -f is executed. Thus, those two
else # functions have to be wrapped.
builtin hash "$@" #
if (( $+commands[$gcmd] )); then
hash "$gcmd[2,-1]"="$commands[$gcmd]"
fi fi
} done
function rehash { return 0
hash -r "$@" }
} __gnu_utils;
# A sensible default for ls. function hash {
alias ls='ls --group-directories-first' if (( $+argv[(er)-r] )) || (( $+argv[(er)-f] )); then
builtin hash "$@"
if zstyle -t ':omz:alias:ls' color; then __gnu_utils
if [[ -f "$HOME/.dir_colors" ]]; then
eval $(gdircolors "$HOME/.dir_colors")
fi
alias ls="$aliases[ls] --color=auto"
else else
alias ls="$aliases[ls] -F" builtin hash "$@"
fi
}
function rehash {
hash -r "$@"
}
# A sensible default for ls.
alias ls='ls --group-directories-first'
if zstyle -t ':omz:alias:ls' color; then
if [[ -f "$HOME/.dir_colors" ]]; then
eval $(gdircolors "$HOME/.dir_colors")
fi fi
alias ls="$aliases[ls] --color=auto"
else
alias ls="$aliases[ls] -F"
fi fi

Loading…
Cancel
Save