mirror of
https://github.com/octoleo/hosts.git
synced 2024-11-26 06:46:43 +00:00
Add --auto-sudo
option and expand option documentation.
Using `sudo` within a script is generally considered poor practice, so by default an error message is printed when the user attempts to perform a write operation without sufficient permissions. One way to deal avoid this error message is to alias `hosts` to `sudo hosts`, but this then requires `sudo` for all operations and not just write operations. The new `--auto-sudo` option flag provides a way to automatically invoke a write command with `sudo` when the user doesn't have write permissions. In order to provide cleaner documentation for this option, include more option documentation in README.md.
This commit is contained in:
parent
0925735153
commit
99b175f134
34
README.md
34
README.md
@ -54,6 +54,17 @@ Usage:
|
|||||||
hosts show (<ip> | <hostname> | <search string>)
|
hosts show (<ip> | <hostname> | <search string>)
|
||||||
hosts remove (<ip> | <hostname> | <search string>) [--force]
|
hosts remove (<ip> | <hostname> | <search string>) [--force]
|
||||||
hosts unblock <hostname>
|
hosts unblock <hostname>
|
||||||
|
hosts --auto-sudo
|
||||||
|
hosts -h | --help
|
||||||
|
hosts --version
|
||||||
|
|
||||||
|
Options:
|
||||||
|
--auto-sudo Run write commands with `sudo` automatically.
|
||||||
|
-h --help Display this help information.
|
||||||
|
--version Display version information.
|
||||||
|
|
||||||
|
Help:
|
||||||
|
hosts help [<command>]
|
||||||
```
|
```
|
||||||
|
|
||||||
For full usage, run:
|
For full usage, run:
|
||||||
@ -244,6 +255,29 @@ Description:
|
|||||||
Display the current program version.
|
Display the current program version.
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Options
|
||||||
|
|
||||||
|
### `--auto-sudo`
|
||||||
|
|
||||||
|
When specified, all write operations that require `sudo` will automatically
|
||||||
|
rerun the command using `sudo` when the current user does not have write the
|
||||||
|
permissions to write to the hosts file.
|
||||||
|
|
||||||
|
To have this option always enabled, add the following line to your shell
|
||||||
|
configuration (`.bashrc`, `.zshrc`, or similar):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
alias hosts="hosts --auto-sudo"
|
||||||
|
```
|
||||||
|
|
||||||
|
### `-h` `--help`
|
||||||
|
|
||||||
|
Display help information.
|
||||||
|
|
||||||
|
### `--version`
|
||||||
|
|
||||||
|
Display version information.
|
||||||
|
|
||||||
## Tests
|
## Tests
|
||||||
|
|
||||||
To run the test suite, install [Bats](https://github.com/sstephenson/bats) and
|
To run the test suite, install [Bats](https://github.com/sstephenson/bats) and
|
||||||
|
22
hosts
22
hosts
@ -224,6 +224,7 @@ _COMMAND_ARGV=("${0}")
|
|||||||
# on what the program needs.
|
# on what the program needs.
|
||||||
_CMD=""
|
_CMD=""
|
||||||
_USE_DEBUG=0
|
_USE_DEBUG=0
|
||||||
|
_AUTO_SUDO=0
|
||||||
|
|
||||||
while [ ${#} -gt 0 ]
|
while [ ${#} -gt 0 ]
|
||||||
do
|
do
|
||||||
@ -239,6 +240,9 @@ do
|
|||||||
--debug)
|
--debug)
|
||||||
_USE_DEBUG=1
|
_USE_DEBUG=1
|
||||||
;;
|
;;
|
||||||
|
--auto-sudo|--sudo)
|
||||||
|
_AUTO_SUDO=1
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
# The first non-option argument is assumed to be the command name.
|
# The first non-option argument is assumed to be the command name.
|
||||||
# All subsequent arguments are added to $_COMMAND_ARGV.
|
# All subsequent arguments are added to $_COMMAND_ARGV.
|
||||||
@ -483,10 +487,16 @@ _present() {
|
|||||||
_verify_write_permissions() {
|
_verify_write_permissions() {
|
||||||
if ! test -w "${HOSTS_PATH}"
|
if ! test -w "${HOSTS_PATH}"
|
||||||
then
|
then
|
||||||
|
if ((_AUTO_SUDO))
|
||||||
|
then
|
||||||
|
sudo "${_ME}" "${_CMD}" "${_COMMAND_PARAMETERS[@]:-}"
|
||||||
|
exit $?
|
||||||
|
else
|
||||||
_die printf \
|
_die printf \
|
||||||
"You don't have permission to perform this operation. Try again with:
|
"You don't have permission to perform this operation. Try again with:
|
||||||
sudo !!\n"
|
sudo !!\n"
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@ -608,10 +618,12 @@ Usage:
|
|||||||
${_ME} show (<ip> | <hostname> | <search string>)
|
${_ME} show (<ip> | <hostname> | <search string>)
|
||||||
${_ME} remove (<ip> | <hostname> | <search string>) [--force]
|
${_ME} remove (<ip> | <hostname> | <search string>) [--force]
|
||||||
${_ME} unblock <hostname>
|
${_ME} unblock <hostname>
|
||||||
|
${_ME} --auto-sudo
|
||||||
${_ME} -h | --help
|
${_ME} -h | --help
|
||||||
${_ME} --version
|
${_ME} --version
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
|
--auto-sudo Run write commands with \`sudo\` automatically.
|
||||||
-h --help Display this help information.
|
-h --help Display this help information.
|
||||||
--version Display version information.
|
--version Display version information.
|
||||||
|
|
||||||
@ -688,7 +700,7 @@ add() {
|
|||||||
_debug printf "add() \${2}: %s\n" "${2:-}"
|
_debug printf "add() \${2}: %s\n" "${2:-}"
|
||||||
_debug printf "add() \${3}: %s\n" "${3:-}"
|
_debug printf "add() \${3}: %s\n" "${3:-}"
|
||||||
|
|
||||||
_verify_write_permissions
|
_verify_write_permissions "$@"
|
||||||
local ip=${1:-}
|
local ip=${1:-}
|
||||||
local hostname=${2:-}
|
local hostname=${2:-}
|
||||||
local comment=${*:3}
|
local comment=${*:3}
|
||||||
@ -766,7 +778,7 @@ Description:
|
|||||||
search string.
|
search string.
|
||||||
HEREDOC
|
HEREDOC
|
||||||
disable() {
|
disable() {
|
||||||
_verify_write_permissions
|
_verify_write_permissions "$@"
|
||||||
local search_string="${1}"
|
local search_string="${1}"
|
||||||
if [[ -z "${search_string}" ]]
|
if [[ -z "${search_string}" ]]
|
||||||
then
|
then
|
||||||
@ -832,7 +844,7 @@ Description:
|
|||||||
Open the ${HOSTS_PATH} file in your \$EDITOR.
|
Open the ${HOSTS_PATH} file in your \$EDITOR.
|
||||||
HEREDOC
|
HEREDOC
|
||||||
edit() {
|
edit() {
|
||||||
_verify_write_permissions
|
_verify_write_permissions "$@"
|
||||||
if [[ -z "${EDITOR}" ]]
|
if [[ -z "${EDITOR}" ]]
|
||||||
then
|
then
|
||||||
_die printf "\$EDITOR not set.\n"
|
_die printf "\$EDITOR not set.\n"
|
||||||
@ -852,7 +864,7 @@ Description:
|
|||||||
or search string.
|
or search string.
|
||||||
HEREDOC
|
HEREDOC
|
||||||
enable() {
|
enable() {
|
||||||
_verify_write_permissions
|
_verify_write_permissions "$@"
|
||||||
local search_string="${1}"
|
local search_string="${1}"
|
||||||
if [[ -z "${search_string}" ]]
|
if [[ -z "${search_string}" ]]
|
||||||
then
|
then
|
||||||
@ -977,7 +989,7 @@ Description:
|
|||||||
IP and hostname pair will be removed.
|
IP and hostname pair will be removed.
|
||||||
HEREDOC
|
HEREDOC
|
||||||
remove() {
|
remove() {
|
||||||
_verify_write_permissions
|
_verify_write_permissions "$@"
|
||||||
local is_search_pair=0
|
local is_search_pair=0
|
||||||
local force_skip_prompt=0
|
local force_skip_prompt=0
|
||||||
local arguments=()
|
local arguments=()
|
||||||
|
Loading…
Reference in New Issue
Block a user