mirror of
https://github.com/kvz/bash3boilerplate.git
synced 2025-06-11 19:11:32 +00:00
Add comment feature and feature checks (#130)
This commit is contained in:
committed by
Kevin van Zonneveld
parent
5cc417485a
commit
1238b67abe
@ -7,16 +7,17 @@
|
|||||||
#
|
#
|
||||||
# Limitations:
|
# Limitations:
|
||||||
#
|
#
|
||||||
# - All keys inside the .ini file must be unique, regardless of the use of sections
|
# - All keys inside a section of the .ini file must be unique
|
||||||
|
# - Optional comment parameter for the creation of new entries
|
||||||
#
|
#
|
||||||
# Usage as a function:
|
# Usage as a function:
|
||||||
#
|
#
|
||||||
# source ini_val.sh
|
# source ini_val.sh
|
||||||
# ini_val data.ini connection.host 127.0.0.1
|
# ini_val data.ini connection.host 127.0.0.1 "Host name or IP address"
|
||||||
#
|
#
|
||||||
# Usage as a command:
|
# Usage as a command:
|
||||||
#
|
#
|
||||||
# ini_val.sh data.ini connection.host 127.0.0.1
|
# ini_val.sh data.ini connection.host 127.0.0.1 "Host name or IP address"
|
||||||
#
|
#
|
||||||
# Based on a template by BASH3 Boilerplate v2.4.1
|
# Based on a template by BASH3 Boilerplate v2.4.1
|
||||||
# http://bash3boilerplate.sh/#authors
|
# http://bash3boilerplate.sh/#authors
|
||||||
@ -30,7 +31,9 @@ function ini_val() {
|
|||||||
local file="${1:-}"
|
local file="${1:-}"
|
||||||
local sectionkey="${2:-}"
|
local sectionkey="${2:-}"
|
||||||
local val="${3:-}"
|
local val="${3:-}"
|
||||||
|
local comment="${4:-}"
|
||||||
local delim="="
|
local delim="="
|
||||||
|
local comment_delim=";"
|
||||||
local section=""
|
local section=""
|
||||||
local key=""
|
local key=""
|
||||||
local current=""
|
local current=""
|
||||||
@ -70,8 +73,16 @@ function ini_val() {
|
|||||||
section=${section_default}
|
section=${section_default}
|
||||||
fi
|
fi
|
||||||
# add to section
|
# add to section
|
||||||
RET="/\\[${section}\\]/a\\
|
if [[ ! "${comment}" ]]; then
|
||||||
|
# add new key/value without comment
|
||||||
|
RET="/\\[${section}\\]/a\\
|
||||||
${key}${delim}${val}"
|
${key}${delim}${val}"
|
||||||
|
else
|
||||||
|
# add new key/value with preceeding comment
|
||||||
|
RET="/\\[${section}\\]/a\\
|
||||||
|
${comment_delim}[${key}] ${comment}\\
|
||||||
|
${key}${delim}${val}"
|
||||||
|
fi
|
||||||
sed -i.bak -e "${RET}" "${file}"
|
sed -i.bak -e "${RET}" "${file}"
|
||||||
# this .bak dance is done for BSD/GNU portability: http://stackoverflow.com/a/22084103/151666
|
# this .bak dance is done for BSD/GNU portability: http://stackoverflow.com/a/22084103/151666
|
||||||
rm -f "${file}.bak"
|
rm -f "${file}.bak"
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
exists
|
exists
|
||||||
127.0.0.1
|
127.0.0.1
|
||||||
nginx, nodejs
|
nginx, nodejs
|
||||||
|
|
||||||
--> command: Replace three values in-place and show result
|
--> command: Replace three values in-place and show result
|
||||||
[default]
|
[default]
|
||||||
orphan = no more
|
orphan = no more
|
||||||
@ -11,10 +12,15 @@ host = 192.168.0.1
|
|||||||
|
|
||||||
[software]
|
[software]
|
||||||
packages = vim
|
packages = vim
|
||||||
|
|
||||||
|
[comment]
|
||||||
|
;[command] this key is commented
|
||||||
|
command=commented
|
||||||
--> function: Read 3 values
|
--> function: Read 3 values
|
||||||
exists
|
exists
|
||||||
127.0.0.1
|
127.0.0.1
|
||||||
nginx, nodejs
|
nginx, nodejs
|
||||||
|
|
||||||
--> function: Replace three values in-place and show result
|
--> function: Replace three values in-place and show result
|
||||||
[default]
|
[default]
|
||||||
orphan = no more
|
orphan = no more
|
||||||
@ -24,3 +30,7 @@ host = 192.168.0.1
|
|||||||
|
|
||||||
[software]
|
[software]
|
||||||
packages = vim
|
packages = vim
|
||||||
|
|
||||||
|
[comment]
|
||||||
|
;[command] this key is commented
|
||||||
|
command=commented
|
||||||
|
4
test/scenario/ini_val/run.sh
Normal file → Executable file
4
test/scenario/ini_val/run.sh
Normal file → Executable file
@ -17,11 +17,13 @@ echo "--> command: Read 3 values"
|
|||||||
bash "${__root}/src/ini_val.sh" ./dummy.ini orphan
|
bash "${__root}/src/ini_val.sh" ./dummy.ini orphan
|
||||||
bash "${__root}/src/ini_val.sh" ./dummy.ini connection.host
|
bash "${__root}/src/ini_val.sh" ./dummy.ini connection.host
|
||||||
bash "${__root}/src/ini_val.sh" ./dummy.ini software.packages
|
bash "${__root}/src/ini_val.sh" ./dummy.ini software.packages
|
||||||
|
bash "${__root}/src/ini_val.sh" ./dummy.ini comment.command
|
||||||
|
|
||||||
echo "--> command: Replace three values in-place and show result"
|
echo "--> command: Replace three values in-place and show result"
|
||||||
bash "${__root}/src/ini_val.sh" ./dummy.ini orphan "no more"
|
bash "${__root}/src/ini_val.sh" ./dummy.ini orphan "no more"
|
||||||
bash "${__root}/src/ini_val.sh" ./dummy.ini connection.host "192.168.0.1"
|
bash "${__root}/src/ini_val.sh" ./dummy.ini connection.host "192.168.0.1"
|
||||||
bash "${__root}/src/ini_val.sh" ./dummy.ini software.packages "vim"
|
bash "${__root}/src/ini_val.sh" ./dummy.ini software.packages "vim"
|
||||||
|
bash "${__root}/src/ini_val.sh" ./dummy.ini comment.command "commented" "this key is commented"
|
||||||
cat dummy.ini
|
cat dummy.ini
|
||||||
rm -f dummy.ini
|
rm -f dummy.ini
|
||||||
|
|
||||||
@ -35,10 +37,12 @@ echo "--> function: Read 3 values"
|
|||||||
ini_val ./dummy.ini orphan
|
ini_val ./dummy.ini orphan
|
||||||
ini_val ./dummy.ini connection.host
|
ini_val ./dummy.ini connection.host
|
||||||
ini_val ./dummy.ini software.packages
|
ini_val ./dummy.ini software.packages
|
||||||
|
ini_val ./dummy.ini comment.command
|
||||||
|
|
||||||
echo "--> function: Replace three values in-place and show result"
|
echo "--> function: Replace three values in-place and show result"
|
||||||
ini_val ./dummy.ini orphan "no more"
|
ini_val ./dummy.ini orphan "no more"
|
||||||
ini_val ./dummy.ini connection.host "192.168.0.1"
|
ini_val ./dummy.ini connection.host "192.168.0.1"
|
||||||
ini_val ./dummy.ini software.packages "vim"
|
ini_val ./dummy.ini software.packages "vim"
|
||||||
|
ini_val ./dummy.ini comment.command "commented" "this key is commented"
|
||||||
cat dummy.ini
|
cat dummy.ini
|
||||||
rm -f dummy.ini
|
rm -f dummy.ini
|
||||||
|
Reference in New Issue
Block a user