From ba838f7f9b3de1777f3528c0fe211f9bedbd2a8b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
Date: Fri, 11 Jul 2014 08:25:20 -0400
Subject: [PATCH] shell-completion,man: beef up chassis completions and
description
Parameters to hostnamectl command are not optional and should not be marked
as such in the man page.
(cherry picked from commit 1ed774956406941d4812a3fb4493d2915f130f12)
---
man/hostnamectl.xml | 73 +++++++++++++++++++++------------------
shell-completion/bash/hostnamectl | 3 ++
shell-completion/zsh/_hostnamectl | 32 +++++++++++++++--
shell-completion/zsh/_localectl | 4 +--
4 files changed, 75 insertions(+), 37 deletions(-)
diff --git a/man/hostnamectl.xml b/man/hostnamectl.xml
index 001bfced03..13e5bd57f2 100644
--- a/man/hostnamectl.xml
+++ b/man/hostnamectl.xml
@@ -141,13 +141,14 @@
</varlistentry>
<varlistentry>
- <term><command>set-hostname [NAME]</command></term>
+ <term><command>set-hostname <replaceable>NAME</replaceable></command></term>
<listitem><para>Set the system
- hostname. By default, this will alter
- the pretty, the static, and the
- transient hostname alike; however, if
- one or more of
+ hostname to
+ <replaceable>NAME</replaceable>. By
+ default, this will alter the pretty,
+ the static, and the transient hostname
+ alike; however, if one or more of
<option>--static</option>,
<option>--transient</option>,
<option>--pretty</option> are used,
@@ -168,55 +169,61 @@
the hostname string is not done if
only the transient and/or static host
names are set, and the pretty host
- name is left untouched. Pass the empty
- string <literal></literal> as the
- hostname to reset the selected
- hostnames to their default (usually
+ name is left untouched.</para>
+
+ <para>Pass the empty string
+ <literal></literal> as the hostname to
+ reset the selected hostnames to their
+ default (usually
<literal>localhost</literal>).</para></listitem>
</varlistentry>
<varlistentry>
- <term><command>set-icon-name [NAME]</command></term>
+ <term><command>set-icon-name <replaceable>NAME</replaceable></command></term>
<listitem><para>Set the system icon
- name. The icon name is used by some
- graphical applications to visualize
- this host. The icon name should follow
- the <ulink
+ name to
+ <replaceable>NAME</replaceable>. The
+ icon name is used by some graphical
+ applications to visualize this host.
+ The icon name should follow the <ulink
url="http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html">Icon
- Naming Specification</ulink>. Pass an
- empty string to this operation to
- reset the icon name to the default
- value, which is determined from chassis
- type (see below) and possibly other
+ Naming Specification</ulink>.</para>
+
+ <para>Pass an empty string to reset
+ the icon name to the default value,
+ which is determined from chassis type
+ (see below) and possibly other
parameters.</para></listitem>
</varlistentry>
<varlistentry>
- <term><command>set-chassis [TYPE]</command></term>
+ <term><command>set-chassis <replaceable>TYPE</replaceable></command></term>
- <listitem><para>Set the chassis
- type. The chassis type is used by some
+ <listitem><para>Set the chassis type
+ to <replaceable>TYPE</replaceable>.
+ The chassis type is used by some
graphical applications to visualize
- the host or alter user
- interaction. Currently, the following
- chassis types are defined:
+ the host or alter user interaction.
+ Currently, the following chassis types
+ are defined:
<literal>desktop</literal>,
<literal>laptop</literal>,
<literal>server</literal>,
<literal>tablet</literal>,
- <literal>handset</literal>,
- <literal>watch</literal>, as well as
+ <literal>handset</literal>,
+ <literal>watch</literal>, as well as
the special chassis types
<literal>vm</literal> and
<literal>container</literal> for
virtualized systems that lack an
- immediate physical chassis. Pass an
- empty string to this operation to
- reset the chassis type to the default
- value which is determined from the
- firmware and possibly other
- parameters.</para></listitem>
+ immediate physical chassis.</para>
+
+ <para>Pass an empty string to reset
+ the chassis type to the default value
+ which is determined from the firmware
+ and possibly other parameters.</para>
+ </listitem>
</varlistentry>
</variablelist>
diff --git a/shell-completion/bash/hostnamectl b/shell-completion/bash/hostnamectl
index 9c75da9e7f..22f8f06b69 100644
--- a/shell-completion/bash/hostnamectl
+++ b/shell-completion/bash/hostnamectl
@@ -39,6 +39,7 @@ _hostnamectl() {
[STANDALONE]='status'
[ICONS]='set-icon-name'
[NAME]='set-hostname'
+ [CHASSIS]='set-chassis'
)
for ((i=0; i < COMP_CWORD; i++)); do
@@ -50,6 +51,8 @@ _hostnamectl() {
if [[ -z $verb ]]; then
comps=${VERBS[*]}
+ elif __contains_word "$verb" ${VERBS[CHASSIS]}; then
+ comps='desktop laptop server tablet handset watch vm container'
elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[ICONS]} ${VERBS[NAME]}; then
comps=''
fi
diff --git a/shell-completion/zsh/_hostnamectl b/shell-completion/zsh/_hostnamectl
index 7effa0489e..be8687609e 100644
--- a/shell-completion/zsh/_hostnamectl
+++ b/shell-completion/zsh/_hostnamectl
@@ -1,5 +1,30 @@
#compdef hostnamectl
+_hostnamectl_set-hostname() {
+ if (( CURRENT <= 3 )); then
+ _message "new hostname"
+ else
+ _message "no more options"
+ fi
+}
+
+_hostnamectl_set-icon-name() {
+ if (( CURRENT <= 3 )); then
+ _message "new icon name"
+ else
+ _message "no more options"
+ fi
+}
+
+_hostnamectl_set-chassis() {
+ if (( CURRENT <= 3 )); then
+ _chassis=( desktop laptop server tablet handset watch vm container )
+ _describe chassis _chassis
+ else
+ _message "no more options"
+ fi
+}
+
_hostnamectl_command() {
local -a _hostnamectl_cmds
_hostnamectl_cmds=(
@@ -14,8 +39,11 @@ _hostnamectl_command() {
local curcontext="$curcontext"
cmd="${${_hostnamectl_cmds[(r)$words[1]:*]%%:*}}"
if (( $#cmd )); then
- [[ $cmd == status ]] && msg="no options" || msg="options for $cmd"
- _message "$msg"
+ if [[ $cmd == status ]]; then
+ _message "no options"
+ else
+ _hostnamectl_$cmd
+ fi
else
_message "unknown hostnamectl command: $words[1]"
fi
diff --git a/shell-completion/zsh/_localectl b/shell-completion/zsh/_localectl
index 87432da1dc..d8af4d1863 100644
--- a/shell-completion/zsh/_localectl
+++ b/shell-completion/zsh/_localectl
@@ -22,8 +22,8 @@ _localectl_set-locale() {
_localectl_set-keymap() {
local -a _keymaps
- _keymaps=( ${(f)"$(_call_program locales "$service" list-keymaps)"} )
if (( CURRENT <= 3 )); then
+ _keymaps=( ${(f)"$(_call_program locales "$service" list-keymaps)"} )
_describe keymaps _keymaps
else
_message "no more options"
@@ -77,7 +77,7 @@ _localectl_command() {
if (( $+functions[_localectl_$cmd] )); then
_localectl_$cmd
else
- _message "no more options"
+ _message "unknown localectl command: $words[1]"
fi
fi
}