From 3016ccb87daaf5a9d7f437267e12ee6692002e9a Mon Sep 17 00:00:00 2001 From: Sven Ullmann Date: Thu, 2 Mar 2023 00:58:57 +0100 Subject: [PATCH] init --- .etc/config.sh | 44 ++++++++----- .gitignore | 1 + README.md | 44 ++++++++++--- bin/commands/clone_repo.sh | 20 ++++++ bin/commands/create_local_env.sh | 57 +++++++++++++++++ bin/commands/import_db.sh | 11 +++- bin/commands/import_gdpr_data.sh | 50 +++++++++++++++ bin/commands/import_media.sh | 21 +++++-- bin/commands/install_shopware.sh | 97 +++++++++++++++++++++++++++++ bin/commands/make_local_database.sh | 2 + bin/commands/switch_system.sh | 33 ++++++++++ bin/includes/includes.sh | 20 +++--- bin/manager | 50 +++++++-------- shared/.keep | 0 14 files changed, 384 insertions(+), 66 deletions(-) create mode 100755 bin/commands/clone_repo.sh create mode 100755 bin/commands/create_local_env.sh create mode 100755 bin/commands/import_gdpr_data.sh create mode 100755 bin/commands/install_shopware.sh create mode 100644 bin/commands/switch_system.sh create mode 100644 shared/.keep diff --git a/.etc/config.sh b/.etc/config.sh index f7469c0..7f3b90b 100644 --- a/.etc/config.sh +++ b/.etc/config.sh @@ -9,23 +9,18 @@ app_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." &> /dev/null && pwd) project_name='www.domain.de' -shopware_version='6' ### STAGE -stage_use_git='y' # if the stage system is deployed using git - stage_ssh_user='your-user' stage_ssh_domain='your-domain' -stage_ssh_has_key_file='y' stage_ssh_key_file='/path/to/.ssh/key' stage_httpdocs_path='/var/www/vhosts/domain.de/httpdocs' stage_httpdocs_slug='/shopware' # optional slug if you install the software not directly in httpdocs -stage_database_has_socket='n' stage_database_socket='' stage_database_host='localhost' stage_database_port='3306' @@ -41,17 +36,13 @@ stage_database_admin_password='' ### LIVE -live_use_git='y' - live_ssh_user='user' live_ssh_domain='domain.de' -live_ssh_has_key_file='n' live_ssh_key_file='' live_httpdocs_path='/var/www/vhosts/domain.de/httpdocs' live_httpdocs_slug='' -live_database_has_socket='n' live_database_socket='' live_database_host='localhost' live_database_port='3306' @@ -67,10 +58,9 @@ live_database_admin_password='' ### LOCAL STAGE -local_stage_use_git='y' # if you don't work with the git working copy / you can sync local htdocs/. with git repo +local_stage_host='localhost' local_stage_slug='/shopware' -local_stage_database_has_socket='n' local_stage_database_socket='' local_stage_database_host='localhost' local_stage_database_port='3306' @@ -86,7 +76,7 @@ local_stage_database_admin_password='' ### LOCAL LIVE -local_live_use_git='y' +local_live_host='localhost' local_live_slug='/shopware' local_live_database_has_socket='n' @@ -102,7 +92,7 @@ local_live_database_admin_user='' local_live_database_admin_password='' -### SHOPWARE USER +### SHOPWARE local_shopware_user='user' @@ -110,13 +100,27 @@ local_shopware_email='email' local_shopware_firstname='Name' local_shopware_lastname='Lastname' +install_shopware_name="Project" +install_shopware_email="$local_shopware_email" +install_shopware_locale='de_DE' +install_shopware_currency='EUR' +install_shopware_storefront_name="Storefront" +install_shopware_storefront_url='https://localhost/domain.de/www.domain.de' + + +### MAILER + + +local_mailer_url='smtp://localhost:1025' + ### GIT -git_has_ssh_key_file='n' git_ssh_key_file='' git_url='' +git_shopware_path='' + # you can update stage with data from live live_to_stage_live_urls=("https://www.domain.de") @@ -128,12 +132,12 @@ stage_to_local_local_urls=("https://localhost/domain.de/stage.domain.de") # here more complete, copy the live system to local live_to_local_live_urls=( - "http://www.domain.de" "https://www.domain.de" + "http://www.domain.de" ) live_to_local_local_urls=( - "http://localhost/martins-domain.de/www.domain.de" "https://localhost/domain.de/www.domain.de" + "http://localhost/domain.de/www.domain.de" ) @@ -190,6 +194,14 @@ gdpr_tables=( ) +### Media Files + +import_media_files=( + "/files" + "/public/media" +) + + ### POST SCRIPT diff --git a/.gitignore b/.gitignore index bdcd697..8818db1 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,6 @@ backup bin/postscripts etc +shared var !.keep \ No newline at end of file diff --git a/README.md b/README.md index acbdda6..b84ebfc 100644 --- a/README.md +++ b/README.md @@ -18,19 +18,49 @@ Replace {script-name} with the name of the script wich is located in bin/command etc/post_config.sh bin/postscripts/{script_name}.sh -## Commands +## Commands + +Chronologicaly! + +### Clone Repo + + bin/commands/clone_repo.sh + # Usage: clone_repo.sh + +### Install/Update Shopware + + bin/commands/install_shopware.sh + # Usage: install_shopware.sh + +### Create local .env + + bin/commands/create_local_env.sh + # Usage: create_local_env.sh [local_live|local_stage] ### Import Database - Usage: import_db.sh [live|stage] + bin/commands/import_db.sh + # Usage: import_db.sh [live|stage] + +### Make local Database changes + + bin/commands/make_local_database.sh + # Usage: make_local_database.sh [live|stage] ### Make changes to the new local database (URL's and Admin-User) - Usage: make_local_database.sh [live|stage] + bin/commands/make_local_database.sh + # Usage: make_local_database.sh [live|stage] ### Import media files - Usage: import_media.sh [live|stage] /path/to/files - - import_media.sh stage /files - import_media.sh stage /public/media \ No newline at end of file + bin/commands/import_media.sh + # Usage: import_media.sh [live|stage] /path/to/files + # Example: + # import_media.sh stage /files + # import_media.sh stage /public/media + +### Switch the System + + bin/commands/switch_system.sh + # Usage: switch_system [live|stage] \ No newline at end of file diff --git a/bin/commands/clone_repo.sh b/bin/commands/clone_repo.sh new file mode 100755 index 0000000..bd0f108 --- /dev/null +++ b/bin/commands/clone_repo.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +### DO NOT EDIT THIS FILE + +source "$(dirname "${BASH_SOURCE[0]}")/../includes/includes.sh" +app_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." &> /dev/null && pwd) +source "$app_dir/etc/config.sh" + +echo +echoMainTitle "Cloning Repository" + +repo_path="$app_dir/git/$project_name" + +if [ ! -d "$repo_path" ] && [ "$git_url" != "" ] +then + addSSHKey "git" + git clone "$git_url" "$repo_path" +fi + +postScript "$app_dir/bin/postscript/clone_repo.sh" diff --git a/bin/commands/create_local_env.sh b/bin/commands/create_local_env.sh new file mode 100755 index 0000000..2378c56 --- /dev/null +++ b/bin/commands/create_local_env.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +### DO NOT EDIT THIS FILE + +source "$(dirname "${BASH_SOURCE[0]}")/../includes/includes.sh" +app_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." &> /dev/null && pwd) +source "$app_dir/etc/config.sh" + +env=$(getArgument "1" "Usage: create_local_env.sh [local_live|local_stage]" "local_live local_stage" | sed -e 's/local_//') + +echo +echoMainTitle "Create local .env file" +echo + +local_database_socket=$(eval "echo \"\$local_${env}_database_socket\"") +local_database_host=$(eval "echo \"\$local_${env}_database_host\"") +local_database_port=$(eval "echo \"\$local_${env}_database_port\"") +local_database_name=$(eval "echo \"\$local_${env}_database_name\"") +local_database_user=$(eval "echo \"\$local_${env}_database_user\"") +local_database_password=$(eval "echo \"\$local_${env}_database_password\"") +if [ "$local_database_socket" != "" ] +then + db_connection="mysql://$local_database_host?unix_socket=$local_database_socket&dbname=$local_database_name&user=$local_database_user&password=$local_database_password" +else + db_connection="mysql://$local_database_user:$local_database_password@$local_database_host:$local_database_port/$local_database_name" +fi + +app_url=$(eval "echo \"\$${env}_to_local_local_urls[0]\"") + +ssh_user=$(eval "echo \"\$${env}_ssh_user\"") +ssh_domain=$(eval "echo \"\$${env}_ssh_domain\"") +ssh_httpdocs_path=$(eval "echo \"\$${env}_ssh_httpdocs_path\"") +ssh_httpdocs_slug=$(eval "echo \"\$${env}_ssh_httpdocs_slug\"") + +addSSHKey "$env" +app_secret=$(ssh "$ssh_user"@"$ssh_domain" "cat \"$ssh_httpdocs_path$ssh_httpdocs_slug/.env\"" | sed -i -r 's/^APP_SECRET=\(.*\)\$/\\1/') +instance_id=$(ssh "$ssh_user"@"$ssh_domain" "cat \"$ssh_httpdocs_path$ssh_httpdocs_slug/.env\"" | sed -i -r 's/^INSTANCE_ID=\(.*\)\$/\\1/') + +host=$(eval "echo \"\$local_${env}_host}\"") + +path="$app_dir/git/$project_name" + +cat <<- EOF > "$path/.env" +APP_ENV=dev +APP_SECRET=$app_secret +APP_URL=$app_url +TRUSTED_HOSTS=$host +MAILER_URL=$local_mailer_url +INSTANCE_ID=$instance_id +DATABASE_URL=$db_connection +COMPOSER_HOME=vendor +BLUE_GREEN_DEPLOYMENT=1 +SHOPWARE_HTTP_CACHE_ENABLED=0 +SHOPWARE_HTTP_DEFAULT_TTL=0 +EOF + +postScript "$app_dir/bin/postscripts/create_local_env.sh" \ No newline at end of file diff --git a/bin/commands/import_db.sh b/bin/commands/import_db.sh index 837f55f..4678ba0 100755 --- a/bin/commands/import_db.sh +++ b/bin/commands/import_db.sh @@ -1,11 +1,16 @@ #!/bin/bash +### DO NOT EDIT THIS FILE + source "$(dirname "${BASH_SOURCE[0]}")/../includes/includes.sh" app_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." &> /dev/null && pwd) source "$app_dir/etc/config.sh" -usage="Usage: import_db.sh [live|stage]" -env=$(getArgument $1 "$usage" "live stage") +env=$(getArgument "$1" "Usage: import_db.sh [live|stage]" "live stage") + +echo +echoMainTitle "Import Database from $env to local ($env)" + currentDate=$(date '+%Y-%m-%d_%H:%M:%S') addSSHKey "$env" @@ -69,6 +74,7 @@ echo "Post Scripts ..." postScript "$app_dir/bin/postscripts/import_db.sh" "$app_dir/bin/commands/make_local_database.sh" "$env" +"$app_dir/bin/commands/create_local_env.sh" "local_$env" echo "Cleanup ..." @@ -76,4 +82,3 @@ rm "$app_dir/var/tmp/drop_local_$env.sql" rm "$app_dir/var/tmp/${env}_structure.sql" rm "$app_dir/var/tmp/${env}_data.sql" -echo diff --git a/bin/commands/import_gdpr_data.sh b/bin/commands/import_gdpr_data.sh new file mode 100755 index 0000000..6284b41 --- /dev/null +++ b/bin/commands/import_gdpr_data.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +### DO NOT EDIT THIS FILE + +source "$(dirname "${BASH_SOURCE[0]}")/../includes/includes.sh" +app_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." &> /dev/null && pwd) +source "$app_dir/etc/config.sh" + +env=$(getArgument "1" "Usage: import_gdpr_data.sh [live|stage]" "live stage") + +echo +echoMainTitle "Fetch GDPR Data from $env" + +currentDate=$(date '+%Y-%m-%d_%H:%M:%S') + +addSSHKey "$env" +ssh_user="$(eval "echo \$${env}_ssh_user")" +ssh_domain="$(eval "echo \$${env}_ssh_domain")" +includedTables=$(buildIncludedTables "${gdprTables[@]}" +database_name=$(eval "echo \$${env}_database_name") +local_database_name=$(eval "echo \$local_${env}_database_name") + +echo "Fetching Data ..." +scp "$app_dir/etc/${env}.my.cnf" "$ssh_user"@"$ssh_domain":"~/${env}.my.cnf" +ssh "$ssh_user"@"$ssh_domain" "mysqldump --defaults-extra-file=~/${env}.my.cnf --no-tablespaces --no-create-info --skip-triggers \ + "$database_name" "${includedTables[@]}" | LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | gzip -9 > \ + ~/${env}_gdpr_data.sql.gz" +scp "$ssh_user"@"$ssh_domain":"~/${env}_gdpr_data.sql.gz" "$app_dir/var/tmp/${env}_gdpr_data.sql.gz" +ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}_gdpr_data.sql.gz" +ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}.my.cnf" + +echo "Backup Data ..." + +cp "$app_dir/var/tmp/${env}_gdpr_data.sql.gz" "$app_dir/backup/database/${env}/${currentDate}_${env}_gdpr_data.sql.gz" + +echo "Uncompress Data ..." + +gzip -d "$app_dir/var/tmp/${env}_gdpr_data.sql.gz" + +echo "Import Data ..." + +mysql --defaults-extra-file="$app_dir/etc/local.my.cnf" -D "$local_database_name" < "$app_dir/var/tmp/${env}_gdpr_data.sql" + +echo "Post Scripts ..." + +postScript "$app_dir/bin/postscripts/import_gdpr_data.sh" ] + +echo "Cleanup ..." + +rm "$app_dir/var/tmp/${env}_gdpr_data.sql" diff --git a/bin/commands/import_media.sh b/bin/commands/import_media.sh index f14c8bb..8ddbda9 100755 --- a/bin/commands/import_media.sh +++ b/bin/commands/import_media.sh @@ -1,26 +1,37 @@ #!/bin/bash +### DO NOT EDIT THIS FILE + source "$(dirname "${BASH_SOURCE[0]}")/../includes/includes.sh" app_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." &> /dev/null && pwd) source "$app_dir/etc/config.sh" env=$(getArgument "$1" "Usage: import_media.sh [live|stage] /path/to/files" "live stage") -filepath=$(getArgument "$2" "Usage: import_media.sh [live|stage] /path/to/files" "/files /public/media") +filepath=$(getArgument "$2" "Usage: import_media.sh [live|stage] /path/to/files" true) + +echo +echoMainTitle "Fetching $filepath files from $env" + addSSHKey "$env" ssh_user="$(eval "echo \$${env}_ssh_user")" ssh_domain="$(eval "echo \$${env}_ssh_domain")" slug="$(eval "echo \"\$local_${env}_slug\"")" source="$(eval "echo \"\$${env}_httpdocs_path\$${env}_httpdocs_slug\$filepath/.\"")" -target="$app_dir/git/${project_name}${slug}${filepath}/." - -echo -echoMainTitle "Fetching $filepath files from $env" +target="$app_dir/shared/$project_name/$env$filepath" +link="$app_dir/git/${project_name}${slug}${filepath}/." echo echo "Fetch Files ..." rsync -auvzqLK --delete "$ssh_user"@"$ssh_domain":"$source" "$target" +if [ -f "$link" ] +then + rm -rf "$link" +fi + +ln -s "$target" "$link" + postScript "$app_dir/bin/postscripts/import_media.sh" echo \ No newline at end of file diff --git a/bin/commands/install_shopware.sh b/bin/commands/install_shopware.sh new file mode 100755 index 0000000..cab7fd5 --- /dev/null +++ b/bin/commands/install_shopware.sh @@ -0,0 +1,97 @@ +#!/bin/bash + +### DO NOT EDIT THIS FILE + +source "$(dirname "${BASH_SOURCE[0]}")/../includes/includes.sh" +app_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." &> /dev/null && pwd) +source "$app_dir/etc/config.sh" + +updatemode=0 + +echo +echoMainTitle "Shopware installer/updater" + +path="$app_dir/git/$project_name$git_shopware_path" + +if [ -f "$path/install.lock" ] +then + updatemode=1 + echo "Update mode" +else + echo "Install mode" +fi + +if [ "$updatemode" == "0" ] +then + echo + echoSequenzeTitle "Wich database to use?" + echo + echoSelect "[live] " "Local live database" + echoSelect "[stage]" "Local stage database" + echo + env=$(readConsole "Select: " "Invalid selection" "live stage") +fi + +### Fetch sources + +echo +echo "Fetch sources ..." + +wget -q --show-progress -O "$app_dir/var/tmp/sdp.html" "https://www.shopware.com/de/download/" + +if [ "$updatemode" == "0" ] +then + download_url=$(grep -Po '(?<=href=")https://releases.shopware.com/sw6/install_[^"]*' "$app_dir/var/tmp/sdp.html") + filename="shopware_install.zip" +else + download_url=$(grep -Po '(?<=href=")https://releases.shopware.com/sw6/update_[^"]*' "$app_dir/var/tmp/sdp.html") + filename="shopware_update.zip" +fi + +wget -q --show-progress -O "$app_dir/var/tmp/$filename" "$download_url" + +echo "Install files ..." + +unzip -oqq "$app_dir/var/tmp/$filename" -d "$path" + +local_database_socket=$(eval "echo \"\$local_${env}_database_socket\"") +local_database_host=$(eval "echo \"\$local_${env}_database_host\"") +local_database_port=$(eval "echo \"\$local_${env}_database_port\"") +local_database_name=$(eval "echo \"\$local_${env}_database_name\"") +local_database_user=$(eval "echo \"\$local_${env}_database_user\"") +local_database_password=$(eval "echo \"\$local_${env}_database_password\"") + +if [ "$local_database_socket" != "" ] +then + database_url="mysql:unix_socket=$local_database_socket;dbname=$local_database_name;user=$local_database_user;password=$local_database_password" +else + database_url="mysql://$local_database_user:$local_database_password@$local_database_host:$local_database_port/$local_database_name" +fi +export DATABASE_URL="$database_url" + +cwd=$(pwd) +cd "$path" + +if [ "$updatemode" == "0" ] +then + + echo "Setup Shopware ..." + cp "$app_dir/etc/.env.local" "$path/.env" + bin/console system:install --shop-name="$install_shopware_name" --shop-email="$install_shopware_email" \ + --shop-locale="$install_shopware_locale" --shop-currency="$install_shopware_currency" --no-interaction --env="dev" + bin/console sales-channel:create:storefront --name="$install_shopware_storefront_name" --url="$install_install_shopware_storefront_url" --no-interaction --quiet + bin/console user:create -a --firstName="$local_shopware_user" --lastName="$local_shopware_firstname" --email="$local_shopware_email" "$local_shopware_user" + +else + echo "Prepare Shopware setup ..." + bin/console --quiet --no-interaction --env="dev" system:update:prepare + + "$path/public/recovery/update/index.php" +fi + +cd "$cwd" + +postScript "$app_dir/bin/postscripts/install_shopware.sh" + +rm "$app_dir/var/tmp/sdp.html" +rm "$app_dir/var/tmp/$filename" diff --git a/bin/commands/make_local_database.sh b/bin/commands/make_local_database.sh index c681681..1051828 100755 --- a/bin/commands/make_local_database.sh +++ b/bin/commands/make_local_database.sh @@ -1,5 +1,7 @@ #!/bin/bash +### DO NOT EDIT THIS FILE + source "$(dirname "${BASH_SOURCE[0]}")/../includes/includes.sh" app_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." &> /dev/null && pwd) source "$app_dir/etc/config.sh" diff --git a/bin/commands/switch_system.sh b/bin/commands/switch_system.sh new file mode 100644 index 0000000..cb0bf61 --- /dev/null +++ b/bin/commands/switch_system.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +### DO NOT EDIT THIS FILE + +source "$(dirname "${BASH_SOURCE[0]}")/../includes/includes.sh" +app_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." &> /dev/null && pwd) +source "$app_dir/etc/config.sh" + +env=$(getArgument "$1" "Usage: switch_system.sh [live|stage] [true|false: UpdateDatabase]" "live stage") +update_database_flag=$(getArgument "$2" "Usage: switch_system.sh [live|stage] [true|false: UpdateDatabase]" "true false") + +echoMainTitle "Switch to local_$env System" + +shopware_check_install="$app_dir/git/$project_name$git_shopware_path/src" +if [ ! -d "$shopware_check_install" ] +then + echo + echoError "No Shopware installed, try bin/commands/install_shopware.sh" + exit +fi + +if [ "$update_database_flag" == true ] +then + "$app_dir/bin/commands/import_db.sh" "$env" + "$app_dir/bin/commands/create_local_env.sh" "local_$env" + "$app_dir/bin/commands/make_local_database.sh" "$env" +fi + +for path in "${import_media_files[@]}" +do + "$app_dir/bin/commands/import_media.sh" "$env" "$path" +done + diff --git a/bin/includes/includes.sh b/bin/includes/includes.sh index bc2bc0c..221611d 100644 --- a/bin/includes/includes.sh +++ b/bin/includes/includes.sh @@ -23,9 +23,9 @@ then } function getArgument { + local var=$1 local errmsg=$2 local allow=${3:-false} - local var=$1 if [ "$allow" != false ] && [ "$(isAllowed "$var" "$allow")" == false ] then @@ -68,8 +68,15 @@ then local message="$1" local errmsg="$2" local allow=${3:-false} + local default=${4:-""} + + if [ "$default" != "" ] + then + message="$message [d:$default]" + fi read -p "$message" var + var=${var:-$default} if [ "$(isAllowed "$var" "$allow")" == false ] then @@ -82,21 +89,19 @@ then function addSSHKey { local env=$(getArgument "$1" "Usage: addSSHKey [live|stage|git]" "live stage git") - local ssh_key_file="$app_dir/.ssh/$env" - local has_ssh_key_file=$(eval "echo \"\$${env}_has_ssh_key_file\"") + local ssh_key_file=$(eval "echo \"\$${env}_has_ssh_key_file\"") - if [ "$has_ssh_key_file" == "y" ] + if [ "$ssh_key_file" != "" ] then copySSHKeys "$env" else installSSHKey "$env" fi - ssh-add "$ssh_key_file" + ssh-add "$app_dir/.ssh/$env" } function copySSHKeys { local env=$(getArgument "$1" "Usage: copySSHKeys [live|stage|git]" "live stage git") - local has=$(eval "echo \$${env}_has_ssk_key_file") local source=$(eval "echo \$${env}_ssh_key_file") local target="$app_dir/.ssh/$env" @@ -120,12 +125,11 @@ then function installSSHKey { local env=$(getArgument "$1" "Usage: installSSHKey [live|stage|git]" "live stage git") - local has=$(eval "echo \"\$${env}_has_ssh_key_file\"") local file=$(eval "echo \"\$${env}_ssh_key_file\"") local user=$(eval "echo \"\$${env}_ssh_user\"") local domain=$(eval "echo \"\$${env}_ssh_domain\"") - if [ "$has" == "n" ] && [ ! -f "$app_dir/.ssh/$env"] + if [ "$file" == "" ] && [ ! -f "$app_dir/.ssh/$env" ] then ssh-keygen -b 4096 -t rsa -f "$app_dir/.ssh/$env" -q -N "" chmod 0600 "$app_dir/.ssh/$env" diff --git a/bin/manager b/bin/manager index 32f2c6b..c39b831 100755 --- a/bin/manager +++ b/bin/manager @@ -12,13 +12,11 @@ echoMainTitle "What do you want to do today?" echo echoSelect "[1]" "Databaseupdate" echoSelect "[2]" "Fetching Files" -echoSelect "[3]" "Fetching Public Media" echo -main_selection=$(readConsole "Select: " "Invalid selection" "1 2 3") +main_selection=$(readConsole "Select: " "Invalid selection" "1 2") words=( 'databaseupdate' 'files' - 'media' ) for i in "${!words[@]}" @@ -64,41 +62,39 @@ then echo echoSelect "[live] " "Live" echoSelect "[stage] " "Stage" - echo env=$(readConsole "Select: " "Invalid selection" "live stage") + echoSubTitle "Select a directory:" echo - confirm=$(readConsole "You want to copy the /files from $env to local ($env)? [y,n]: " "Invalid selection" "y n") - - if [ "$confirm" == "y" ] + echoSelect "[1] " "/files" + echoSelect "[2] " "/public/media" + echoSelect "[3] " ".. custom .." + files_selection=$(readConsole "Select: " "Invalid selection" "1 2 3") + values=( + "/files" + "/public/media" + ) + if [ "$files_selection" -gt "${#values[@]}" ] then - source "$app_dir/bin/commands/import_media.sh" "$env" "/files" + files_selection=$(readConsole "Please give a subpath to the shopware root on $env: ", "Invalid selection", true) else - echo "Aborted" + for i in "${!values[@]}" + do + ((cur=i+1)) + if [ "$cur" == "$files_selection" ] + then + files_selection="${values[$i]}" + fi + done fi -fi -if [ "$main_selection" == "media" ] -then - echo - echoSubTitle "Fetching public Media" - echo - echo "From Environment:" echo - echoSelect "[live] " "Live" - echoSelect "[stage] " "Stage" - echo - env=$(readConsole "Select: " "Invalid selection" "live stage") - - echo - confirm=$(readConsole "You want to copy the /public/media from $env to local ($env? [y,n]: " "Invalid selection" "y n") + confirm=$(readConsole "You want to copy the /files from $env to local ($env)? [y,n]: " "Invalid selection" "y n") if [ "$confirm" == "y" ] then - source "$app_dir/bin/commands/import_media.sh" "$env" "/public/media" + source "$app_dir/bin/commands/import_media.sh" "$env" "$files_selection" else echo "Aborted" fi -fi - -echo \ No newline at end of file +fi \ No newline at end of file diff --git a/shared/.keep b/shared/.keep new file mode 100644 index 0000000..e69de29