diff --git a/src/bash-utils.sh b/src/bash-utils.sh index e2f170f..84a4d96 100755 --- a/src/bash-utils.sh +++ b/src/bash-utils.sh @@ -167,20 +167,6 @@ # ===================================================================== -# 引数ありオプションのチェックを実施し、不正なオプション指定の場合、 -# 使用法を表示して終了します。 -# -# @param $1 オプションの引数 -# ===================================================================== -function checkOptionArgs() { - if [[ -z "$1" ]] || [[ "$1" =~ ^-+ ]]; then - usage - exit 1 - fi -} - - -# ===================================================================== # 指定された出力先にファイルがある場合、上書きするかを問い合わせ、 # y が選択された場合、上書きします。 # n が選択された場合、処理を中断します。 @@ -233,6 +219,29 @@ # ===================================================================== +# 指定されたテンプレートファイル中の変数を環境変数の値で置換し、 +# 標準出力します。 +# +# @param $1 テンプレートファイル +# @stdout 変数が置換されたテンプレートの内容 +# @return 0/1 (成功/失敗[テンプレートファイルが無い]) +# ===================================================================== +function template() { + TMPL_FILE=$1 + RET=0 + if [ -f ${TMPL_FILE} ]; then + while read LINE; do + echo $(eval echo "${LINE}") + done < ${TMPL_FILE} + else + RET=1 + fi + return ${RET} +} + + + +# ===================================================================== # デバッグ用ステップ実行 # ${DEBUG} の値が 1 の場合、ポーズします。 # ===================================================================== diff --git a/src/bash-utils.sh b/src/bash-utils.sh index e2f170f..84a4d96 100755 --- a/src/bash-utils.sh +++ b/src/bash-utils.sh @@ -167,20 +167,6 @@ # ===================================================================== -# 引数ありオプションのチェックを実施し、不正なオプション指定の場合、 -# 使用法を表示して終了します。 -# -# @param $1 オプションの引数 -# ===================================================================== -function checkOptionArgs() { - if [[ -z "$1" ]] || [[ "$1" =~ ^-+ ]]; then - usage - exit 1 - fi -} - - -# ===================================================================== # 指定された出力先にファイルがある場合、上書きするかを問い合わせ、 # y が選択された場合、上書きします。 # n が選択された場合、処理を中断します。 @@ -233,6 +219,29 @@ # ===================================================================== +# 指定されたテンプレートファイル中の変数を環境変数の値で置換し、 +# 標準出力します。 +# +# @param $1 テンプレートファイル +# @stdout 変数が置換されたテンプレートの内容 +# @return 0/1 (成功/失敗[テンプレートファイルが無い]) +# ===================================================================== +function template() { + TMPL_FILE=$1 + RET=0 + if [ -f ${TMPL_FILE} ]; then + while read LINE; do + echo $(eval echo "${LINE}") + done < ${TMPL_FILE} + else + RET=1 + fi + return ${RET} +} + + + +# ===================================================================== # デバッグ用ステップ実行 # ${DEBUG} の値が 1 の場合、ポーズします。 # ===================================================================== diff --git a/test/test_bash-utils.sh b/test/test_bash-utils.sh index f90f8fb..581db0a 100755 --- a/test/test_bash-utils.sh +++ b/test/test_bash-utils.sh @@ -203,6 +203,111 @@ } +# ---------------------------------------------------------------------- +# overwrite 単体テスト +# 上書き +# ---------------------------------------------------------------------- +function test_overwrite() +{ + TMP_FILE=$(mktemp /tmp/ut-XXXXXXXXXX.tmp) + echo "A" > ${TMP_FILE} + `echo "y" | overwrite ${TMP_FILE}` + RESULT=$? + assertEquals "ovewrite" "0" "${RESULT}" + rm -f ${TMP_FILE} +} + + +# ---------------------------------------------------------------------- +# overwrite 単体テスト +# 上書き中断 +# ---------------------------------------------------------------------- +function test_overwrite_abort() +{ + TMP_FILE=$(mktemp /tmp/ut-XXXXXXXXXX.tmp) + echo "A" > ${TMP_FILE} + `echo "n" | overwrite ${TMP_FILE}` + RESULT=$? + assertEquals "ovewrite abort" "1" "${RESULT}" + rm -f ${TMP_FILE} +} + + +# ---------------------------------------------------------------------- +# overwrite 単体テスト +# ファイル無 +# ---------------------------------------------------------------------- +function test_overwrite_nofile() +{ + TMP_FILE=$(mktemp /tmp/ut-XXXXXXXXXX.tmp) + rm -f ${TMP_FILE} + `overwrite ${TMP_FILE}` + RESULT=$? + assertEquals "ovewrite nofile" "0" "${RESULT}" +} + + +# ---------------------------------------------------------------------- +# confirmPassword 単体テスト +# ---------------------------------------------------------------------- +function test_confirmPassword() +{ + TMP_FILE=$(mktemp /tmp/ut-XXXXXXXXXX.tmp) + echo -e "ABC\nABC" > ${TMP_FILE} + confirmPassword "X" "Y" < ${TMP_FILE} > /dev/null + RESULT=$? + + assertEquals "confirmPassword" "0" "${RESULT}" + assertEquals "confirmPassword Password=A" "ABC" "${CONFIRM_PASSWORD}" + rm -f ${TMP_FILE} +} + + +# ---------------------------------------------------------------------- +# confirmPassword 単体テスト +# 確認用パスワードと不一致 +# ---------------------------------------------------------------------- +function test_confirmPassword_ng() +{ + TMP_FILE=$(mktemp /tmp/ut-XXXXXXXXXX.tmp) + echo -e "ABC\nXYZ" > ${TMP_FILE} + confirmPassword "X" "Y" < ${TMP_FILE} > /dev/null + RESULT=$? + + assertEquals "confirmPassword" "1" "${RESULT}" + assertEquals "confirmPassword Password=A" "" "${CONFIRM_PASSWORD}" + rm -f ${TMP_FILE} +} + + +# ---------------------------------------------------------------------- +# template 単体テスト +# ---------------------------------------------------------------------- +function test_template() +{ + # template file + TMPL_FILE=$(mktemp /tmp/ut-XXXXXXXXXX.tmp) + echo "ABC DEF \${TMPL_FILE} HIJKLMN" > ${TMPL_FILE} + echo "AAA \${LANG}" >> ${TMPL_FILE} + + # excepted file + EXCEPTED_FILE=$(mktemp /tmp/ut-XXXXXXXXXX.tmp) + echo "ABC DEF ${TMPL_FILE} HIJKLMN" > ${EXCEPTED_FILE} + echo "AAA ${LANG}" >> ${EXCEPTED_FILE} + + RESULT_FILE=$(mktemp /tmp/ut-XXXXXXXXXX.tmp) + template ${TMPL_FILE} > ${RESULT_FILE} + RESULT=$? + + diff ${RESULT_FILE} ${EXCEPTED_FILE} + RESULT=$? + assertEquals "template" "0" "${RESULT}" + + rm -f ${TMPL_FILE} ${RESULT_FILE} ${EXCEPTED_FILE} +} + + + function suite() @@ -220,6 +325,12 @@ suite_addTest test_isContains_noContains suite_addTest test_isContainsRegex suite_addTest test_isContainsRegex_noContains + suite_addTest test_overwrite + suite_addTest test_overwrite_abort + suite_addTest test_overwrite_nofile + suite_addTest test_confirmPassword + suite_addTest test_confirmPassword_ng + suite_addTest test_template } . shunit2