Blame view

repos/robbyrussell/oh-my-zsh/plugins/gnu-utils/gnu-utils.plugin.zsh 2.63 KB
093a6c34b   mj   Squashed 'repos/r...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  # ------------------------------------------------------------------------------
  #          FILE:  gnu-utils.plugin.zsh
  #   DESCRIPTION:  oh-my-zsh plugin file.
  #        AUTHOR:  Sorin Ionescu (sorin.ionescu@gmail.com)
  #       VERSION:  1.0.0
  # ------------------------------------------------------------------------------
  
  
  if [[ -x "${commands[gwhoami]}" ]]; then 
    __gnu_utils() {
      emulate -L zsh
      local gcmds
      local gcmd
      local cmd
      local prefix
  
      # 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')
ed37aae5b   mj   Squashed 'repos/r...
31
32
33
34
      # findutils
      gcmds+=('gfind' 'gxargs' 'glocate')
  
      # Not part of either coreutils or findutils, installed separately.
093a6c34b   mj   Squashed 'repos/r...
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
      gcmds+=('gsed' 'gtar' 'gtime')
  
      for gcmd in "${gcmds[@]}"; do
        #
        # This method allows for builtin commands to be primary but it's
        # lost if hash -r or rehash -f is executed. Thus, those two 
        # functions have to be wrapped.
        #
        (( ${+commands[$gcmd]} )) && hash ${gcmd[2,-1]}=${commands[$gcmd]}
  
        #
        # This method generates wrapper functions.
        # It will override shell builtins.
        #
        # (( ${+commands[$gcmd]} )) && \
        # eval "function $gcmd[2,-1]() { \"${prefix}/${gcmd//"["/"\\["}\" \"\$@\"; }"
  
        #
        # This method is inflexible since the aliases are at risk of being
        # overriden resulting in the BSD coreutils being called.
        #
        # (( ${+commands[$gcmd]} )) && \
        # alias "$gcmd[2,-1]"="${prefix}/${gcmd//"["/"\\["}"
      done
  
      return 0
    }
    __gnu_utils;
  
    function hash() {
      if [[ "$*" =~ "-(r|f)" ]]; then
        builtin hash "$@"
        __gnu_utils
      else
        builtin hash "$@"
      fi
    }
  
    function rehash() {
      if [[ "$*" =~ "-f" ]]; then
        builtin rehash "$@"
        __gnu_utils
      else
        builtin rehash "$@"
      fi
    }
  fi