From 01944bf7805375c2d2f95d8032343dfba3cf948f Mon Sep 17 00:00:00 2001 From: Jesse Gardner Date: Tue, 13 Jul 2021 22:41:59 -0700 Subject: [PATCH] Added incomplete installer script --- gen_installer.bash | 22 ++ inst_fragment.bash | 50 ++++ qq2clone | 9 +- qq2clone_installer.bash | 586 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 663 insertions(+), 4 deletions(-) create mode 100755 gen_installer.bash create mode 100644 inst_fragment.bash create mode 100755 qq2clone_installer.bash diff --git a/gen_installer.bash b/gen_installer.bash new file mode 100755 index 0000000..3f42c22 --- /dev/null +++ b/gen_installer.bash @@ -0,0 +1,22 @@ +#!/bin/bash + +# Generate an installer script using the most recent version of qq2clone + + +{ [[ -e lv_api_do ]] && [[ -e qq2clone ]] && + [[ -e "inst_fragment.bash" ]] ; } || + { echo "Current working directory does not contain required files" + exit 1; } + +{ + echo "#!/bin/bash" + echo "# This script generated automatically by gen_installer.bash" + echo "" +} > qq2clone_installer.bash +chmod +x qq2clone_installer.bash + +echo -n "archive='" >> qq2clone_installer.bash +tar -cz qq2clone lv_api_do | base64 >> qq2clone_installer.bash +echo "'" >> qq2clone_installer.bash + +cat inst_fragment.bash >> qq2clone_installer.bash diff --git a/inst_fragment.bash b/inst_fragment.bash new file mode 100644 index 0000000..d983a8d --- /dev/null +++ b/inst_fragment.bash @@ -0,0 +1,50 @@ +# Tail end of the installer script, following the tar archive + +[[ -z "$HOME" ]] && + { echo '$HOME must be defined'; exit 1; } + +temp_dir="$(mktemp -d)" || + { echo "Failed to create temp directory"; exit 1; } + +{ + echo "$archive" | base64 -d > "${temp_dir}/archive.tgz" && + cd "$temp_dir" && + tar -xzf archive.tgz +} || { echo "Problem unpacking data to $temp_dir"; exit 1; } + +declare input="" location="${HOME}/storage-qq2clone" +while [[ ! "$input" =~ ^(y|n|Y|N)$ ]]; do + echo "[y/n] Use default storage directory '$location'?" + read -rn1 input +done + +while [[ ! "$input" =~ (y|Y) ]]; do + echo "Type in new location" + read -r location + while [[ ! "$input" =~ ^(y|n|Y|N)$ ]]; do + echo "[y/n] Accept location \'$location\' ?" + read -rn 1 input + done + [[ "$input" =~ (y|Y) ]] && break +done + +{ + mkdir -p "${HOME}/.config" && + echo "$location" > "${HOME}/.config/qq2clone" +} || { echo "Failed to create ${HOME}/.config/qq2clone"; exit 1; } + +{ + mkdir -p "$location" && + touch "$location/qq2clone" && + touch "$location/lv_api_do" +} || { echo "Cannot create/write to '$location'"; exit 1; } + +{ + mv "${temp_dir}/qq2clone" "${location}/" && + mv "${temp_dir}/lv_api_do" "${location}/" +} || { echo "Unexpected filesystem permissions error"; exit 1; } + +# TODO Replace qq2clone first_time_setup +# TODO offer to 'install' by placing in path + +rm -rf "${temp_dir:?}" &>/dev/null diff --git a/qq2clone b/qq2clone index d1e65b3..6f75632 100755 --- a/qq2clone +++ b/qq2clone @@ -269,7 +269,7 @@ depends=( "${depends[@]}" basename chmod date dirname file grep less ls \ exit "$E_depends"; } >&2 for elem in "${depends[@]}"; do - if ! { command -v "$elem"; } &>/dev/null; then + if ! { command -v "$elem"; } &>/dev/null; then ((missing++)) echo "Missing required software: $elem" >&2 fi @@ -277,7 +277,7 @@ done ((missing)) && { echo "This script won't run until you install the listed software" >&2; - exit "$E_depends"; } + exit "$E_depends"; } return 0 } @@ -359,6 +359,7 @@ first_run_setup () # PARAMETERS: None #=========================================================================# { +make_dir "${HOME}/.config" echo "$QQ2_DIR" > "${HOME}/.config/qq2clone" 2>/dev/null # Default locations of key directories @@ -419,8 +420,8 @@ local check read -r check \ < <(sqlite3 "select exists ( select * from CONFIG)") ((check)) || - { echo "Is the database corrupt? No CONFIG table!" 2>/dev/null; - exit "$E_unexpected"; } + { echo "Is the database corrupt? No CONFIG table!"; + exit "$E_unexpected"; } >&2 chmod +x "${QQ2_DIR}/lv_api_do" &>/dev/null || { echo "lv_api_do is missing from $QQ2_DIR, or has bad permissions"; diff --git a/qq2clone_installer.bash b/qq2clone_installer.bash new file mode 100755 index 0000000..7c978e7 --- /dev/null +++ b/qq2clone_installer.bash @@ -0,0 +1,586 @@ +#!/bin/bash +# This script generated automatically by gen_installer.bash + +archive='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 +' +# Tail end of the installer script, following the tar archive + +[[ -z "$HOME" ]] && + { echo '$HOME must be defined'; exit 1; } + +temp_dir="$(mktemp -d)" || + { echo "Failed to create temp directory"; exit 1; } + +{ + echo "$archive" | base64 -d > "${temp_dir}/archive.tgz" && + cd "$temp_dir" && + tar -xzf archive.tgz +} || { echo "Problem unpacking data to $temp_dir"; exit 1; } + +declare input="" location="${HOME}/storage-qq2clone" +while [[ ! "$input" =~ ^(y|n|Y|N)$ ]]; do + echo "[y/n] Use default storage directory '$location'?" + read -rn1 input +done + +while [[ ! "$input" =~ (y|Y) ]]; do + echo "Type in new location" + read -r location + while [[ ! "$input" =~ ^(y|n|Y|N)$ ]]; do + echo "[y/n] Accept location \'$location\' ?" + read -rn 1 input + done + [[ "$input" =~ (y|Y) ]] && break +done + +{ + mkdir -p "${HOME}/.config" && + echo "$location" > "${HOME}/.config/qq2clone" +} || { echo "Failed to create ${HOME}/.config/qq2clone"; exit 1; } + +{ + mkdir -p "$location" && + touch "$location/qq2clone" && + touch "$location/lv_api_do" +} || { echo "Cannot create/write to '$location'"; exit 1; } + +{ + mv "${temp_dir}/qq2clone" "${location}/" && + mv "${temp_dir}/lv_api_do" "${location}/" +} || { echo "Unexpected filesystem permissions error"; exit 1; } + +rm -rf "${temp_dir:?}" &>/dev/null