diff options
Diffstat (limited to 'scripts/config_functions.sh')
-rw-r--r-- | scripts/config_functions.sh | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/scripts/config_functions.sh b/scripts/config_functions.sh new file mode 100644 index 0000000..593ca94 --- /dev/null +++ b/scripts/config_functions.sh @@ -0,0 +1,91 @@ +## Copyright 2015 Ian Jauslin +## +## Licensed under the Apache License, Version 2.0 (the "License"); +## you may not use this file except in compliance with the License. +## You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. + +################################################################################################ +## ## +## Functions used to manipulate configuration files ## +## ## +################################################################################################ + + +# remove unwanted entries in configuration files (read fromm stdin) +function strip_config { + tostrip="$1" + + # whether to skip the entry + skip=0 + + # whether this is the first entry + first_entry=1 + + # read file + while read aline; do + # if line is a header + if [[ "$aline" =~ ^#! ]]; then + # check whether to strip + for header in $tostrip; do + if [[ "$aline" = "$header" ]]; then + skip=1 + break + fi + done + + # add a '&' separator + if [[ "$skip" = 0 && "$first_entry" = 0 ]]; then + echo "&" + fi + [[ "$skip" = 0 ]] && first_entry=0 + fi + + # change entry + if [[ "$aline" = "&" ]]; then + skip=0 + # write out if not instructed to skip + elif [[ $skip = 0 ]]; then + echo "$aline" + fi + + done +} + +# find a config entry in a file (read from stdin) +function find_config_entry { + header="$1" + + # whether the entry was found + foundit=0 + + # read stdin + while read aline; do + # write out if the header was found + if [[ $foundit = 1 ]]; then + if [[ "$aline" != "&" ]]; then + echo "$aline" + fi + fi + + # check the header + if [[ "$aline" = "$header" ]]; then + foundit=1 + fi + + # new entry + if [[ "$aline" = "&" ]]; then + if [[ "$foundit" = 1 ]]; then + break + fi + fi + done +} + |