1#compdef uname guname
2
3typeset -A _uname_args
4local -a args
5
6case $LANG in
7  de_*)
8    _uname_args=(
9      all               "alle Grundinformationen ausgeben"
10      kernel-name       "Namen des Kernels ausgeben"
11      nodename          "Netzwerknamen der Maschine ausgeben"
12      kernel-release    "Release-Nummer des Kernels ausgeben"
13      kernel-version    "Version des Kernels ausgeben"
14      os-release        "Release-Nummer des Betriebssystems ausgeben"
15      machine           "Maschinentyp (Hardware) ausgeben"
16      processor         "Typ des Prozessors ausgeben"
17      hardware-platform "Hardwareplattform ausgeben"
18      operating-system  "Namen des Betriebssystems ausgeben"
19      help              "Hilfe anzeigen und beenden"
20      version           "Versionsinformation anzeigen und beenden"
21    )
22  ;;
23  (*)
24    _uname_args=(
25      all               "print all basic information"
26      kernel-name       "print kernel name"
27      nodename          "print network node hostname"
28      kernel-release    "print kernel release"
29      kernel-version    "print kernel version"
30      os-release        "print operating system release level"
31      machine           "print machine hardware name"
32      processor         "print processor type"
33      hardware-platform "print hardware platform"
34      operating-system  "print name of the operating system"
35      help              "display help information"
36      version           "output version information and exit"
37    )
38  ;;
39esac
40
41if _pick_variant gnu="Free Soft" unix --version; then
42  _arguments -s \
43    '(-)'{--all,-a}'['$_uname_args[all]']' \
44    '(--kernel-name -s)'{--kernel-name,-s}'['$_uname_args[kernel-name]']' \
45    '(--nodename -n)'{--nodename,-n}'['$_uname_args[nodename]']' \
46    '(--kernel-release -r)'{--kernel-release,-r}'['$_uname_args[kernel-release]']' \
47    '(--kernel-version -v)'{--kernel-version,-v}'['$_uname_args[kernel-version]']' \
48    '(--machine -m)'{--machine,-m}'['$_uname_args[machine]']' \
49    '(--processor -p)'{--processor,-p}'['$_uname_args[processor]']' \
50    '(--hardware-platform -i)'{--hardware-platform,-i}'['$_uname_args[hardware-platform]']' \
51    '(--operating-system -o)'{--operating-system,-o}'['$_uname_args[operating-system]']' \
52    '(-)--help['$_uname_args[help]']' \
53    '(-)--version['$_uname_args[version]']'
54else
55  args=(
56    "(-m -n -r -s -v)-a[${_uname_args[all]}]"
57    '-m[print hardware class]'
58    "-n[${_uname_args[nodename]}]"
59    "-p[${_uname_args[processor]}]"
60    "-r[${_uname_args[os-release]}]"
61    "-s[${_uname_args[operating-system]}]"
62    '-v[print detailed operating system version]'
63  )
64  case $OSTYPE in
65    freebsd*|dragonfly*) args+=( '-i[print kernel ident]' ) ;|
66    freebsd<10->.*)
67      args+=(
68	'-K[print FreeBSD kernel version]'
69	'-U[print FreeBSD user environment version]'
70      )
71    ;;
72    solaris*)
73      args+=(
74        '-i[print platform name]'
75	'-S[set system name]:system name'
76        '-X[print expanded system information]'
77      )
78    ;;
79  esac
80  _arguments -s $args
81fi
82