mirror of
https://github.com/octoleo/hosts.git
synced 2024-11-23 21:27:40 +00:00
Move completion installation into the main script.
This commit is contained in:
parent
17b2615820
commit
23d6a1c653
4
Makefile
4
Makefile
@ -3,8 +3,8 @@ PREFIX ?= /usr/local
|
|||||||
|
|
||||||
install:
|
install:
|
||||||
install $(BIN) $(PREFIX)/bin
|
install $(BIN) $(PREFIX)/bin
|
||||||
./scripts/hosts-completion install
|
./$(BIN) completions install
|
||||||
|
|
||||||
uninstall:
|
uninstall:
|
||||||
rm -f $(PREFIX)/bin/$(BIN)
|
rm -f $(PREFIX)/bin/$(BIN)
|
||||||
./scripts/hosts-completion uninstall
|
./$(BIN) completions uninstall
|
||||||
|
36
README.md
36
README.md
@ -55,13 +55,45 @@ make install
|
|||||||
|
|
||||||
### Manual
|
### Manual
|
||||||
|
|
||||||
To install manually, simply add the `hosts` script to your `$PATH`. If
|
To install as an administrator, copy and paste one of the following multi-line
|
||||||
you already have a `~/bin` directory, you can use the following command:
|
commands:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# install using wget
|
||||||
|
sudo wget https://raw.github.com/xwmx/hosts/master/hosts -O /usr/local/bin/hosts &&
|
||||||
|
sudo chmod +x /usr/local/bin/hosts &&
|
||||||
|
sudo hosts completions install
|
||||||
|
|
||||||
|
# install using curl
|
||||||
|
sudo curl -L https://raw.github.com/xwmx/hosts/master/hosts -o /usr/local/bin/hosts &&
|
||||||
|
sudo chmod +x /usr/local/bin/hosts &&
|
||||||
|
sudo hosts completions install
|
||||||
|
```
|
||||||
|
|
||||||
|
###### User-only Installation
|
||||||
|
|
||||||
|
To install with just user permissions, simply add the `hosts` script to your
|
||||||
|
`$PATH`. If you already have a `~/bin` directory, for example, you can use
|
||||||
|
one of the following commands:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# download with wget
|
||||||
|
wget https://raw.github.com/xwmx/hosts/master/hosts -O ~/bin/hosts && chmod +x ~/bin/hosts
|
||||||
|
|
||||||
|
# download with curl
|
||||||
curl -L https://raw.github.com/xwmx/hosts/master/hosts -o ~/bin/hosts && chmod +x ~/bin/hosts
|
curl -L https://raw.github.com/xwmx/hosts/master/hosts -o ~/bin/hosts && chmod +x ~/bin/hosts
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Installing with just user permissions doesn't install the completions, but
|
||||||
|
`hosts` works without them. If you have `sudo` access and want to install the
|
||||||
|
completion scripts, run the following command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo hosts completions install
|
||||||
|
```
|
||||||
|
|
||||||
|
### Arch Linux
|
||||||
|
|
||||||
A package for Arch users is also
|
A package for Arch users is also
|
||||||
[available in the AUR](https://aur.archlinux.org/packages/hosts/).
|
[available in the AUR](https://aur.archlinux.org/packages/hosts/).
|
||||||
|
|
||||||
|
@ -22,42 +22,41 @@ Completion installed: /usr/local/share/zsh/site-functions/_hosts
|
|||||||
If completion is working after installing through any of these methods, then
|
If completion is working after installing through any of these methods, then
|
||||||
you don't need to do anything else.
|
you don't need to do anything else.
|
||||||
|
|
||||||
## `scripts/hosts-completion`
|
## `hosts completions`
|
||||||
|
|
||||||
`hosts` includes a script for installing and uninstalling `hosts` completions
|
The `hosts completions` subcommand can be used for installing and uninstalling
|
||||||
that is used in installation hooks:
|
completion scripts. Depending on your configuration, you might need to use
|
||||||
[hosts-completion](../scripts/hosts-completion)
|
`sudo` to install completion scripts easily:
|
||||||
|
|
||||||
To run this script directly, navigate to this directory in your terminal, and
|
|
||||||
run:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./hosts-completion
|
> sudo hosts completions check
|
||||||
```
|
Completion scripts not found.
|
||||||
|
|
||||||
To install completions:
|
> sudo hosts completions install
|
||||||
|
Completion script installed: /usr/share/bash-completion/completions/hosts
|
||||||
|
Completion script installed: /usr/local/share/zsh/site-functions/_hosts
|
||||||
|
|
||||||
```bash
|
> sudo hosts completions check
|
||||||
./hosts-completion install
|
Exists: /usr/share/bash-completion/completions/hosts
|
||||||
```
|
|
||||||
|
|
||||||
To uninstall:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./hosts-completion uninstall
|
|
||||||
```
|
|
||||||
|
|
||||||
Use the `check` subcommand to determine if completion scripts are installed:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
> ./hosts-completion check
|
|
||||||
Exists: /usr/local/etc/bash_completion.d/hosts
|
|
||||||
Exists: /usr/local/share/zsh/site-functions/_hosts
|
Exists: /usr/local/share/zsh/site-functions/_hosts
|
||||||
|
|
||||||
|
> sudo hosts completions uninstall
|
||||||
|
Completion script removed: /usr/share/bash-completion/completions/hosts
|
||||||
|
Completion script removed: /usr/local/share/zsh/site-functions/_hosts
|
||||||
```
|
```
|
||||||
|
|
||||||
This script will try to determine the completion installation
|
If you installed `hosts` manually by downloading just the `hosts` script,
|
||||||
locations from your environment. If completion doesn't work, you might
|
the completion scripts won't be immediately available for
|
||||||
need to try installing manually.
|
`hosts completions install`. You can try installing the completions with
|
||||||
|
the `--download` flag, which will get the latest version from GitHub:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo hosts completions install --download
|
||||||
|
```
|
||||||
|
|
||||||
|
`hosts completions` will try to determine the completion script directories
|
||||||
|
from your environment. If `hosts completions` isn't able to install
|
||||||
|
the completion scripts, you can try installing them manually.
|
||||||
|
|
||||||
## Manual Installation
|
## Manual Installation
|
||||||
|
|
||||||
|
258
hosts
258
hosts
@ -80,6 +80,16 @@ else # macOS
|
|||||||
export _SED_I_COMMAND=(sed -i '')
|
export _SED_I_COMMAND=(sed -i '')
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# $_REPO
|
||||||
|
#
|
||||||
|
# The <user>/<repo> identifier for the git repository.
|
||||||
|
_REPO="xwmx/hosts"
|
||||||
|
|
||||||
|
# $_REPO_RAW_URL
|
||||||
|
#
|
||||||
|
# The base URL for raw files.
|
||||||
|
_REPO_RAW_URL="https://raw.githubusercontent.com/${_REPO}/master"
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Debug
|
# Debug
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@ -579,6 +589,7 @@ Usage:
|
|||||||
${_ME} add <ip> <hostname> [<comment>]
|
${_ME} add <ip> <hostname> [<comment>]
|
||||||
${_ME} backups [create | [compare | delete | restore | show] <filename>]
|
${_ME} backups [create | [compare | delete | restore | show] <filename>]
|
||||||
${_ME} block <hostname>...
|
${_ME} block <hostname>...
|
||||||
|
${_ME} completions (check | install [-d | --download] | uninstall)
|
||||||
${_ME} disable (<ip> | <hostname> | <search string>)
|
${_ME} disable (<ip> | <hostname> | <search string>)
|
||||||
${_ME} disabled
|
${_ME} disabled
|
||||||
${_ME} edit
|
${_ME} edit
|
||||||
@ -919,6 +930,252 @@ block() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# completions ##################################################### completions
|
||||||
|
|
||||||
|
desc "completions" <<HEREDOC
|
||||||
|
Usage:
|
||||||
|
${_ME} completions (check | install [-d | --download] | uninstall)
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-d, --download Download the completion scripts and install.
|
||||||
|
|
||||||
|
Description:
|
||||||
|
Manage completion scripts. For more information, visit:
|
||||||
|
https://github.com/${_REPO}/blob/master/etc/README.md
|
||||||
|
HEREDOC
|
||||||
|
completions() {
|
||||||
|
local _BASH_COMP_NAME="hosts"
|
||||||
|
local _ZSH_COMP_NAME="_hosts"
|
||||||
|
|
||||||
|
# Usage: _completions_check
|
||||||
|
_completions_check() {
|
||||||
|
local _bash_completion_path=
|
||||||
|
_bash_completion_path="$(_get_bash_completion_path)"
|
||||||
|
|
||||||
|
local _exists=0
|
||||||
|
|
||||||
|
if [[ -n "${_bash_completion_path:-}" ]] &&
|
||||||
|
[[ -d "${_bash_completion_path}" ]]
|
||||||
|
then
|
||||||
|
if [[ -w "${_bash_completion_path}" ]]
|
||||||
|
then
|
||||||
|
if [[ -e "${_bash_completion_path}/${_BASH_COMP_NAME}" ]]
|
||||||
|
then
|
||||||
|
_exists=1
|
||||||
|
printf "Exists: %s\\n" "${_bash_completion_path}/${_BASH_COMP_NAME}"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
printf "Permission denied: %s\\n" "${_bash_completion_path}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
local _zsh_completion_path="/usr/local/share/zsh/site-functions"
|
||||||
|
|
||||||
|
if [[ -d "${_zsh_completion_path}" ]]
|
||||||
|
then
|
||||||
|
if [[ -w "${_zsh_completion_path}" ]]
|
||||||
|
then
|
||||||
|
if [[ -e "${_zsh_completion_path}/${_ZSH_COMP_NAME}" ]]
|
||||||
|
then
|
||||||
|
_exists=1
|
||||||
|
printf "Exists: %s\\n" "${_zsh_completion_path}/${_ZSH_COMP_NAME}"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
printf "Permission denied: %s\\n" "${_zsh_completion_path}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! ((_exists))
|
||||||
|
then
|
||||||
|
_exit_1 printf "Completion scripts not found.\\n"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Usage: _get_bash_completion_path
|
||||||
|
_get_bash_completion_path() {
|
||||||
|
local _bash_completion_path=
|
||||||
|
|
||||||
|
if [[ -n "${BASH_COMPLETION_COMPAT_DIR:-}" ]]
|
||||||
|
then
|
||||||
|
_bash_completion_path="${BASH_COMPLETION_COMPAT_DIR}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "${_bash_completion_path:-}" ]]
|
||||||
|
then
|
||||||
|
local _maybe_path
|
||||||
|
_maybe_path="$(
|
||||||
|
pkg-config \
|
||||||
|
--variable=completionsdir bash-completion 2>/dev/null || true
|
||||||
|
)"
|
||||||
|
|
||||||
|
if [[ -n "${_maybe_path:-}" ]]
|
||||||
|
then
|
||||||
|
_bash_completion_path="${_maybe_path}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "${_bash_completion_path:-}" ]] &&
|
||||||
|
[[ -d "/usr/local/etc/bash_completion.d" ]]
|
||||||
|
then
|
||||||
|
_bash_completion_path="/usr/local/etc/bash_completion.d"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "${_bash_completion_path:-}" ]] &&
|
||||||
|
[[ -d "/etc/bash_completion.d" ]]
|
||||||
|
then
|
||||||
|
_bash_completion_path="/etc/bash_completion.d"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "%s\\n" "${_bash_completion_path:-}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Usage: _completions_install [--download]
|
||||||
|
_completions_install() {
|
||||||
|
local _download=0
|
||||||
|
if [[ "${1:-}" == "--download" ]]
|
||||||
|
then
|
||||||
|
_download=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local _my_dir=
|
||||||
|
_my_dir="$(cd "$(dirname "$(realpath "$0")")"; pwd)"
|
||||||
|
if [[ -z "${_my_dir}" ]] || [[ ! -d "${_my_dir}" ]]
|
||||||
|
then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "${_REPO:-}" ]] || [[ -z "${_REPO_RAW_URL:-}" ]]
|
||||||
|
then
|
||||||
|
_exit_1 printf "Source Git repository not configured.\\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for _shell in bash zsh
|
||||||
|
do
|
||||||
|
local _completion_source="${_my_dir}/etc/${_ME}-completion.${_shell}"
|
||||||
|
|
||||||
|
if ((_download))
|
||||||
|
then
|
||||||
|
if [[ ! -f "${_completion_source}" ]]
|
||||||
|
then
|
||||||
|
_completion_source="$(mktemp)"
|
||||||
|
local _completion_url="${_REPO_RAW_URL}/etc/${_ME}-completion.${_shell}"
|
||||||
|
|
||||||
|
if ! _download_from "${_completion_url}" "${_completion_source}"
|
||||||
|
then
|
||||||
|
_exit_1 printf "Unable to download Completion script from %s\\n" \
|
||||||
|
"${_completion_source}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -f "${_completion_source}" ]]
|
||||||
|
then
|
||||||
|
cat <<HEREDOC
|
||||||
|
Unable to find source ${_shell} completion script. You can try downloading
|
||||||
|
and installing the latest version with the following command (\`sudo\` might
|
||||||
|
be necessary):
|
||||||
|
${_ME} completions install --download
|
||||||
|
|
||||||
|
More information: ${_shell}
|
||||||
|
https://github.com/${_REPO}/blob/master/etc/README.md
|
||||||
|
HEREDOC
|
||||||
|
else
|
||||||
|
local _completion_path=
|
||||||
|
local _completion_target=
|
||||||
|
if [[ "${_shell}" == "bash" ]]
|
||||||
|
then
|
||||||
|
_completion_path="$(_get_bash_completion_path)"
|
||||||
|
_completion_target="${_completion_path}/${_BASH_COMP_NAME}"
|
||||||
|
elif [[ "${_shell}" == "zsh" ]]
|
||||||
|
then
|
||||||
|
_completion_path="/usr/local/share/zsh/site-functions"
|
||||||
|
_completion_target="${_completion_path}/${_ZSH_COMP_NAME}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n "${_completion_path:-}" ]] &&
|
||||||
|
[[ -d "${_completion_path}" ]]
|
||||||
|
then
|
||||||
|
if [[ -w "${_completion_path}" ]]
|
||||||
|
then
|
||||||
|
if [[ ! -e "${_completion_target}" ]]
|
||||||
|
then
|
||||||
|
cp \
|
||||||
|
"${_completion_source}" \
|
||||||
|
"${_completion_target}"
|
||||||
|
chmod +r "${_completion_target}"
|
||||||
|
printf "Completion script installed: %s\\n" \
|
||||||
|
"${_completion_target}"
|
||||||
|
else
|
||||||
|
printf "Exists: %s\\n" "${_completion_target}"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
printf "Permission denied: %s\\n" "${_completion_path}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Usage: _completions_uninstall
|
||||||
|
_completions_uninstall() {
|
||||||
|
local _completion_path=
|
||||||
|
local _completion_target=
|
||||||
|
|
||||||
|
for _shell in bash zsh
|
||||||
|
do
|
||||||
|
if [[ "${_shell}" == "bash" ]]
|
||||||
|
then
|
||||||
|
_completion_path="$(_get_bash_completion_path)"
|
||||||
|
_completion_target="${_completion_path}/${_BASH_COMP_NAME}"
|
||||||
|
elif [[ "${_shell}" == "zsh" ]]
|
||||||
|
then
|
||||||
|
_completion_path="/usr/local/share/zsh/site-functions"
|
||||||
|
_completion_target="${_completion_path}/${_ZSH_COMP_NAME}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n "${_completion_path:-}" ]] &&
|
||||||
|
[[ -d "${_completion_path}" ]]
|
||||||
|
then
|
||||||
|
if [[ -w "${_completion_path}" ]] &&
|
||||||
|
[[ -w "${_completion_target}" ]]
|
||||||
|
then
|
||||||
|
if [[ -f "${_completion_target}" ]]
|
||||||
|
then
|
||||||
|
rm "${_completion_target}"
|
||||||
|
printf "Completion script removed: %s\\n" \
|
||||||
|
"${_completion_target}"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
printf "Permission denied: %s\\n" "${_completion_path}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
local _subcommand="${1:-}"
|
||||||
|
|
||||||
|
case "${_subcommand}" in
|
||||||
|
check)
|
||||||
|
_completions_check
|
||||||
|
;;
|
||||||
|
install)
|
||||||
|
if [[ "${2:-}" =~ ^-d|--download$ ]]
|
||||||
|
then
|
||||||
|
_completions_install --download
|
||||||
|
else
|
||||||
|
_completions_install
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
uninstall)
|
||||||
|
_completions_uninstall
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
help "completions"
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
# disable ############################################################# disable
|
# disable ############################################################# disable
|
||||||
|
|
||||||
desc "disable" <<HEREDOC
|
desc "disable" <<HEREDOC
|
||||||
@ -1445,6 +1702,7 @@ _SUBCOMMANDS=(
|
|||||||
backups
|
backups
|
||||||
block
|
block
|
||||||
commands
|
commands
|
||||||
|
completions
|
||||||
disable
|
disable
|
||||||
disabled
|
disabled
|
||||||
edit
|
edit
|
||||||
|
@ -12,8 +12,8 @@
|
|||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "bats test",
|
"test": "bats test",
|
||||||
"postinstall": "scripts/hosts-completion install",
|
"postinstall": "./hosts completions install",
|
||||||
"preuninstall": "scripts/hosts-completion uninstall"
|
"preuninstall": "./hosts completions uninstall"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
@ -1,199 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
###############################################################################
|
|
||||||
# hosts / scripts / hosts-completion
|
|
||||||
#
|
|
||||||
# Install and uninstall completions for `hosts`.
|
|
||||||
#
|
|
||||||
# https://github.com/xwmx/hosts
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# Strict Mode
|
|
||||||
#
|
|
||||||
# More Information:
|
|
||||||
# https://github.com/xwmx/bash-boilerplate#bash-strict-mode
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
set -o nounset
|
|
||||||
set -o errexit
|
|
||||||
set -o errtrace
|
|
||||||
set -o pipefail
|
|
||||||
IFS=$'\n\t'
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
export _MY_DIR=
|
|
||||||
_MY_DIR="$(cd "$(dirname "$0")"; pwd)"
|
|
||||||
if [[ -z "${_MY_DIR}" ]] || [[ ! -d "${_MY_DIR}" ]]
|
|
||||||
then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Usage: _get_bash_completion_path
|
|
||||||
_get_bash_completion_path() {
|
|
||||||
local _bash_completion_path=
|
|
||||||
|
|
||||||
if [[ -n "${BASH_COMPLETION_COMPAT_DIR:-}" ]] &&
|
|
||||||
[[ -w "${BASH_COMPLETION_COMPAT_DIR:-}" ]]
|
|
||||||
then
|
|
||||||
_bash_completion_path="${BASH_COMPLETION_COMPAT_DIR}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z "${_bash_completion_path:-}" ]]
|
|
||||||
then
|
|
||||||
local _maybe_path
|
|
||||||
_maybe_path="$(
|
|
||||||
pkg-config --variable=completionsdir bash-completion 2>/dev/null || true
|
|
||||||
)"
|
|
||||||
|
|
||||||
if [[ -n "${_maybe_path:-}" ]] &&
|
|
||||||
[[ -w "${_maybe_path:-}" ]]
|
|
||||||
then
|
|
||||||
_bash_completion_path="${_maybe_path}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z "${_bash_completion_path:-}" ]] &&
|
|
||||||
[[ -d "/usr/local/etc/bash_completion.d" ]] &&
|
|
||||||
[[ -w "/usr/local/etc/bash_completion.d" ]]
|
|
||||||
then
|
|
||||||
_bash_completion_path="/usr/local/etc/bash_completion.d"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z "${_bash_completion_path:-}" ]] &&
|
|
||||||
[[ -d "/etc/bash_completion.d" ]] &&
|
|
||||||
[[ -w "/etc/bash_completion.d" ]]
|
|
||||||
then
|
|
||||||
_bash_completion_path="/etc/bash_completion.d"
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf "%s\\n" "${_bash_completion_path:-}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# subcommands ################################################### subcommands #
|
|
||||||
|
|
||||||
# Usage: _check
|
|
||||||
_check() {
|
|
||||||
local _bash_completion_path=
|
|
||||||
_bash_completion_path="$(_get_bash_completion_path)"
|
|
||||||
|
|
||||||
local _exists=0
|
|
||||||
|
|
||||||
if [[ -n "${_bash_completion_path:-}" ]] &&
|
|
||||||
[[ -d "${_bash_completion_path}" ]] &&
|
|
||||||
[[ -w "${_bash_completion_path}" ]] &&
|
|
||||||
[[ -e "${_bash_completion_path}/hosts" ]]
|
|
||||||
then
|
|
||||||
_exists=1
|
|
||||||
printf "Exists: %s\\n" "${_bash_completion_path}/hosts"
|
|
||||||
fi
|
|
||||||
|
|
||||||
local _zsh_completion_path="/usr/local/share/zsh/site-functions"
|
|
||||||
|
|
||||||
if [[ -d "${_zsh_completion_path}" ]] &&
|
|
||||||
[[ -w "${_zsh_completion_path}" ]] &&
|
|
||||||
[[ -e "${_zsh_completion_path}/_hosts" ]]
|
|
||||||
then
|
|
||||||
_exists=1
|
|
||||||
printf "Exists: %s\\n" "${_zsh_completion_path}/_hosts"
|
|
||||||
fi
|
|
||||||
|
|
||||||
((_exists)) || return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Usage: _install
|
|
||||||
_install() {
|
|
||||||
local _bash_completion_path=
|
|
||||||
_bash_completion_path="$(_get_bash_completion_path)"
|
|
||||||
|
|
||||||
if [[ -n "${_bash_completion_path:-}" ]] &&
|
|
||||||
[[ -d "${_bash_completion_path}" ]] &&
|
|
||||||
[[ -w "${_bash_completion_path}" ]] &&
|
|
||||||
[[ ! -e "${_bash_completion_path}/hosts" ]]
|
|
||||||
then
|
|
||||||
cp \
|
|
||||||
"${_MY_DIR}/../etc/hosts-completion.bash" \
|
|
||||||
"${_bash_completion_path}/hosts"
|
|
||||||
printf "Completion installed: %s\\n" "${_bash_completion_path}/hosts"
|
|
||||||
|
|
||||||
# Cleanup old completion script.
|
|
||||||
if [[ -e "${_bash_completion_path}/hosts-completion.bash" ]]
|
|
||||||
then
|
|
||||||
rm "${_bash_completion_path}/hosts-completion.bash"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
local _zsh_completion_path="/usr/local/share/zsh/site-functions"
|
|
||||||
|
|
||||||
if [[ -d "${_zsh_completion_path}" ]] &&
|
|
||||||
[[ -w "${_zsh_completion_path}" ]] &&
|
|
||||||
[[ ! -e "${_zsh_completion_path}/_hosts" ]]
|
|
||||||
then
|
|
||||||
cp \
|
|
||||||
"${_MY_DIR}/../etc/hosts-completion.zsh" \
|
|
||||||
"${_zsh_completion_path}/_hosts"
|
|
||||||
printf "Completion installed: %s\\n" "${_zsh_completion_path}/_hosts"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Usage: _uninstall
|
|
||||||
_uninstall() {
|
|
||||||
local _bash_completion_path=
|
|
||||||
_bash_completion_path="$(_get_bash_completion_path)"
|
|
||||||
|
|
||||||
if [[ -n "${_bash_completion_path:-}" ]] &&
|
|
||||||
[[ -d "${_bash_completion_path}" ]] &&
|
|
||||||
[[ -w "${_bash_completion_path}" ]] &&
|
|
||||||
[[ -e "${_bash_completion_path}/hosts" ]]
|
|
||||||
then
|
|
||||||
rm "${_bash_completion_path}/hosts"
|
|
||||||
printf "Completion removed: %s\\n" "${_bash_completion_path}/hosts"
|
|
||||||
|
|
||||||
# Cleanup old completion script.
|
|
||||||
if [[ -e "${_bash_completion_path}/hosts-completion.bash" ]]
|
|
||||||
then
|
|
||||||
rm "${_bash_completion_path}/hosts-completion.bash"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
local _zsh_completion_path="/usr/local/share/zsh/site-functions"
|
|
||||||
|
|
||||||
if [[ -d "${_zsh_completion_path}" ]] &&
|
|
||||||
[[ -w "${_zsh_completion_path}" ]] &&
|
|
||||||
[[ -e "${_zsh_completion_path}/_hosts" ]]
|
|
||||||
then
|
|
||||||
rm "${_zsh_completion_path}/_hosts"
|
|
||||||
printf "Completion removed: %s\\n" "${_zsh_completion_path}/_hosts"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# main ################################################################# main #
|
|
||||||
|
|
||||||
# Usage: _main <args>...
|
|
||||||
_main() {
|
|
||||||
_subcommand="${1:-}"
|
|
||||||
|
|
||||||
case "${_subcommand}" in
|
|
||||||
check)
|
|
||||||
_check
|
|
||||||
;;
|
|
||||||
install)
|
|
||||||
_install
|
|
||||||
;;
|
|
||||||
uninstall)
|
|
||||||
_uninstall
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
cat <<HEREDOC
|
|
||||||
hosts-completion
|
|
||||||
|
|
||||||
Usage:
|
|
||||||
hosts-completion [check | install | uninstall]
|
|
||||||
|
|
||||||
Description:
|
|
||||||
Manage completion scripts for \`hosts\`.
|
|
||||||
HEREDOC
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
} && _main "$@"
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user