Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Refactor bootstrap and init processes using arrays
Tom Scavo committed May 10, 2017
1 parent 12d5184 commit a609fee
Showing 2 changed files with 132 additions and 66 deletions.
97 changes: 66 additions & 31 deletions bin/process_export_aggregate.sh
@@ -25,8 +25,10 @@ display_help () {
This script produces the following files from the InCommon
export aggregate:
${out_filenames[1]}
${out_filenames[2]}
$( printf " %s\n" ${out_filenames[*]} )
The files will be written to the output directory specified on
the command line.
The script is intended to be run as a cron job. It can (and
should) be run often, to pick up the latest changes to metadata.
@@ -58,6 +60,28 @@ display_help () {
All of the above environment variables are REQUIRED
except LOG_LEVEL, which defaults to LOG_LEVEL=3.
The following environment variables are REQUIRED:
$( printf " %s\n" ${env_vars[*]} )
The following directories MUST exist:
$( printf " %s\n" ${dir_paths[*]} )
The following files MUST exist:
$( printf " %s\n" $LOG_FILE )
CONFIGURATION
The following source library files MUST be installed in LIB_DIR:
$( printf " %s\n" ${lib_filenames[*]} )
The following XSL scripts MUST be installed in LIB_DIR:
$( printf " %s\n" ${xsl_filenames[*]} )
EXAMPLES
\$ out_dir=/home/htdocs/www.incommonfederation.org/federation/metadata/
@@ -71,29 +95,35 @@ HELP_MSG

script_name=${0##*/} # equivalent to basename $0

# required directories
env_vars="LIB_DIR
CACHE_DIR
TMPDIR"
# required environment variables
env_vars[1]="LIB_DIR"
env_vars[2]="CACHE_DIR"
env_vars[3]="TMPDIR"
env_vars[4]="LOG_FILE"

# check required directories
for env_var in $env_vars; do
# check environment variables
for env_var in ${env_vars[*]}; do
eval "env_var_val=\${$env_var}"
if [ -z "$env_var_val" ]; then
echo "ERROR: $script_name requires env var $env_var" >&2
exit 2
fi
if [ ! -d "$env_var_val" ]; then
echo "ERROR: $script_name: directory does not exist: $env_var_val" >&2
done

# required directories
dir_paths[1]="$LIB_DIR"
dir_paths[2]="$CACHE_DIR"
dir_paths[3]="$TMPDIR"

# check required directories
for dir_path in ${dir_paths[*]}; do
if [ ! -d "$dir_path" ]; then
echo "ERROR: $script_name: directory does not exist: $dir_path" >&2
exit 2
fi
done

# check the log file
if [ -z "$LOG_FILE" ]; then
echo "ERROR: $script_name requires env var LOG_FILE" >&2
exit 2
fi
# devices such as /dev/tty and /dev/null are allowed
if [ ! -f "$LOG_FILE" ] && [[ $LOG_FILE != /dev/* ]]; then
echo "ERROR: $script_name: file does not exist: $LOG_FILE" >&2
@@ -105,14 +135,32 @@ if [ -z "$LOG_LEVEL" ]; then
LOG_LEVEL=3
fi

# library filenames (always list core_lib first)
LIB_FILENAMES="core_lib.sh
http_tools.sh"
# source lib filenames
lib_filenames[1]="core_lib.sh"
lib_filenames[2]="http_tools.sh"

# check lib files
for lib_filename in ${lib_filenames[*]}; do
lib_file="$LIB_DIR/$lib_filename"
if [ ! -f "$lib_file" ]; then
echo "ERROR: $script_name: lib file does not exist: $lib_file" >&2
exit 2
fi
done

# XSL filenames
xsl_filenames[1]="list_all_IdPs_csv.xsl"
xsl_filenames[2]="list_all_SPs_csv.xsl"

# check XSL files
for i in ${!xsl_filenames[*]}; do
xsl_files[$i]=$LIB_DIR/${xsl_filenames[$i]}
if [ ! -f "${xsl_files[$i]}" ]; then
echo "ERROR: $script_name: lib file does not exist: ${xsl_files[$i]}" >&2
exit 2
fi
done

# output filenames
out_filenames[1]="all-idps-exported.csv"
out_filenames[2]="all-sps-exported.csv"
@@ -172,12 +220,8 @@ fi
#######################################################################

# source lib files
for lib_filename in $LIB_FILENAMES; do
for lib_filename in ${lib_filenames[*]}; do
lib_file="$LIB_DIR/$lib_filename"
if [ ! -f "$lib_file" ]; then
echo "ERROR: $script_name: lib file does not exist: $lib_file" >&2
exit 2
fi
source "$lib_file"
status_code=$?
if [ $status_code -ne 0 ]; then
@@ -186,15 +230,6 @@ for lib_filename in $LIB_FILENAMES; do
fi
done

# XSL stylesheets must exist
for i in ${!xsl_filenames[*]}; do
xsl_files[$i]=$LIB_DIR/${xsl_filenames[$i]}
if [ ! -f "${xsl_files[$i]}" ]; then
echo "ERROR: $script_name: lib file does not exist: ${xsl_files[$i]}" >&2
exit 2
fi
done

# create a temporary subdirectory
tmp_dir="${TMPDIR%%/}/${script_name%%.*}_$$"
/bin/mkdir "$tmp_dir"
101 changes: 66 additions & 35 deletions bin/process_main_aggregate.sh
@@ -25,12 +25,10 @@ display_help () {
This script produces the following files from the InCommon
main aggregate:
${out_filenames[1]}
${out_filenames[2]}
${out_filenames[3]}
${out_filenames[4]}
${out_filenames[5]}
${out_filenames[6]}
$( printf " %s\n" ${out_filenames[*]} )
The files will be written to the output directory specified on
the command line.
The script is intended to be run as a cron job. It can (and
should) be run often, to pick up the latest changes to metadata.
@@ -62,6 +60,28 @@ display_help () {
All of the above environment variables are REQUIRED
except LOG_LEVEL, which defaults to LOG_LEVEL=3.
The following environment variables are REQUIRED:
$( printf " %s\n" ${env_vars[*]} )
The following directories MUST exist:
$( printf " %s\n" ${dir_paths[*]} )
The following files MUST exist:
$( printf " %s\n" $LOG_FILE )
CONFIGURATION
The following source library files MUST be installed in LIB_DIR:
$( printf " %s\n" ${lib_filenames[*]} )
The following XSL scripts MUST be installed in LIB_DIR:
$( printf " %s\n" ${xsl_filenames[*]} )
EXAMPLES
\$ out_dir=/home/htdocs/www.incommonfederation.org/federation/metadata/
@@ -75,29 +95,35 @@ HELP_MSG

script_name=${0##*/} # equivalent to basename $0

# required directories
env_vars="LIB_DIR
CACHE_DIR
TMPDIR"
# required environment variables
env_vars[1]="LIB_DIR"
env_vars[2]="CACHE_DIR"
env_vars[3]="TMPDIR"
env_vars[4]="LOG_FILE"

# check required directories
for env_var in $env_vars; do
# check environment variables
for env_var in ${env_vars[*]}; do
eval "env_var_val=\${$env_var}"
if [ -z "$env_var_val" ]; then
echo "ERROR: $script_name requires env var $env_var" >&2
exit 2
fi
if [ ! -d "$env_var_val" ]; then
echo "ERROR: $script_name: directory does not exist: $env_var_val" >&2
done

# required directories
dir_paths[1]="$LIB_DIR"
dir_paths[2]="$CACHE_DIR"
dir_paths[3]="$TMPDIR"

# check required directories
for dir_path in ${dir_paths[*]}; do
if [ ! -d "$dir_path" ]; then
echo "ERROR: $script_name: directory does not exist: $dir_path" >&2
exit 2
fi
done

# check the log file
if [ -z "$LOG_FILE" ]; then
echo "ERROR: $script_name requires env var LOG_FILE" >&2
exit 2
fi
# devices such as /dev/tty and /dev/null are allowed
if [ ! -f "$LOG_FILE" ] && [[ $LOG_FILE != /dev/* ]]; then
echo "ERROR: $script_name: file does not exist: $LOG_FILE" >&2
@@ -109,9 +135,18 @@ if [ -z "$LOG_LEVEL" ]; then
LOG_LEVEL=3
fi

# library filenames (always list core_lib first)
LIB_FILENAMES="core_lib.sh
http_tools.sh"
# source lib filenames
lib_filenames[1]="core_lib.sh"
lib_filenames[2]="http_tools.sh"

# check lib files
for lib_filename in ${lib_filenames[*]}; do
lib_file="$LIB_DIR/$lib_filename"
if [ ! -f "$lib_file" ]; then
echo "ERROR: $script_name: lib file does not exist: $lib_file" >&2
exit 2
fi
done

# XSL filenames
xsl_filenames[1]="list_all_IdP_DisplayNames_csv.xsl"
@@ -121,6 +156,15 @@ xsl_filenames[4]="security_contacts_legacy_list_csv.xsl"
xsl_filenames[5]="security_contacts_summary_json.xsl"
xsl_filenames[6]="security_contacts_summary_local_json.xsl"

# check XSL files
for i in ${!xsl_filenames[*]}; do
xsl_files[$i]=$LIB_DIR/${xsl_filenames[$i]}
if [ ! -f "${xsl_files[$i]}" ]; then
echo "ERROR: $script_name: lib file does not exist: ${xsl_files[$i]}" >&2
exit 2
fi
done

# output filenames
out_filenames[1]="all-idp-displaynames.csv"
out_filenames[2]="all-idps-rands.csv"
@@ -184,12 +228,8 @@ fi
#######################################################################

# source lib files
for lib_filename in $LIB_FILENAMES; do
for lib_filename in ${lib_filenames[*]}; do
lib_file="$LIB_DIR/$lib_filename"
if [ ! -f "$lib_file" ]; then
echo "ERROR: $script_name: lib file does not exist: $lib_file" >&2
exit 2
fi
source "$lib_file"
status_code=$?
if [ $status_code -ne 0 ]; then
@@ -198,15 +238,6 @@ for lib_filename in $LIB_FILENAMES; do
fi
done

# XSL stylesheets must exist
for i in ${!xsl_filenames[*]}; do
xsl_files[$i]=$LIB_DIR/${xsl_filenames[$i]}
if [ ! -f "${xsl_files[$i]}" ]; then
echo "ERROR: $script_name: lib file does not exist: ${xsl_files[$i]}" >&2
exit 2
fi
done

# create a temporary subdirectory
tmp_dir="${TMPDIR%%/}/${script_name%%.*}_$$"
/bin/mkdir "$tmp_dir"

0 comments on commit a609fee

Please sign in to comment.