Merge "Move configuration functions into inc/*"
This commit is contained in:
		@@ -156,7 +156,6 @@ Scripts
 | 
				
			|||||||
* `lib/ceilometer <lib/ceilometer.html>`__
 | 
					* `lib/ceilometer <lib/ceilometer.html>`__
 | 
				
			||||||
* `lib/ceph <lib/ceph.html>`__
 | 
					* `lib/ceph <lib/ceph.html>`__
 | 
				
			||||||
* `lib/cinder <lib/cinder.html>`__
 | 
					* `lib/cinder <lib/cinder.html>`__
 | 
				
			||||||
* `lib/config <lib/config.html>`__
 | 
					 | 
				
			||||||
* `lib/database <lib/database.html>`__
 | 
					* `lib/database <lib/database.html>`__
 | 
				
			||||||
* `lib/dstat <lib/dstat.html>`__
 | 
					* `lib/dstat <lib/dstat.html>`__
 | 
				
			||||||
* `lib/glance <lib/glance.html>`__
 | 
					* `lib/glance <lib/glance.html>`__
 | 
				
			||||||
@@ -188,6 +187,12 @@ Scripts
 | 
				
			|||||||
* `extras.d/70-zaqar.sh <extras.d/70-zaqar.sh.html>`__
 | 
					* `extras.d/70-zaqar.sh <extras.d/70-zaqar.sh.html>`__
 | 
				
			||||||
* `extras.d/80-tempest.sh <extras.d/80-tempest.sh.html>`__
 | 
					* `extras.d/80-tempest.sh <extras.d/80-tempest.sh.html>`__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* `inc/ini-config <inc/ini-config.html>`__
 | 
				
			||||||
 | 
					* `inc/meta-config <inc/meta-config.html>`__
 | 
				
			||||||
 | 
					* `inc/python <inc/python.html>`__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* `pkg/elasticsearch.sh <pkg/elasticsearch.sh.html>`_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Configuration
 | 
					Configuration
 | 
				
			||||||
-------------
 | 
					-------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,6 +13,7 @@
 | 
				
			|||||||
# Include the common functions
 | 
					# Include the common functions
 | 
				
			||||||
FUNC_DIR=$(cd $(dirname "${BASH_SOURCE:-$0}") && pwd)
 | 
					FUNC_DIR=$(cd $(dirname "${BASH_SOURCE:-$0}") && pwd)
 | 
				
			||||||
source ${FUNC_DIR}/functions-common
 | 
					source ${FUNC_DIR}/functions-common
 | 
				
			||||||
 | 
					source ${FUNC_DIR}/inc/ini-config
 | 
				
			||||||
source ${FUNC_DIR}/inc/python
 | 
					source ${FUNC_DIR}/inc/python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Save trace setting
 | 
					# Save trace setting
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										199
									
								
								functions-common
									
									
									
									
									
								
							
							
						
						
									
										199
									
								
								functions-common
									
									
									
									
									
								
							@@ -43,197 +43,6 @@ declare -A GITDIR
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
TRACK_DEPENDS=${TRACK_DEPENDS:-False}
 | 
					TRACK_DEPENDS=${TRACK_DEPENDS:-False}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Config Functions
 | 
					 | 
				
			||||||
# ================
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Append a new option in an ini file without replacing the old value
 | 
					 | 
				
			||||||
# iniadd config-file section option value1 value2 value3 ...
 | 
					 | 
				
			||||||
