about summary refs log tree commit diff
path: root/Completion/Unix/Command/_uname
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Unix/Command/_uname')
-rw-r--r--Completion/Unix/Command/_uname116
1 files changed, 72 insertions, 44 deletions
diff --git a/Completion/Unix/Command/_uname b/Completion/Unix/Command/_uname
index 9b4663b8a..414a82a87 100644
--- a/Completion/Unix/Command/_uname
+++ b/Completion/Unix/Command/_uname
@@ -1,53 +1,81 @@
 #compdef uname
 
 typeset -A _uname_args
+local -a args
+
+case $LANG in
+  de_*)
+    _uname_args=(
+      all               "alle Grundinformationen ausgeben"
+      kernel-name       "Namen des Kernels ausgeben"
+      nodename          "Netzwerknamen der Maschine ausgeben"
+      kernel-release    "Release-Nummer des Kernels ausgeben"
+      kernel-version    "Version des Kernels ausgeben"
+      os-release        "Release-Nummer des Betriebssystems ausgeben"
+      machine           "Maschinentyp (Hardware) ausgeben"
+      processor         "Typ des Prozessors ausgeben"
+      hardware-platform "Hardwareplattform ausgeben"
+      operating-system  "Namen des Betriebssystems ausgeben"
+      help              "Hilfe anzeigen und beenden"
+      version           "Versionsinformation anzeigen und beenden"
+    )
+  ;;
+  (*)
+    _uname_args=(
+      all               "print all basic information"
+      kernel-name       "print kernel name"
+      nodename          "print network node hostname"
+      kernel-release    "print kernel release"
+      kernel-version    "print kernel version"
+      os-release        "print operating system release level"
+      machine           "print machine hardware name"
+      processor         "print processor type"
+      hardware-platform "print hardware platform"
+      operating-system  "print name of the operating system"
+      help              "display help information"
+      version           "output version information and exit"
+    )
+  ;;
+esac
 
 if _pick_variant gnu="Free Soft" unix --version; then
-  case $LANG in
-    (de_DE.UTF-8)
-       _uname_args=(
-             all               "alle Informationen ausgeben"
-             kernel-name       "Namen des Kernels ausgeben"
-             nodename          "Netzwerknamen der Maschine ausgeben"
-             kernel-release    "Release-Nummer des Kernels ausgeben"
-             kernel-version    "Version des Kernels ausgeben"
-             machine           "Maschinentyp (Hardware) ausgeben"
-             processor         "Typ des Prozessors ausgeben (oder das Wort unknown)"
-             hardware-platform "Hardwareplattform ausgeben (oder das Wort unknown)"
-             operating-system  "Namen des Betriebssystems ausgeben"
-             help              "diese Hilfe anzeigen und beenden"
-             version           "Versionsinformation anzeigen und beenden"
-       )
+  _arguments -s \
+    '(-)'{--all,-a}'['$_uname_args[all]']' \
+    '(--kernel-name -s)'{--kernel-name,-s}'['$_uname_args[kernel-name]']' \
+    '(--nodename -n)'{--nodename,-n}'['$_uname_args[nodename]']' \
+    '(--kernel-release -r)'{--kernel-release,-r}'['$_uname_args[kernel-release]']' \
+    '(--kernel-version -v)'{--kernel-version,-v}'['$_uname_args[kernel-version]']' \
+    '(--machine -m)'{--machine,-m}'['$_uname_args[machine]']' \
+    '(--processor -p)'{--processor,-p}'['$_uname_args[processor]']' \
+    '(--hardware-platform -i)'{--hardware-platform,-i}'['$_uname_args[hardware-platform]']' \
+    '(--operating-system -o)'{--operating-system,-o}'['$_uname_args[operating-system]']' \
+    '(-)--help['$_uname_args[help]']' \
+    '(-)--version['$_uname_args[version]']'
+else
+  args=(
+    "(-m -n -r -s -v)-a[${_uname_args[all]}]"
+    '-m[print hardware class]'
+    "-n[${_uname_args[nodename]}]"
+    "-p[${_uname_args[processor]}]"
+    "-r[${_uname_args[os-release]}]"
+    "-s[${_uname_args[operating-system]}]"
+    '-v[print detailed operating system version]'
+  )
+  case $OSTYPE in
+    freebsd*|dragonfly*) args+=( '-i[print kernel ident]' ) ;|
+    freebsd<10->.*)
+      args+=(
+	'-K[print FreeBSD kernel version]'
+	'-U[print FreeBSD user environment version]'
+      )
     ;;
-    (*)
-       _uname_args=(
-             all               "print all information"
-             kernel-name       "print the kernel name"
-             nodename          "print the network node hostname"
-             kernel-release    "print the kernel release"
-             kernel-version    "print the kernel version"
-             machine           "print the machine hardware name"
-             processor         "print the processor type or \"unknown\""
-             hardware-platform "print the hardware platform or \"unknown\""
-             operating-system  "print the operating system"
-             help              "display this help and exit"
-             version           "output version information and exit"
-       )
+    solaris*)
+      args+=(
+        '-i[print platform name]'
+	'-S[set system name]:system name'
+        '-X[print expanded system information]'
+      )
     ;;
   esac
-
-  _arguments \
-        '(--all -a)'{--all,-a}'['$_uname_args[all]']' \
-        '(--kernel-name -s)'{--kernel-name,-s}'['$_uname_args[kernel-name]']' \
-        '(--nodename -n)'{--nodename,-n}'['$_uname_args[nodename]']' \
-        '(--kernel-release -r)'{--kernel-release,-r}'['$_uname_args[kernel-release]']' \
-        '(--kernel-version -v)'{--kernel-version,-v}'['$_uname_args[kernel-version]']' \
-        '(--machine -m)'{--machine,-m}'['$_uname_args[machine]']' \
-        '(--processor -p)'{--processor,-p}'['$_uname_args[processor]']' \
-        '(--hardware-platform -i)'{--hardware-platform,-i}'['$_uname_args[hardware-platform]']' \
-        '(--operating-system -o)'{--operating-system,-o}'['$_uname_args[operating-system]']' \
-        '--help['$_uname_args[help]']' \
-        '--version['$_uname_args[version]']'
-else
-#       TODO add options of a NON GNU implementation
+  _arguments -s $args
 fi