Added incomplete installer script

This commit is contained in:
Jesse Gardner 2021-07-13 22:41:59 -07:00
parent aac58857e5
commit 01944bf780
4 changed files with 663 additions and 4 deletions

22
gen_installer.bash Executable file
View File

@ -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

50
inst_fragment.bash Normal file
View File

@ -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

View File

@ -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";

586
qq2clone_installer.bash Executable file
View File

@ -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