function iniadd {
 | 
					 | 
				
			||||||
    local xtrace=$(set +o | grep xtrace)
 | 
					 | 
				
			||||||
    set +o xtrace
 | 
					 | 
				
			||||||
    local file=$1
 | 
					 | 
				
			||||||
    local section=$2
 | 
					 | 
				
			||||||
    local option=$3
 | 
					 | 
				
			||||||
    shift 3
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    local values="$(iniget_multiline $file $section $option) $@"
 | 
					 | 
				
			||||||
    iniset_multiline $file $section $option $values
 | 
					 | 
				
			||||||
    $xtrace
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Comment an option in an INI file
 | 
					 | 
				
			||||||
# inicomment config-file section option
 | 
					 | 
				
			||||||
function inicomment {
 | 
					 | 
				
			||||||
    local xtrace=$(set +o | grep xtrace)
 | 
					 | 
				
			||||||
    set +o xtrace
 | 
					 | 
				
			||||||
    local file=$1
 | 
					 | 
				
			||||||
    local section=$2
 | 
					 | 
				
			||||||
    local option=$3
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    sed -i -e "/^\[$section\]/,/^\[.*\]/ s|^\($option[ \t]*=.*$\)|#\1|" "$file"
 | 
					 | 
				
			||||||
    $xtrace
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Get an option from an INI file
 | 
					 | 
				
			||||||
# iniget config-file section option
 | 
					 | 
				
			||||||
function iniget {
 | 
					 | 
				
			||||||
    local xtrace=$(set +o | grep xtrace)
 | 
					 | 
				
			||||||
    set +o xtrace
 | 
					 | 
				
			||||||
    local file=$1
 | 
					 | 
				
			||||||
    local section=$2
 | 
					 | 
				
			||||||
    local option=$3
 | 
					 | 
				
			||||||
    local line
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    line=$(sed -ne "/^\[$section\]/,/^\[.*\]/ { /^$option[ \t]*=/ p; }" "$file")
 | 
					 | 
				
			||||||
    echo ${line#*=}
 | 
					 | 
				
			||||||
    $xtrace
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Get a multiple line option from an INI file
 | 
					 | 
				
			||||||
# iniget_multiline config-file section option
 | 
					 | 
				
			||||||
function iniget_multiline {
 | 
					 | 
				
			||||||
    local xtrace=$(set +o | grep xtrace)
 | 
					 | 
				
			||||||
    set +o xtrace
 | 
					 | 
				
			||||||
    local file=$1
 | 
					 | 
				
			||||||
    local section=$2
 | 
					 | 
				
			||||||
    local option=$3
 | 
					 | 
				
			||||||
    local values
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    values=$(sed -ne "/^\[$section\]/,/^\[.*\]/ { s/^$option[ \t]*=[ \t]*//gp; }" "$file")
 | 
					 | 
				
			||||||
    echo ${values}
 | 
					 | 
				
			||||||
    $xtrace
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Determinate is the given option present in the INI file
 | 
					 | 
				
			||||||
# ini_has_option config-file section option
 | 
					 | 
				
			||||||
function ini_has_option {
 | 
					 | 
				
			||||||
    local xtrace=$(set +o | grep xtrace)
 | 
					 | 
				
			||||||
    set +o xtrace
 | 
					 | 
				
			||||||
    local file=$1
 | 
					 | 
				
			||||||
    local section=$2
 | 
					 | 
				
			||||||
    local option=$3
 | 
					 | 
				
			||||||
    local line
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    line=$(sed -ne "/^\[$section\]/,/^\[.*\]/ { /^$option[ \t]*=/ p; }" "$file")
 | 
					 | 
				
			||||||
    $xtrace
 | 
					 | 
				
			||||||
    [ -n "$line" ]
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Add another config line for a multi-line option.
 | 
					 | 
				
			||||||
# It's normally called after iniset of the same option and assumes
 | 
					 | 
				
			||||||
# that the section already exists.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Note that iniset_multiline requires all the 'lines' to be supplied
 | 
					 | 
				
			||||||
# in the argument list. Doing that will cause incorrect configuration
 | 
					 | 
				
			||||||
# if spaces are used in the config values.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# iniadd_literal config-file section option value
 | 
					 | 
				
			||||||
function iniadd_literal {
 | 
					 | 
				
			||||||
    local xtrace=$(set +o | grep xtrace)
 | 
					 | 
				
			||||||
    set +o xtrace
 | 
					 | 
				
			||||||
    local file=$1
 | 
					 | 
				
			||||||
    local section=$2
 | 
					 | 
				
			||||||
    local option=$3
 | 
					 | 
				
			||||||
    local value=$4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [[ -z $section || -z $option ]] && return
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Add it
 | 
					 | 
				
			||||||
    sed -i -e "/^\[$section\]/ a\\
 | 
					 | 
				
			||||||
$option = $value
 | 
					 | 
				
			||||||
" "$file"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    $xtrace
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function inidelete {
 | 
					 | 
				
			||||||
    local xtrace=$(set +o | grep xtrace)
 | 
					 | 
				
			||||||
    set +o xtrace
 | 
					 | 
				
			||||||
    local file=$1
 | 
					 | 
				
			||||||
    local section=$2
 | 
					 | 
				
			||||||
    local option=$3
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [[ -z $section || -z $option ]] && return
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Remove old values
 | 
					 | 
				
			||||||
    sed -i -e "/^\[$section\]/,/^\[.*\]/ { /^$option[ \t]*=/ d; }" "$file"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    $xtrace
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Set an option in an INI file
 | 
					 | 
				
			||||||
# iniset config-file section option value
 | 
					 | 
				
			||||||
function iniset {
 | 
					 | 
				
			||||||
    local xtrace=$(set +o | grep xtrace)
 | 
					 | 
				
			||||||
    set +o xtrace
 | 
					 | 
				
			||||||
    local file=$1
 | 
					 | 
				
			||||||
    local section=$2
 | 
					 | 
				
			||||||
    local option=$3
 | 
					 | 
				
			||||||
    local value=$4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [[ -z $section || -z $option ]] && return
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if ! grep -q "^\[$section\]" "$file" 2>/dev/null; then
 | 
					 | 
				
			||||||
        # Add section at the end
 | 
					 | 
				
			||||||
        echo -e "\n[$section]" >>"$file"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    if ! ini_has_option "$file" "$section" "$option"; then
 | 
					 | 
				
			||||||
        # Add it
 | 
					 | 
				
			||||||
        sed -i -e "/^\[$section\]/ a\\
 | 
					 | 
				
			||||||
$option = $value
 | 
					 | 
				
			||||||
" "$file"
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
        local sep=$(echo -ne "\x01")
 | 
					 | 
				
			||||||
        # Replace it
 | 
					 | 
				
			||||||
        sed -i -e '/^\['${section}'\]/,/^\[.*\]/ s'${sep}'^\('${option}'[ \t]*=[ \t]*\).*$'${sep}'\1'"${value}"${sep} "$file"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    $xtrace
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Set a multiple line option in an INI file
 | 
					 | 
				
			||||||
# iniset_multiline config-file section option value1 value2 valu3 ...
 | 
					 | 
				
			||||||
function iniset_multiline {
 | 
					 | 
				
			||||||
    local xtrace=$(set +o | grep xtrace)
 | 
					 | 
				
			||||||
    set +o xtrace
 | 
					 | 
				
			||||||
    local file=$1
 | 
					 | 
				
			||||||
    local section=$2
 | 
					 | 
				
			||||||
    local option=$3
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    shift 3
 | 
					 | 
				
			||||||
    local values
 | 
					 | 
				
			||||||
    for v in $@; do
 | 
					 | 
				
			||||||
        # The later sed command inserts each new value in the line next to
 | 
					 | 
				
			||||||
        # the section identifier, which causes the values to be inserted in
 | 
					 | 
				
			||||||
        # the reverse order. Do a reverse here to keep the original order.
 | 
					 | 
				
			||||||
        values="$v ${values}"
 | 
					 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
    if ! grep -q "^\[$section\]" "$file"; then
 | 
					 | 
				
			||||||
        # Add section at the end
 | 
					 | 
				
			||||||
        echo -e "\n[$section]" >>"$file"
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
        # Remove old values
 | 
					 | 
				
			||||||
        sed -i -e "/^\[$section\]/,/^\[.*\]/ { /^$option[ \t]*=/ d; }" "$file"
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    # Add new ones
 | 
					 | 
				
			||||||
    for v in $values; do
 | 
					 | 
				
			||||||
        sed -i -e "/^\[$section\]/ a\\
 | 
					 | 
				
			||||||
$option = $v
 | 
					 | 
				
			||||||
" "$file"
 | 
					 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
    $xtrace
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Uncomment an option in an INI file
 | 
					 | 
				
			||||||
# iniuncomment config-file section option
 | 
					 | 
				
			||||||
function iniuncomment {
 | 
					 | 
				
			||||||
    local xtrace=$(set +o | grep xtrace)
 | 
					 | 
				
			||||||
    set +o xtrace
 | 
					 | 
				
			||||||
    local file=$1
 | 
					 | 
				
			||||||
    local section=$2
 | 
					 | 
				
			||||||
    local option=$3
 | 
					 | 
				
			||||||
    sed -i -e "/^\[$section\]/,/^\[.*\]/ s|[^ \t]*#[ \t]*\($option[ \t]*=.*$\)|\1|" "$file"
 | 
					 | 
				
			||||||
    $xtrace
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Normalize config values to True or False
 | 
					# Normalize config values to True or False
 | 
				
			||||||
# Accepts as False: 0 no No NO false False FALSE
 | 
					# Accepts as False: 0 no No NO false False FALSE
 | 
				
			||||||
@@ -253,14 +62,6 @@ function trueorfalse {
 | 
				
			|||||||
    $xtrace
 | 
					    $xtrace
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function isset {
 | 
					 | 
				
			||||||
    nounset=$(set +o | grep nounset)
 | 
					 | 
				
			||||||
    set +o nounset
 | 
					 | 
				
			||||||
    [[ -n "${!1+x}" ]]
 | 
					 | 
				
			||||||
    result=$?
 | 
					 | 
				
			||||||
    $nounset
 | 
					 | 
				
			||||||
    return $result
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Control Functions
 | 
					# Control Functions
 | 
				
			||||||
# =================
 | 
					# =================
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										223
									
								
								inc/ini-config
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										223
									
								
								inc/ini-config
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,223 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# **inc/ini-config** - Configuration/INI functions
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Support for manipulating INI-style configuration files
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# These functions have no external dependencies and no side-effects
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Save trace setting
 | 
				
			||||||
 | 
					INC_CONF_TRACE=$(set +o | grep xtrace)
 | 
				
			||||||
 | 
					set +o xtrace
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Config Functions
 | 
				
			||||||
 | 
					# ================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Append a new option in an ini file without replacing the old value
 | 
				
			||||||
 | 
					# iniadd config-file section option value1 value2 value3 ...
 | 
				
			||||||
 | 
					function iniadd {
 | 
				
			||||||
 | 
					    local xtrace=$(set +o | grep xtrace)
 | 
				
			||||||
 | 
					    set +o xtrace
 | 
				
			||||||
 | 
					    local file=$1
 | 
				
			||||||
 | 
					    local section=$2
 | 
				
			||||||
 | 
					    local option=$3
 | 
				
			||||||
 | 
					    shift 3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local values="$(iniget_multiline $file $section $option) $@"
 | 
				
			||||||
 | 
					    iniset_multiline $file $section $option $values
 | 
				
			||||||
 | 
					    $xtrace
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Comment an option in an INI file
 | 
				
			||||||
 | 
					# inicomment config-file section option
 | 
				
			||||||
 | 
					function inicomment {
 | 
				
			||||||
 | 
					    local xtrace=$(set +o | grep xtrace)
 | 
				
			||||||
 | 
					    set +o xtrace
 | 
				
			||||||
 | 
					    local file=$1
 | 
				
			||||||
 | 
					    local section=$2
 | 
				
			||||||
 | 
					    local option=$3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    sed -i -e "/^\[$section\]/,/^\[.*\]/ s|^\($option[ \t]*=.*$\)|#\1|" "$file"
 | 
				
			||||||
 | 
					    $xtrace
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Get an option from an INI file
 | 
				
			||||||
 | 
					# iniget config-file section option
 | 
				
			||||||
 | 
					function iniget {
 | 
				
			||||||
 | 
					    local xtrace=$(set +o | grep xtrace)
 | 
				
			||||||
 | 
					    set +o xtrace
 | 
				
			||||||
 | 
					    local file=$1
 | 
				
			||||||
 | 
					    local section=$2
 | 
				
			||||||
 | 
					    local option=$3
 | 
				
			||||||
 | 
					    local line
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    line=$(sed -ne "/^\[$section\]/,/^\[.*\]/ { /^$option[ \t]*=/ p; }" "$file")
 | 
				
			||||||
 | 
					    echo ${line#*=}
 | 
				
			||||||
 | 
					    $xtrace
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Get a multiple line option from an INI file
 | 
				
			||||||
 | 
					# iniget_multiline config-file section option
 | 
				
			||||||
 | 
					function iniget_multiline {
 | 
				
			||||||
 | 
					    local xtrace=$(set +o | grep xtrace)
 | 
				
			||||||
 | 
					    set +o xtrace
 | 
				
			||||||
 | 
					    local file=$1
 | 
				
			||||||
 | 
					    local section=$2
 | 
				
			||||||
 | 
					    local option=$3
 | 
				
			||||||
 | 
					    local values
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    values=$(sed -ne "/^\[$section\]/,/^\[.*\]/ { s/^$option[ \t]*=[ \t]*//gp; }" "$file")
 | 
				
			||||||
 | 
					    echo ${values}
 | 
				
			||||||
 | 
					    $xtrace
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Determinate is the given option present in the INI file
 | 
				
			||||||
 | 
					# ini_has_option config-file section option
 | 
				
			||||||
 | 
					function ini_has_option {
 | 
				
			||||||
 | 
					    local xtrace=$(set +o | grep xtrace)
 | 
				
			||||||
 | 
					    set +o xtrace
 | 
				
			||||||
 | 
					    local file=$1
 | 
				
			||||||
 | 
					    local section=$2
 | 
				
			||||||
 | 
					    local option=$3
 | 
				
			||||||
 | 
					    local line
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    line=$(sed -ne "/^\[$section\]/,/^\[.*\]/ { /^$option[ \t]*=/ p; }" "$file")
 | 
				
			||||||
 | 
					    $xtrace
 | 
				
			||||||
 | 
					    [ -n "$line" ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add another config line for a multi-line option.
 | 
				
			||||||
 | 
					# It's normally called after iniset of the same option and assumes
 | 
				
			||||||
 | 
					# that the section already exists.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Note that iniset_multiline requires all the 'lines' to be supplied
 | 
				
			||||||
 | 
					# in the argument list. Doing that will cause incorrect configuration
 | 
				
			||||||
 | 
					# if spaces are used in the config values.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# iniadd_literal config-file section option value
 | 
				
			||||||
 | 
					function iniadd_literal {
 | 
				
			||||||
 | 
					    local xtrace=$(set +o | grep xtrace)
 | 
				
			||||||
 | 
					    set +o xtrace
 | 
				
			||||||
 | 
					    local file=$1
 | 
				
			||||||
 | 
					    local section=$2
 | 
				
			||||||
 | 
					    local option=$3
 | 
				
			||||||
 | 
					    local value=$4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [[ -z $section || -z $option ]] && return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Add it
 | 
				
			||||||
 | 
					    sed -i -e "/^\[$section\]/ a\\
 | 
				
			||||||
 | 
					$option = $value
 | 
				
			||||||
 | 
					" "$file"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $xtrace
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Remove an option from an INI file
 | 
				
			||||||
 | 
					# inidelete config-file section option
 | 
				
			||||||
 | 
					function inidelete {
 | 
				
			||||||
 | 
					    local xtrace=$(set +o | grep xtrace)
 | 
				
			||||||
 | 
					    set +o xtrace
 | 
				
			||||||
 | 
					    local file=$1
 | 
				
			||||||
 | 
					    local section=$2
 | 
				
			||||||
 | 
					    local option=$3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [[ -z $section || -z $option ]] && return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Remove old values
 | 
				
			||||||
 | 
					    sed -i -e "/^\[$section\]/,/^\[.*\]/ { /^$option[ \t]*=/ d; }" "$file"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $xtrace
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Set an option in an INI file
 | 
				
			||||||
 | 
					# iniset config-file section option value
 | 
				
			||||||
 | 
					function iniset {
 | 
				
			||||||
 | 
					    local xtrace=$(set +o | grep xtrace)
 | 
				
			||||||
 | 
					    set +o xtrace
 | 
				
			||||||
 | 
					    local file=$1
 | 
				
			||||||
 | 
					    local section=$2
 | 
				
			||||||
 | 
					    local option=$3
 | 
				
			||||||
 | 
					    local value=$4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [[ -z $section || -z $option ]] && return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ! grep -q "^\[$section\]" "$file" 2>/dev/null; then
 | 
				
			||||||
 | 
					        # Add section at the end
 | 
				
			||||||
 | 
					        echo -e "\n[$section]" >>"$file"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if ! ini_has_option "$file" "$section" "$option"; then
 | 
				
			||||||
 | 
					        # Add it
 | 
				
			||||||
 | 
					        sed -i -e "/^\[$section\]/ a\\
 | 
				
			||||||
 | 
					$option = $value
 | 
				
			||||||
 | 
					" "$file"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        local sep=$(echo -ne "\x01")
 | 
				
			||||||
 | 
					        # Replace it
 | 
				
			||||||
 | 
					        sed -i -e '/^\['${section}'\]/,/^\[.*\]/ s'${sep}'^\('${option}'[ \t]*=[ \t]*\).*$'${sep}'\1'"${value}"${sep} "$file"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    $xtrace
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Set a multiple line option in an INI file
 | 
				
			||||||
 | 
					# iniset_multiline config-file section option value1 value2 valu3 ...
 | 
				
			||||||
 | 
					function iniset_multiline {
 | 
				
			||||||
 | 
					    local xtrace=$(set +o | grep xtrace)
 | 
				
			||||||
 | 
					    set +o xtrace
 | 
				
			||||||
 | 
					    local file=$1
 | 
				
			||||||
 | 
					    local section=$2
 | 
				
			||||||
 | 
					    local option=$3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    shift 3
 | 
				
			||||||
 | 
					    local values
 | 
				
			||||||
 | 
					    for v in $@; do
 | 
				
			||||||
 | 
					        # The later sed command inserts each new value in the line next to
 | 
				
			||||||
 | 
					        # the section identifier, which causes the values to be inserted in
 | 
				
			||||||
 | 
					        # the reverse order. Do a reverse here to keep the original order.
 | 
				
			||||||
 | 
					        values="$v ${values}"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    if ! grep -q "^\[$section\]" "$file"; then
 | 
				
			||||||
 | 
					        # Add section at the end
 | 
				
			||||||
 | 
					        echo -e "\n[$section]" >>"$file"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        # Remove old values
 | 
				
			||||||
 | 
					        sed -i -e "/^\[$section\]/,/^\[.*\]/ { /^$option[ \t]*=/ d; }" "$file"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    # Add new ones
 | 
				
			||||||
 | 
					    for v in $values; do
 | 
				
			||||||
 | 
					        sed -i -e "/^\[$section\]/ a\\
 | 
				
			||||||
 | 
					$option = $v
 | 
				
			||||||
 | 
					" "$file"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    $xtrace
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Uncomment an option in an INI file
 | 
				
			||||||
 | 
					# iniuncomment config-file section option
 | 
				
			||||||
 | 
					function iniuncomment {
 | 
				
			||||||
 | 
					    local xtrace=$(set +o | grep xtrace)
 | 
				
			||||||
 | 
					    set +o xtrace
 | 
				
			||||||
 | 
					    local file=$1
 | 
				
			||||||
 | 
					    local section=$2
 | 
				
			||||||
 | 
					    local option=$3
 | 
				
			||||||
 | 
					    sed -i -e "/^\[$section\]/,/^\[.*\]/ s|[^ \t]*#[ \t]*\($option[ \t]*=.*$\)|\1|" "$file"
 | 
				
			||||||
 | 
					    $xtrace
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function isset {
 | 
				
			||||||
 | 
					    nounset=$(set +o | grep nounset)
 | 
				
			||||||
 | 
					    set +o nounset
 | 
				
			||||||
 | 
					    [[ -n "${!1+x}" ]]
 | 
				
			||||||
 | 
					    result=$?
 | 
				
			||||||
 | 
					    $nounset
 | 
				
			||||||
 | 
					    return $result
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Restore xtrace
 | 
				
			||||||
 | 
					$INC_CONF_TRACE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Local variables:
 | 
				
			||||||
 | 
					# mode: shell-script
 | 
				
			||||||
 | 
					# End:
 | 
				
			||||||
@@ -1,7 +1,9 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					#!/bin/bash
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# lib/config - Configuration file manipulation functions
 | 
					# **lib/meta-config** - Configuration file manipulation functions
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Support for DevStack's local.conf meta-config sections
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
# These functions have no external dependencies and the following side-effects:
 | 
					# These functions have no external dependencies and the following side-effects:
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# CONFIG_AWK_CMD is defined, default is ``awk``
 | 
					# CONFIG_AWK_CMD is defined, default is ``awk``
 | 
				
			||||||
@@ -18,7 +20,7 @@
 | 
				
			|||||||
# file-name is the destination of the config file
 | 
					# file-name is the destination of the config file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Save trace setting
 | 
					# Save trace setting
 | 
				
			||||||
C_XTRACE=$(set +o | grep xtrace)
 | 
					INC_META_XTRACE=$(set +o | grep xtrace)
 | 
				
			||||||
set +o xtrace
 | 
					set +o xtrace
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -176,7 +178,7 @@ function merge_config_group {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Restore xtrace
 | 
					# Restore xtrace
 | 
				
			||||||
$C_XTRACE
 | 
					$INC_META_XTRACE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Local variables:
 | 
					# Local variables:
 | 
				
			||||||
# mode: shell-script
 | 
					# mode: shell-script
 | 
				
			||||||
							
								
								
									
										2
									
								
								stack.sh
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								stack.sh
									
									
									
									
									
								
							@@ -92,7 +92,7 @@ LAST_SPINNER_PID=""
 | 
				
			|||||||
source $TOP_DIR/functions
 | 
					source $TOP_DIR/functions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Import config functions
 | 
					# Import config functions
 | 
				
			||||||
source $TOP_DIR/lib/config
 | 
					source $TOP_DIR/inc/meta-config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Import 'public' stack.sh functions
 | 
					# Import 'public' stack.sh functions
 | 
				
			||||||
source $TOP_DIR/lib/stack
 | 
					source $TOP_DIR/lib/stack
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,8 +4,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
TOP=$(cd $(dirname "$0")/.. && pwd)
 | 
					TOP=$(cd $(dirname "$0")/.. && pwd)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Import common functions
 | 
					# Import config functions
 | 
				
			||||||
source $TOP/functions
 | 
					source $TOP/inc/ini-config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo "Testing INI functions"
 | 
					echo "Testing INI functions"
 | 
				
			||||||
@@ -4,11 +4,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
TOP=$(cd $(dirname "$0")/.. && pwd)
 | 
					TOP=$(cd $(dirname "$0")/.. && pwd)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Import common functions
 | 
					 | 
				
			||||||
source $TOP/functions
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Import config functions
 | 
					# Import config functions
 | 
				
			||||||
source $TOP/lib/config
 | 
					source $TOP/inc/ini-config
 | 
				
			||||||
 | 
					source $TOP/inc/meta-config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# check_result() tests and reports the result values
 | 
					# check_result() tests and reports the result values
 | 
				
			||||||
# check_result "actual" "expected"
 | 
					# check_result "actual" "expected"
 | 
				
			||||||
@@ -81,7 +81,7 @@ for f in $(find . -name .git -prune -o \( -type f -name \*.sh -not -path \*shocc
 | 
				
			|||||||
    mkdir -p $FQ_HTML_BUILD/`dirname $f`;
 | 
					    mkdir -p $FQ_HTML_BUILD/`dirname $f`;
 | 
				
			||||||
    $SHOCCO $f > $FQ_HTML_BUILD/$f.html
 | 
					    $SHOCCO $f > $FQ_HTML_BUILD/$f.html
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
for f in $(find functions functions-common lib samples -type f -name \*); do
 | 
					for f in $(find functions functions-common inc lib pkg samples -type f -name \*); do
 | 
				
			||||||
    echo $f
 | 
					    echo $f
 | 
				
			||||||
    FILES+="$f "
 | 
					    FILES+="$f "
 | 
				
			||||||
    mkdir -p $FQ_HTML_BUILD/`dirname $f`;
 | 
					    mkdir -p $FQ_HTML_BUILD/`dirname $f`;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								tox.ini
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								tox.ini
									
									
									
									
									
								
							@@ -20,6 +20,7 @@ commands = bash -c "find {toxinidir}          \
 | 
				
			|||||||
          -name \*.sh -or                     \
 | 
					          -name \*.sh -or                     \
 | 
				
			||||||
          -name \*rc -or                      \
 | 
					          -name \*rc -or                      \
 | 
				
			||||||
          -name functions\* -or               \
 | 
					          -name functions\* -or               \
 | 
				
			||||||
 | 
					          -wholename \*/inc/\*                \ # /inc files and
 | 
				
			||||||
          -wholename \*/lib/\*                \ # /lib files are shell, but
 | 
					          -wholename \*/lib/\*                \ # /lib files are shell, but
 | 
				
			||||||
         \)                                   \ #   have no extension
 | 
					         \)                                   \ #   have no extension
 | 
				
			||||||
         -print0 | xargs -0 bashate -v"
 | 
					         -print0 | xargs -0 bashate -v"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user