Sven Ullmann
2 years ago
53 changed files with 1867 additions and 760 deletions
-
211.etc/config.sh
-
4.etc/live.my.cnf
-
9.etc/local.my.cnf
-
4.etc/stage.my.cnf
-
6.giignore
-
8.gitignore
-
0.trash/.keep
-
10bin/bak/commands/import_media.sh
-
14bin/bak/commands/install_remote_system.sh
-
28bin/bak/commands/install_shopware.sh
-
0bin/bak/commands/make_local_database.sh
-
20bin/bak/commands/switch_local_env.sh
-
104bin/bak/functions/backup_db.sh
-
46bin/bak/functions/clone_repo.sh
-
51bin/bak/functions/create_database.sh
-
45bin/bak/functions/create_directories.sh
-
30bin/bak/functions/deploy.sh
-
38bin/bak/functions/fetch_files.sh
-
58bin/bak/functions/import_db.sh
-
28bin/bak/functions/link_latest_db.sh
-
84bin/bak/functions/write_shopware_env_file.sh
-
20bin/commands/clone_repo.sh
-
158bin/commands/create-project
-
57bin/commands/create_local_env.sh
-
84bin/commands/import_db.sh
-
50bin/commands/import_gdpr_data.sh
-
53bin/commands/install-project-manager
-
50bin/commands/list-projects
-
122bin/commands/remove-project
-
33bin/commands/switch_system.sh
-
215bin/includes/includes
-
166bin/includes/includes.sh
-
15bin/includes/project_header
-
100bin/manager
-
0bin/postscripts/plugins/.keep
-
149bin/project-manager
-
0data/.keep
-
35etc/.config_template
-
0etc/.keep
-
5etc/.project_manager_config_template
-
5etc/.projects_template
-
0git/.keep
-
49plugins/db/etc/.config_template
-
60plugins/git/commands/clone
-
9plugins/git/etc/.config_template
-
13plugins/git/includes/includes
-
88plugins/shopware/etc/.config_template
-
47plugins/shopware/includes/includes
-
70plugins/ssh/commands/add-key
-
15plugins/ssh/etc/.config_template
-
161plugins/ssh/includes/includes
-
0shared/.keep
-
0var/tmp/.keep
@ -1,211 +0,0 @@ |
|||
#!/bin/bash |
|||
|
|||
### DONT OVERWRITE THIS FILE |
|||
|
|||
app_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." &> /dev/null && pwd) |
|||
|
|||
|
|||
### GENERAL |
|||
|
|||
|
|||
project_name='www.domain.de' |
|||
|
|||
|
|||
### STAGE |
|||
|
|||
|
|||
stage_ssh_user='your-user' |
|||
stage_ssh_domain='your-domain' |
|||
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_socket='' |
|||
stage_database_host='localhost' |
|||
stage_database_port='3306' |
|||
stage_database_name='database_name' |
|||
stage_database_user='database_user' |
|||
stage_database_password='database_password' |
|||
|
|||
# only needed if you want to create a database |
|||
stage_database_admin_user='' |
|||
stage_database_admin_password='' |
|||
|
|||
|
|||
### LIVE |
|||
|
|||
|
|||
live_ssh_user='user' |
|||
live_ssh_domain='domain.de' |
|||
live_ssh_key_file='' |
|||
|
|||
live_httpdocs_path='/var/www/vhosts/domain.de/httpdocs' |
|||
live_httpdocs_slug='' |
|||
|
|||
live_database_socket='' |
|||
live_database_host='localhost' |
|||
live_database_port='3306' |
|||
live_database_name='name' |
|||
live_database_user='user' |
|||
live_database_password='password' |
|||
|
|||
# only needed if you want to create a database |
|||
live_database_admin_user='' |
|||
live_database_admin_password='' |
|||
|
|||
|
|||
### LOCAL STAGE |
|||
|
|||
|
|||
local_stage_host='localhost' |
|||
local_stage_slug='/shopware' |
|||
|
|||
local_stage_database_socket='' |
|||
local_stage_database_host='localhost' |
|||
local_stage_database_port='3306' |
|||
local_stage_database_name='name_stage' |
|||
local_stage_database_user='user' |
|||
local_stage_database_password='password' |
|||
|
|||
# only needed if you can't create database and want to create a database |
|||
local_stage_database_admin_user='' |
|||
local_stage_database_admin_password='' |
|||
|
|||
|
|||
### LOCAL LIVE |
|||
|
|||
|
|||
local_live_host='localhost' |
|||
local_live_slug='/shopware' |
|||
|
|||
local_live_database_has_socket='n' |
|||
local_live_database_socket='' |
|||
local_live_database_host='localhost' |
|||
local_live_database_port='3306' |
|||
local_live_database_name='name_live' |
|||
local_live_database_user='user' |
|||
local_live_database_password='password' |
|||
|
|||
# only needed if you can't create database and want to create a database |
|||
local_live_database_admin_user='' |
|||
local_live_database_admin_password='' |
|||
|
|||
|
|||
### SHOPWARE |
|||
|
|||
|
|||
local_shopware_user='user' |
|||
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_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") |
|||
live_to_stage_stage_urls=("https://stage.domain.de") |
|||
|
|||
# if you copy the stage state to local |
|||
stage_to_local_stage_urls=("https://stage.domain.de") |
|||
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=( |
|||
"https://www.domain.de" |
|||
"http://www.domain.de" |
|||
) |
|||
live_to_local_local_urls=( |
|||
"https://localhost/domain.de/www.domain.de" |
|||
"http://localhost/domain.de/www.domain.de" |
|||
) |
|||
|
|||
|
|||
### GDPR SHOPWARE 6 TABLES |
|||
|
|||
|
|||
gdpr_tables=( |
|||
acl_user_role |
|||
cart |
|||
customer |
|||
customer_address |
|||
customer_recovery |
|||
customer_tag |
|||
customer_wishlist |
|||
customer_wishlist_product |
|||
elasticsearch_index_task |
|||
import_export_log |
|||
integration |
|||
integration_role |
|||
log_entry |
|||
message_queue_stats |
|||
newsletter_recipient |
|||
newsletter_recipient_tag |
|||
order |
|||
order_address |
|||
order_customer |
|||
order_delivery |
|||
order_delivery_position |
|||
order_line_item |
|||
order_tag |
|||
order_transaction |
|||
product_export |
|||
product_review |
|||
promotion_persona_customer |
|||
refresh_token |
|||
sales_channel_api_context |
|||
state_machine_history |
|||
user |
|||
user_access_key |
|||
user_config |
|||
user_recovery |
|||
version |
|||
version_commit |
|||
version_commit_data |
|||
klarna_payment_request_log |
|||
payone_payment_card |
|||
payone_payment_mandate |
|||
payone_payment_redirect |
|||
unzer_payment_payment_device |
|||
unzer_payment_transfer_info |
|||
enqeueue |
|||
product_keyword_dictionary |
|||
product_search_keyword |
|||
) |
|||
|
|||
|
|||
### Media Files |
|||
|
|||
import_media_files=( |
|||
"/files" |
|||
"/public/media" |
|||
) |
|||
|
|||
|
|||
### POST SCRIPT |
|||
|
|||
|
|||
if [ -f "$app_dir/bin/post_config.sh" ] |
|||
then |
|||
source "$app_dir/bin/post_config.sh" |
|||
fi |
@ -1,4 +0,0 @@ |
|||
[mysqldump] |
|||
user= |
|||
password= |
|||
max_allowed_packet=500M |
@ -1,9 +0,0 @@ |
|||
[mysql] |
|||
user= |
|||
password= |
|||
max_allowed_packet=500M |
|||
|
|||
[mysqldump] |
|||
user= |
|||
password= |
|||
max_allowed_packet=500M |
@ -1,4 +0,0 @@ |
|||
[mysqldump] |
|||
user= |
|||
password= |
|||
max_allowed_packet=500M |
@ -0,0 +1,6 @@ |
|||
/.idea |
|||
/.trash |
|||
/bin/postscripts |
|||
/data |
|||
/etc/config |
|||
/etc/projects |
@ -1,8 +0,0 @@ |
|||
.idea |
|||
.ssh |
|||
backup |
|||
bin/postscripts |
|||
etc |
|||
shared |
|||
var |
|||
!.keep |
@ -0,0 +1,14 @@ |
|||
#!/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: install_remote_system.sh [live|stage]" "live stage")" |
|||
|
|||
echoMainTitle "Installing $env system" |
|||
|
|||
"$app_dir/bin/commands/single/create_directories.sh" "$env" |
|||
"$app_dir/bin/commands/single/create_database.sh" "$env" |
@ -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" |
|||
|
|||
env=$(getArgument $1 "Usage: switch_local_env.sh [live|stage]" "live stage") |
|||
|
|||
echoMainTitle "Switching local system to $env" |
|||
|
|||
|
|||
|
|||
echoFinal "... local environment switched" |
|||
|
|||
echo "Running postscript ..." |
|||
postScript "$app_dir/bin/postscripts/switch_local_env.sh" |
|||
|
|||
|
@ -0,0 +1,104 @@ |
|||
#!/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: fetch_latest_db.sh [live|stage|local_live|local_stage] (1,0:fetchNewFlag) (1,0:withGdprFlag)" |
|||
env="$(getArgument "$1" "$usage" "live stage local_live local_stage")" |
|||
fetch_new="$(getArgument "$2" "$usage" "1 0")" |
|||
with_gdpr="$(getArgument "$3" "$usage" "1 0")" |
|||
is_remote="$(if [ "$env" == "live" ] || [ "$env" == "stage" ]; then echo 1; else echo 0; fi)" |
|||
|
|||
currentDate=$(date '+%Y-%m-%d_%H:%M:%S') |
|||
|
|||
echo |
|||
echoMainTitle "Backup $env system database" |
|||
|
|||
database_name="$(getConfig "$env" "database_name")" |
|||
|
|||
if [ "$is_remote" == "1" ] |
|||
then |
|||
ssh_user="$(getConfig "$env" "ssh_user")" |
|||
ssh_domain="$(getConfig "$env" "ssh_domain")" |
|||
addSSHKey "$env" |
|||
|
|||
ignoredTablesArguments=("$(buildIgnoredTablesArguments "$env" "${gdpr_tables[*]}")") |
|||
|
|||
echo "Backup structure ..." |
|||
|
|||
has_fetched="$(if [ -f "$app_dir/var/latest/${env}_structure.sql.gz" ]; then echo 1; else echo 0; fi)" |
|||
if [ "$fetch_new" == "1" ] || [ "$has_fetched" == "0" ] |
|||
then |
|||
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-data \ |
|||
\"$database_name\" | LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | \ |
|||
sed -e 's/,NO_AUTO_CREATE_USER//' | gzip -9 > ~/${env}_structure.sql.gz" |
|||
scp "$ssh_user"@"$ssh_domain":"~/${env}_structure.sql.gz" "$app_dir/backup/database/$currentDate-${env}_structure.sql.gz" |
|||
ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}_structure.sql.gz" |
|||
fi |
|||
|
|||
echo "Backup data ..." |
|||
|
|||
has_fetched="$(if [ -f "$app_dir/var/latest/${env}_data.sql.gz" ]; then echo 1; else echo 0; fi)" |
|||
if [ "$fetch_new" == "1" ] || [ "$has_fetched" == "0" ] |
|||
then |
|||
ssh "$ssh_user"@"$ssh_domain" "mysqldump --defaults-extra-file=~/${env}.my.cnf --no-tablespaces --no-create-info \ |
|||
--skip-triggers ${ignoredTablesArguments[*]} \"$database_name\" | LANG=C LC_CTYPE=C LC_ALL=C \ |
|||
sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | gzip -9 > ~/${env}_data.sql.gz" |
|||
scp "$ssh_user"@"$ssh_domain":"~/${env}_data.sql.gz" "$app_dir/backup/database/$currentDate-${env}_data.sql.gz" |
|||
ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}_data.sql.gz" |
|||
fi |
|||
|
|||
if [ "$with_gdpr" == "1" ] |
|||
then |
|||
includedTables=("$(buildIncludedTables "${gdprTables[@]}")") |
|||
|
|||
echo "Backup GDPR ..." |
|||
|
|||
has_fetched="$(if [ -f "$app_dir/var/latest/${env}_gdpr_data.sql.gz" ]; then echo 1; else echo 0; fi)" |
|||
if [ "$fetch_new" == "1" ] || [ "$has_fetched" == "0" ] |
|||
then |
|||
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/backup/database/$currentDate-${env}_gdpr_data.sql.gz" |
|||
ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}_gdpr_data.sql.gz" |
|||
fi |
|||
fi |
|||
|
|||
ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}.my.cnf" |
|||
else |
|||
|
|||
echo "Backup structure ..." |
|||
|
|||
mysqldump --defaults-extra-file="$app_dir/etc/local.my.cnf" --no-tablespaces --hex-blob --no-data "$database_name" | \ |
|||
LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | sed -e 's/,NO_AUTO_CREATE_USER//' | gzip -9 > \ |
|||
"$app_dir/backup/database/${currentDate}-${env}_structure.sql.gz" |
|||
|
|||
echo "Backup data ..." |
|||
|
|||
mysqldump --defaults-extra-file="$app_dir/etc/local.my.cnf" --no-tablespaces --no-create-info --skip-triggers --hex-blob \ |
|||
${ignoredTablesArguments[*]} "$database_name" | \ |
|||
LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | gzip -9 > \ |
|||
"$app_dir/backup/database/${currentDate}-${env}_data.sql.gz" |
|||
|
|||
if [ "$with_gdpr" == "1" ] |
|||
then |
|||
includedTables=("$(buildIncludedTables "${gdprTables[@]}")") |
|||
|
|||
echo "Backup gdpr ..." |
|||
|
|||
mysqldump --defaults-extra-file="$app_dir/etc/local.my.cnf" --no-tablespaces --no-create-info --skip-triggers --hex-blob \ |
|||
"$database_name" ${includedTables[*]} | \ |
|||
LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | gzip -9 > \ |
|||
"$app_dir/backup/database/${currentDate}-${env}_gdpr_data.sql.gz" |
|||
fi |
|||
fi |
|||
|
|||
echoFinal "... database backed up" |
|||
|
|||
echo "Running postscript ..." |
|||
postScript "$app_dir/bin/postscripts/functions/backup_db.sh" |
@ -0,0 +1,46 @@ |
|||
#!/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: clone_repo.sh [live|stage|local]" "live stage local")" |
|||
|
|||
echoMainTitle "Cloning $env system repository" |
|||
|
|||
is_remote=$(if [ "$env" == "live" ] || [ "$env" == "stage" ]; then echo 1; else echo 0; fi) |
|||
if [ "$is_remote" == "1" ] |
|||
then |
|||
addSSHKey "$env" |
|||
ssh_user="$(getConfig "$env" "ssh_user")" |
|||
ssh_domain="$(getConfig "$env" "ssh_domain")" |
|||
httpdocs_path="$(getConfig "$env" "httpdocs_path")" |
|||
httpdocs_git_subpath="$(getConfig "$env" "httpdocs_git_subpath")" |
|||
has_git="$(ssh "$ssh_user"@"ssh_domain" "[ -d \"$httpdocs_path$httpdocs_git_subpath/.git\" ] && echo 1 || echo 0")" |
|||
|
|||
if [ "$has_git" == "1" ] |
|||
then |
|||
echoWarning "Git allready installed, aborting" |
|||
else |
|||
ssh "$ssh_user"@"ssh_domain" "cd $httpdocs_path$httpdocs_git_subpath && git clone \"$git_url\" ." |
|||
ssh "$ssh_user"@"ssh_domain" "cd $httpdocs_path$httpdocs_git_subpath && git config credential.helper store" |
|||
fi |
|||
fi |
|||
|
|||
if [ "$is_remote" == "0" ] |
|||
then |
|||
has_git="$(if [ -d "$app_dir/git/$project_name" ]; then echo 1; else echo 0; fi)" |
|||
if [ "$has_git" == "1" ] |
|||
then |
|||
echoWarning "Git allready installed, aborting" |
|||
else |
|||
git clone "$git_url" "$app_dir/git/$project_name" |
|||
fi |
|||
fi |
|||
|
|||
echoFinal "... git repository cloned" |
|||
|
|||
echo "Running postscript ..." |
|||
postScript "$app_dir/bin/postscript/functions/clone_repo.sh" |
@ -0,0 +1,51 @@ |
|||
#!/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_database.sh [live|stage|local_live|local_stage]" "live stage local_live local_stage")" |
|||
|
|||
echoMainTitle "Create $env system database" |
|||
|
|||
database_name="$(getConfig "$env" "database_name")" |
|||
ssh_user="$(getConfig "$env" "ssh_user")" |
|||
ssh_domain="$(getConfig "$env" "ssh_domain")" |
|||
is_remote=$(if [ "$env" == "live" ] || [ "$env" == "stage" ]; then echo 1; else echo 0; fi) |
|||
|
|||
if [ "$is_remote" == "1" ] |
|||
then |
|||
addSSHKey "$env"; |
|||
scp "$app_dir/etc/$env.my.cnf" "$ssh_user"@"$ssh_domain":"~/$env.my.cnf" |
|||
has_database=$(ssh "$ssh_user"@"ssh_domain" "mysql --defaults-extra-file=\"~/$env.my.cnf\" --defaults-group-suffix=\"admin\" -se \"SHOW DATABASES\" | grep \"$database_name\"") |
|||
fi |
|||
|
|||
if [ "$is_remote" == "0" ] |
|||
then |
|||
has_database=$(mysql --defaults-extra-file="$app_dir/etc/$env.my.cnf" --defaults-group-suffix="admin" -se "SHOW DATABASES" | grep "$database_name") |
|||
fi |
|||
|
|||
if [ "$has_database" == "" ] |
|||
then |
|||
create="$(readConsole "The Environment $env has no Database, should i creeate it? [y,n]", "Invalid selection" "y n")" |
|||
|
|||
if [ "$create" == "y" ] && [ "$is_remote" == "1" ] |
|||
then |
|||
ssh "$ssh_user"@"ssh_domain" "mysql --defaults-extra-file=\"~/$env.my.cnf\" --defaults-group-suffix=\"admin\" -se \"CREATE DATABASE \`$database_name\`\"" |
|||
elif [ "$create" == "y" ] |
|||
then |
|||
mysql --defaults-extra-file="$app_dir/etc/$env.my.cnf" --defaults-group-suffix="admin" -se "CREATE DATABASE \`$database_name\`" |
|||
fi |
|||
fi |
|||
|
|||
if [ "$is_remote" == "1" ] |
|||
then |
|||
ssh "$ssh_user"@"ssh_domain" "rm \"~/$env.my.cnf\"" |
|||
fi |
|||
|
|||
echoFinal "... database created" |
|||
|
|||
echo "Running postscript ..." |
|||
postScript "$app_dir/bin/postscript/functions/create_database.sh" |
@ -0,0 +1,45 @@ |
|||
#!/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_directories.sh [live|stage]" "live stage")" |
|||
|
|||
echoMainTitle "Installing $env system directories" |
|||
|
|||
addSSHKey "$env" |
|||
|
|||
httpdocs_path="$(getConfig "$env" "httpdocs_path")" |
|||
httpdocs_git_subpath="$(getConfig "$env" "httpdocs_git_subpath")" |
|||
ssh_user="$(getConfig "$env" "ssh_user")" |
|||
ssh_domain="$(getConfig "$env" "ssh_domain")" |
|||
database_name="$(getConfig "$env" "database_name")" |
|||
|
|||
has_httpdocs_path="$(ssh "$ssh_user"@"ssh_domain" "[ -d \"$httpdocs_path\" ] && echo 1 || echo 0")" |
|||
has_httpdocs_git_path="$(ssh "$ssh_user"@"ssh_domain" "[ -d \"$httpdocs$httpdocs_git_subpath\" ] && echo 1 || echo 0")" |
|||
|
|||
if [ "$has_httpdocs" == "0" ] |
|||
then |
|||
create_httpdocs="$(readConsole "The $env System has no httpdocs ($httpdocs_path), should i create it [y,n]" "Invalid selection" "y n")" |
|||
if [ "$create_httpdocs" == "y" ] |
|||
then |
|||
ssh "$ssh_user"@"ssh_domain" "mkdir -p \"$httpdocs_path\"" |
|||
fi |
|||
fi |
|||
|
|||
if [ "$has_httpdocs_git_path" == "0" ] |
|||
then |
|||
create_git="$(readConsole "The $env System has no subpath to git directory ($httpdocs_path$httpdocs_git_path), should i create it [y,n]" "Invalid selection" "y n")" |
|||
if [ "$create_git" == "y" ] |
|||
then |
|||
ssh "$ssh_user"@"ssh_domain" "mkdir -p \"$httpdocs_path$httpdocs_git_subpath\"" |
|||
fi |
|||
fi |
|||
|
|||
echoFinal "... directories created" |
|||
|
|||
echo "Running postscript ..." |
|||
postScript "$app_dir/bin/postscript//create_directories.sh" |
@ -0,0 +1,30 @@ |
|||
#!/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: deploy.sh [live|stage]" "live stage") |
|||
|
|||
echoMainTitle "Deploying $env system" |
|||
|
|||
httpdocs_path="$(getConfig "$env" "httpdocs_path")" |
|||
httpdocs_git_subpath="$(getConfig "$env" "httpdocs_git_subpath")" |
|||
ssh_user="$(getConfig "$env" "ssh_user")" |
|||
ssh_domain="$(getConfig "$env" "ssh_domain")" |
|||
path="$httpdocs_path$httpdocs_git_subpath" |
|||
|
|||
addSSHKey "$env" |
|||
|
|||
ssh "$ssh_user"@"$ssh_domain" "cd $path && git stash" |
|||
ssh "$ssh_user"@"$ssh_domain" "cd $path && git ls-files -m | rm" |
|||
ssh "$ssh_user"@"$ssh_domain" "cd $path && git pull" |
|||
ssh "$ssh_user"@"$ssh_domain" "$path/bin/console cache:clear" |
|||
ssh "$ssh_user"@"$ssh_domain" "$path/bin/console theme:compile" |
|||
|
|||
echo "... system deployed" |
|||
|
|||
echo "Running postscript ..." |
|||
postScript "$app_dir/bin/postscripts/functions/deploy.sh" |
@ -0,0 +1,38 @@ |
|||
#!/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: fetch_files.sh [live|stage]" "live stage")" |
|||
|
|||
ssh_user="$(getConfig "$env" "ssh_user")" |
|||
ssh_domain="$(getConfig "$env" "ssh_domain")" |
|||
httpdocs_path="$(getConfig "$env" "httpdocs_path")" |
|||
httpdocs_git_subpath="$(getConfig "$env" "httpdocs_git_subpath")" |
|||
httpdocs_shopware_subpath="$(getConfig "$env" "httpdocs_shopware_subpath")" |
|||
remote_path="$httpdocs_path$httpdocs_git_subpath$httpdocs_shopware_subpath" |
|||
local_path="$app_dir/git/$project_name/$local_httpdocs_shopware_subpath" |
|||
shared_path="$app_dir/shared/$project_name/$env" |
|||
|
|||
echoMainTitle "Fetching $env system files" |
|||
|
|||
for file in "${shared_files[@]}" |
|||
do |
|||
echo "Fetching files $file" |
|||
addSSHKey "$env" |
|||
scp "$ssh_user"@"$ssh_domain":"$remote_path/$file/." "$shared_path/$file/." |
|||
if [ -f "$local_path/$file" ] |
|||
then |
|||
rm -rf "$local_path/$file" |
|||
fi |
|||
ln -s "$shared_path/$file" "$local_path/$file" |
|||
done |
|||
|
|||
echoFinal "... files fetched" |
|||
|
|||
echo "Running postscript ..." |
|||
postScript "$app_dir/bin/postscripts/function/fetch_files.sh" |
|||
|
@ -0,0 +1,58 @@ |
|||
#!/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] (1,0:withGdprData)" |
|||
env="$(getArgument "$1" "$usage" "live stage")" |
|||
with_gdpr="$(getArgument "$2" "$usage" "1 0")" |
|||
|
|||
echoMainTitle "Importing $env database to local installation" |
|||
|
|||
structure_file="$app_dir/var/latest/${env}_structure.sql.gz" |
|||
data_file="$app_dir/var/latest/${env}_data.sql.gz" |
|||
gdpr_file="$app_dir/var/latest/${env}_gdpr_data.sql.gz" |
|||
|
|||
database_name=$(getConfig "local_$env" "database_name") |
|||
|
|||
if [ ! -f "$structure_file" ]; then echoError "Missing structure file - aborting"; fi |
|||
if [ ! -f "$data_file" ]; then echoError "Missing data file - aborting"; fi |
|||
if [ ! -f "$gdpr_file" ] && [ "$with_gdpr" == "1" ]; then echoError "Missing GDPR file - aborting"; fi |
|||
|
|||
if [ -f "$structure_file" ] && [ -f "$data_file" ] && ([ "$with_gdpr" == "1" ] && [ -f "$gdpr_file" ] || [ "$with_gdpr" == "0" ]) |
|||
then |
|||
|
|||
echo "Uncompress Database ..." |
|||
|
|||
gzip -fdc "$app_dir/var/latest/${env}_structure.sql.gz" > "$app_dir/var/tmp/${env}_structure.sql" |
|||
gzip -dfc "$app_dir/var/latest/${env}_data.sql.gz" > "$app_dir/var/tmp/${env}_data.sql" |
|||
if [ "$with_gdpr" == "1" ]; then gzip -dfc "$app_dir/var/latest/${env}_gdpr_data.sql.gz" > "$app_dir/var/tmp/${env}_gdpr_data.sql"; fi |
|||
|
|||
echo "Drop local tables ..." |
|||
|
|||
mysqldump --defaults-extra-file="$app_dir/etc/local.my.cnf" --add-drop-table --add-drop-trigger --no-data "$database_name" | \ |
|||
grep -e '[DROP TABLE|DROP TRIGGER]' >> "$app_dir/var/tmp/${env}_drop_local.sql" |
|||
echo "SET FOREIGN_KEY_CHECKS = 1;" >> "$app_dir/var/tmp/${env}_drop_local.sql" |
|||
mysql --defaults-extra-file="$app_dir/etc/local.my.cnf" -D "$database_name" < "$app_dir/var/tmp/${env}_drop_local.sql" |
|||
rm "$app_dir/var/tmp/${env}_drop_local.sql" |
|||
|
|||
echo "Import structure ..." |
|||
mysql --defaults-extra-file="$app_dir/etc/local.my.cnf" -D "$database_name" < "$app_dir/var/tmp/${env}_structure.sql" |
|||
|
|||
echo "Import data ..." |
|||
mysql --defaults-extra-file="$app_dir/etc/local.my.cnf" -D "$database_name" < "$app_dir/var/tmp/${env}_data.sql" |
|||
|
|||
if [ "$with_gdpr" == "1" ] |
|||
then |
|||
echo "Import GDPR ..." |
|||
mysql --defaults-extra-file="$app_dir/etc/local.my.cnf" -D "$database_name" < "$app_dir/var/tmp/${env}_gdpr_data.sql" |
|||
fi |
|||
|
|||
echo "Cleanup ..." |
|||
rm "$structure_file" |
|||
rm "$data_file" |
|||
rm "$gdpr_file" |
|||
fi |
@ -0,0 +1,28 @@ |
|||
#!/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: link_latest_db.sh [live|stage]" "live stage") |
|||
|
|||
echo |
|||
echoMainTitle "Set $env system latest databases links" |
|||
|
|||
files=($(ls -t | head -1)) |
|||
date=$("${files[0]}" | sed -e "s/(\d{4}-\d{2}-\d{2}_\d{2}:\d{2}:\d{2}).*/\1/") |
|||
|
|||
struct_file="${date}_${env}_structure.sql.gz" |
|||
data_file="${date}_${env}_data.sql.gz" |
|||
gdpr_file="${date}_${env}_gdpr_data.sql.gz" |
|||
|
|||
if [ -f "$struct_file" ]; then ln -s "$struct_file" "$app_dir/var/latest/${env}_structure.sql.gz"; fi |
|||
if [ -f "$data_file" ]; then ln -s "$data_file" "$app_dir/var/latest/${env}_data.sql.gz"; fi |
|||
if [ -f "$gdpr_data_file" ]; then ln -s "$gdpr_data_file" "$app_dir/var/latest/${env}_gdpr_data.sql.gz"; fi |
|||
|
|||
echoFinal "... latest databases linked" |
|||
|
|||
echo "Running postscript ..." |
|||
postScript "$app_dir/bin/postscripts/functions/set_latest_db.sh" |
@ -0,0 +1,84 @@ |
|||
#!/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: write_shopware_env_file.sh [live|stage|local_live|local_stage]" "live stage local_live local_stage")" |
|||
is_remote=$(if [ "$env" == "live" ] || [ "$env" == "stage" ]; then echo 1; else echo 0; fi) |
|||
|
|||
echoMainTitle "Create $env system .env file" |
|||
|
|||
currentDate=$(date '+%Y-%m-%d_%H:%M:%S') |
|||
|
|||
database_socket="$(getConfig "$env" "database_socket")" |
|||
database_host="$(getConfig "$env" "database_host")" |
|||
database_port="$(getConfig "$env" "database_port")" |
|||
database_name="$(getConfig "$env" "database_name")" |
|||
database_user="$(getConfig "$env" "database_user")" |
|||
database_password="$(getConfig "$env" "database_password")" |
|||
|
|||
if [ "$database_socket" != "" ] |
|||
then |
|||
db_connection="mysql://$database_host?unix_socket=$database_socket&dbname=$database_name&user=$database_user&password=$database_password" |
|||
else |
|||
db_connection="mysql://$database_user:$database_password@$database_host:$database_port/$database_name" |
|||
fi |
|||
|
|||
app_url=${"$(getConfig "$env" "urls")"[0]} |
|||
|
|||
app_secret="$(getSecret "APP_SECRET")" |
|||
echo "$app_secret" > "$app_dir/etc/app_secret" |
|||
instance_id="$(getSecret "INSTANCE_ID")" |
|||
echo "$instance_id" > "$app_dir/etc/instance_id" |
|||
|
|||
short="$(echo "$env" | sed -e "s/[_live|_stage]//")" |
|||
host="$(eval "echo \"\${${short}_urls[0]}\"")" |
|||
|
|||
cat <<- EOF > "var/tmp/$env.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 |
|||
|
|||
if [ "$is_remote" == "1" ] |
|||
then |
|||
ssh_user="$(eval "echo \"\$${env}_ssh_user\"")" |
|||
ssh_domain="$(eval "echo \"\$${env}_ssh_domain\"")" |
|||
httpdocs_path="$(getConfig "$env" "httpdocs_path")" |
|||
httpdocs_git_subpath="$(getConfig "$env" "httpdocs_git_subpath")" |
|||
httpdocs_shopware_subpath="$(getConfig "$env" "httpdocs_shopware_subpath")" |
|||
path="$httpdocs_path$httpdocs_git_subpath$httpdocs_shopware_subpath" |
|||
addSSHKey "$env" |
|||
has_env_file="$(ssh "ssh_user"@"ssh_domain" "[ -f \""$path/.env"\" ] && echo 1 || echo 2")" |
|||
if [ "$has_env_file" == "1" ] |
|||
then |
|||
scp "$ssh_user"@"$ssh_domain":"$path/.env" "$app_dir/backup/$currentDate.$short.env}" |
|||
fi |
|||
scp "var/tmp/$env.env" "$ssh_user"@"$ssh_domain":"$path/.env" |
|||
else |
|||
path="$app_dir/git/$project_name/$local_httpdocs_shopware_subpath" |
|||
has_env_file="$(ssh "[ -f \""$path/.env"\" ] && echo 1 || echo 2")" |
|||
if [ "$has_env_file" == "1" ] |
|||
then |
|||
cp "$path/.env" "$app_dir/backup/$currentDate.$short.env}" |
|||
fi |
|||
cp "var/tmp/$env.env" "$path/.env" |
|||
fi |
|||
|
|||
rm "var/tmp/$env.env" |
|||
|
|||
echoFinal "... .env file created" |
|||
|
|||
echo "Running postscript ..." |
|||
postScript "$app_dir/bin/postscripts/function/write_shopware_env_file.sh" |
@ -1,20 +0,0 @@ |
|||
#!/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" |
@ -0,0 +1,158 @@ |
|||
#!/bin/bash |
|||
|
|||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." &> /dev/null && pwd)/etc/config" |
|||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." &> /dev/null && pwd)/etc/projects" |
|||
|
|||
function usage { |
|||
echo |
|||
echoMainTitle "Creates a new project" |
|||
echo |
|||
echoSubTitle "Usage:" |
|||
echo |
|||
echo "create-project [customer] [project] [shortname]" |
|||
echo |
|||
echo "The given customer and project will result in the file directory as you have setted" |
|||
echo "it in project_manager/etc/projects configuration file:" |
|||
echo " - workspace_dir/customer/project" |
|||
echo " - data_dir/customer/project" |
|||
echo "It will set a configuration file for your project to:" |
|||
echo " - data_dir/customer/project/etc/config" |
|||
echo |
|||
echo "--help Prints this message" |
|||
echo |
|||
} |
|||
|
|||
help="$(getParameter "--help" false "$@")" |
|||
if [ "$help" == true ] || [ "$1" == "" ] |
|||
then |
|||
usage |
|||
exit |
|||
fi |
|||
|
|||
customer=$(getArgument "$1" "$(usage)" true) |
|||
project=$(getArgument "$2" "$(usage)" true) |
|||
shortname=$(getArgument "$3" "$(usage)" true) |
|||
|
|||
for p in "${projects[@]}" |
|||
do |
|||
if [ "$p" == "$project" ] |
|||
then |
|||
echoError "Project already exists" |
|||
echo |
|||
exit |
|||
fi |
|||
done |
|||
|
|||
for s in "${shortnames[@]}" |
|||
do |
|||
if [ "$s" == "$shortname" ] |
|||
then |
|||
echoError "Shortname already exists" |
|||
echo |
|||
exit |
|||
fi |
|||
done |
|||
|
|||
echo |
|||
echoMainTitle "Create project" |
|||
|
|||
echo |
|||
echoSubTitle "Please verify data" |
|||
echo |
|||
echo "Project Path: $workspaces_dir/$customer/$project" |
|||
echo "Project Data Path: $project_manager_dir/data/$customer/$project" |
|||
echo |
|||
confirm |
|||
|
|||
projects_string=''; |
|||
for i in "${!projects[@]}" |
|||
do |
|||
((nr=i+1)) |
|||
projects_string+="$(echo -e "\n\t\"${projects[$i]}\" # $nr")" |
|||
done |
|||
((nr=nr+1)) |
|||
projects_string+="$(echo -e "\n\t\"$project\" # $nr")" |
|||
|
|||
shortnames_string=''; |
|||
for i in "${!shortnames[@]}" |
|||
do |
|||
((nr=i+1)) |
|||
shortnames_string+="$(echo -e "\n\t\"${shortnames[$i]}\" # $nr")" |
|||
done |
|||
((nr=nr+1)) |
|||
shortnames_string+="$(echo -e "\n\t\"$shortname\" # $nr")" |
|||
|
|||
customers_string=''; |
|||
for i in "${!customers[@]}" |
|||
do |
|||
((nr=i+1)) |
|||
customers_string+="$(echo -e "\n\t\"${customers[$i]}\" # $nr")" |
|||
done |
|||
((nr=nr+1)) |
|||
customers_string+="$(echo -e "\n\t\"$customer\" # $nr")" |
|||
|
|||
cat <<- EOF > "$project_manager_dir/etc/projects" |
|||
#!/bin/bash |
|||
|
|||
projects=($projects_string |
|||
) |
|||
shortnames=($shortnames_string |
|||
) |
|||
customers=($customers_string |
|||
) |
|||
|
|||
EOF |
|||
|
|||
path="$project_manager_dir/data/$customer/$project" |
|||
|
|||
if [ ! -d "$path" ]; then mkdir -p "$path"; fi |
|||
if [ ! -d "$path/.ssh" ]; then mkdir "$path/.ssh"; fi |
|||
if [ ! -d "$path/backup" ]; then mkdir "$path/backup"; fi |
|||
if [ ! -d "$path/backup/database" ]; then mkdir "$path/backup/database"; fi |
|||
if [ ! -d "$path/bin" ]; then mkdir "$path/bin"; fi |
|||
if [ ! -d "$path/bin/postscripts" ]; then mkdir "$path/bin/postscripts"; fi |
|||
if [ ! -d "$path/bin/postscripts/plugins" ]; then mkdir "$path/bin/postscripts/plugins"; fi |
|||
if [ ! -d "$path/etc" ]; then mkdir "$path/etc"; fi |
|||
if [ ! -d "$path/etc/plugins" ]; then mkdir "$path/etc/plugins"; fi |
|||
if [ ! -d "$path/shared" ]; then mkdir "$path/shared"; fi |
|||
if [ ! -d "$path/shared/live" ]; then mkdir "$path/shared/live"; fi |
|||
if [ ! -d "$path/shared/stage" ]; then mkdir "$path/shared/stage"; fi |
|||
if [ ! -d "$path/var" ]; then mkdir "$path/var"; fi |
|||
if [ ! -d "$path/var/tmp" ]; then mkdir "$path/var/tmp"; fi |
|||
if [ ! -d "$path/var/latest" ]; then mkdir "$path/var/latest"; fi |
|||
|
|||
if [ ! -f "$path/etc/config" ] |
|||
then |
|||
quoted="$(sedEscape "$project_manager_dir")" |
|||
cat "$project_manager_dir/etc/.config_template" | \ |
|||
sed "s/app_customer=\"\"/app_customer=\"$customer\"/" | \ |
|||
sed "s/app_project=\"\"/app_project=\"$project\"/" | \ |
|||
sed "s/app_project_manager_dir=\"\"/app_project_manager_dir=\"$quoted\"/" \ |
|||
> "$path/etc/config" |
|||
fi |
|||
|
|||
plugin_path="$project_manager_dir/plugins" |
|||
plugins=$(ls -t "$plugin_path") |
|||
for plugin in ${plugins[*]} |
|||
do |
|||
etc_file="$plugin_path/$plugin/etc/.config_template" |
|||
if [ -f "$etc_file" ] && [ ! -f "$path/etc/plugins/$plugin/config" ] |
|||
then |
|||
if [ ! -d "$path/etc/plugins/$plugin" ] |
|||
then |
|||
mkdir "$path/etc/plugins/$plugin" |
|||
fi |
|||
cp "$etc_file" "$path/etc/plugins/$plugin/config" |
|||
fi |
|||
done |
|||
|
|||
if [ ! -d "$workspaces_dir/$customer/$project" ]; then mkdir -p "$workspaces_dir/$customer/$project"; fi |
|||
|
|||
echo |
|||
echoSubTitle "Running postscripts ..." |
|||
postScript "$path/bin/postscripts/commands/create-project" |
|||
postScript "$workspaces_dir/$customer/$project/bin/postscripts/commands/create-project" |
|||
|
|||
echo |
|||
echoSuccess "Project has been created, please configure: $path/etc/*" |
|||
echo |
@ -1,57 +0,0 @@ |
|||
#!/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" |
@ -1,84 +0,0 @@ |
|||
#!/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_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" |
|||
ssh_user="$(eval "echo \$${env}_ssh_user")" |
|||
ssh_domain="$(eval "echo \$${env}_ssh_domain")" |
|||
|
|||
ignoredTablesArguments=$(buildIgnoredTablesArguments "$env" "${gdpr_tables[*]}") |
|||
|
|||
echo "Fetching Database ..." |
|||
|
|||
database_name=$(eval "echo \$${env}_database_name") |
|||
local_database_name=$(eval "echo \"\$local_${env}_database_name\"") |
|||
|
|||
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-data \ |
|||
\"$database_name\" | LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | \ |
|||
sed -e 's/,NO_AUTO_CREATE_USER//' | gzip -9 > ~/${env}_structure.sql.gz" |
|||
scp "$ssh_user"@"$ssh_domain":"~/${env}_structure.sql.gz" "$app_dir/var/tmp/${env}_structure.sql.gz" |
|||
ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}_structure.sql.gz" |
|||
ssh "$ssh_user"@"$ssh_domain" "mysqldump --defaults-extra-file=~/${env}.my.cnf --no-tablespaces --no-create-info \ |
|||
--skip-triggers $ignoredTablesArguments \"$database_name\" | LANG=C LC_CTYPE=C LC_ALL=C \ |
|||
sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | gzip -9 > ~/${env}_data.sql.gz" |
|||
scp "$ssh_user"@"$ssh_domain":"~/${env}_data.sql.gz" "$app_dir/var/tmp/${env}_data.sql.gz" |
|||
ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}_data.sql.gz" |
|||
ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}.my.cnf" |
|||
|
|||
echo "Backup Database ..." |
|||
|
|||
mysqldump --defaults-extra-file="$app_dir/etc/local.my.cnf" --no-tablespaces --hex-blob --no-data "$local_database_name" | \ |
|||
LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | sed -e 's/,NO_AUTO_CREATE_USER//' | gzip -9 > \ |
|||
"$app_dir/backup/database/${currentDate}_local_${env}_structure.sql.gz" |
|||
|
|||
mysqldump --defaults-extra-file="$app_dir/etc/local.my.cnf" --no-tablespaces --no-create-info --skip-triggers --hex-blob "$local_database_name" | \ |
|||
LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | gzip -9 > \ |
|||
"$app_dir/backup/database/${currentDate}_local_${env}_data.sql.gz" |
|||
|
|||
cp "$app_dir/var/tmp/${env}_structure.sql.gz" "$app_dir/backup/database/${currentDate}_${env}_structure.sql.gz" |
|||
cp "$app_dir/var/tmp/${env}_data.sql.gz" "$app_dir/backup/database/${currentDate}_${env}_data.sql.gz" |
|||
|
|||
echo "Uncompress Database ..." |
|||
gzip --force -d "$app_dir/var/tmp/${env}_structure.sql.gz" |
|||
gzip --force -d "$app_dir/var/tmp/${env}_data.sql.gz" |
|||
|
|||
echo "Install Database ..." |
|||
|
|||
mysql --defaults-extra-file="$app_dir/etc/local.my.cnf" -e "CREATE DATABASE IF NOT EXISTS \`$local_database_name\`;" |
|||
|
|||
echo "Remove Tables ..." |
|||
mysqldump --defaults-extra-file="$app_dir/etc/local.my.cnf" --add-drop-table --add-drop-trigger --no-data "$local_database_name" | \ |
|||
grep -e '[DROP TABLE|DROP TRIGGER]' >> "$app_dir/var/tmp/drop_local_$env.sql" |
|||
echo "SET FOREIGN_KEY_CHECKS = 1;" >> "$app_dir/var/tmp/drop_local_$env.sql" |
|||
mysql --defaults-extra-file="$app_dir/etc/local.my.cnf" -D "$local_database_name" < "$app_dir/var/tmp/drop_local_$env.sql" |
|||
|
|||
echo "Import Structure ..." |
|||
mysql --defaults-extra-file="$app_dir/etc/local.my.cnf" -D "$local_database_name" < "$app_dir/var/tmp/${env}_structure.sql" |
|||
|
|||
echo "Import Data ..." |
|||
mysql --defaults-extra-file="$app_dir/etc/local.my.cnf" -D "$local_database_name" < "$app_dir/var/tmp/${env}_data.sql" |
|||
|
|||
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 ..." |
|||
|
|||
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" |
|||
|
@ -1,50 +0,0 @@ |
|||
#!/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" |
@ -0,0 +1,53 @@ |
|||
#!/bin/bash |
|||
|
|||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")/.." &> /dev/null && pwd)/includes/includes" |
|||
|
|||
function usage { |
|||
echo |
|||
echoMainTitle "Installs Sumedia Project Manager" |
|||
echo |
|||
echoSubTitle "Usage:" |
|||
echo |
|||
echo "install-project-manager" |
|||
echo |
|||
echo "--help Prints this message" |
|||
echo |
|||
} |
|||
|
|||
help="$(getParameter "--help" false "$@")" |
|||
if [ "$help" == true ] |
|||
then |
|||
usage |
|||
exit |
|||
fi |
|||
|
|||
echo |
|||
echoMainTitle "Install Sumedia Project Manager" |
|||
|
|||
echo |
|||
echoSubTitle "Please configure Sumedia Project Manager" |
|||
echo |
|||
workspaces_dir="$(readConsole "Workspaces Dir" "Invalid selection" true "$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." &> /dev/null && pwd)")" |
|||
project_manager_dir="$(readConsole "Project Manager Dir" "Invalid selection" true "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." &> /dev/null && pwd)")" |
|||
|
|||
if [ ! -f "$project_manager_dir/etc/config" ] |
|||
then |
|||
cat "$project_manager_dir/etc/.project_manager_config_template" | \ |
|||
sed "s/workspaces_dir=\"\"/workspaces_dir=\"$(sedEscape "$workspaces_dir")\"/" | \ |
|||
sed "s/project_manager_dir=\"\"/project_manager_dir=\"$(sedEscape "$project_manager_dir")\"/" \ |
|||
> "$project_manager_dir/etc/config" |
|||
fi |
|||
|
|||
if [ ! -f "$project_manager_dir/etc/projects" ] |
|||
then |
|||
cp "$project_manager_dir/etc/.projects_template" "$project_manager_dir/etc/projects" |
|||
fi |
|||
|
|||
echo |
|||
echoSubTitle "Running postscripts ..." |
|||
postScript "$path/bin/postscripts/commands/install-project-manager" |
|||
postScript "$workspaces_dir/$customer/$project/bin/postscripts/commands/install-project-manager" |
|||
|
|||
echo |
|||
echoSuccess "Sumedia Project Manager has been installed" |
|||
echo |
@ -0,0 +1,50 @@ |
|||
#!/bin/bash |
|||
|
|||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." &> /dev/null && pwd)/etc/config" |
|||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." &> /dev/null && pwd)/etc/projects" |
|||
|
|||
function usage { |
|||
echo |
|||
echoMainTitle "List all projects" |
|||
echo |
|||
echoSubTitle "Usage:" |
|||
echo |
|||
echo "list-projects" |
|||
echo |
|||
echo "--help Prints this message" |
|||
echo |
|||
} |
|||
|
|||
function listProjects { |
|||
echo >&2 |
|||
echoSubTitle "Projects list" >&2 |
|||
echo >&2 |
|||
for i in "${!projects[@]}" |
|||
do |
|||
echo "- Shortname: ${shortnames[$i]} |
|||
Customer: ${customers[$i]} |
|||
Project: ${projects[$i]}" >&2 |
|||
echo |
|||
done |
|||
} |
|||
|
|||
echo |
|||
echoMainTitle "Listing projects" |
|||
|
|||
help="$(getParameter "--help" false "$*")" |
|||
if [ "$help" == true ] |
|||
then |
|||
usage |
|||
exit |
|||
else |
|||
if [ "${#projects[@]}" -eq 0 ] |
|||
then |
|||
echo |
|||
echo "There are currently no projects setted up" |
|||
echo |
|||
else |
|||
listProjects |
|||
fi |
|||
fi |
|||
|
|||
echoSuccess "Listing done" |
@ -0,0 +1,122 @@ |
|||
#!/bin/bash |
|||
|
|||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." &> /dev/null && pwd)/etc/config" |
|||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." &> /dev/null && pwd)/etc/projects" |
|||
|
|||
function usage { |
|||
echo |
|||
echoMainTitle "Removes a project" |
|||
echo |
|||
echoSubTitle "Usage:" |
|||
echo |
|||
echo "remove-project [shortname]" |
|||
echo |
|||
echo "This will remove the project and move the project files to ./.trash" |
|||
echo |
|||
echo "--help Prints this message" |
|||
echo |
|||
} |
|||
|
|||
help="$(getParameter "--help" false "$@")" |
|||
if [ "$help" == true ] || [ "$1" == "" ] |
|||
then |
|||
usage |
|||
exit |
|||
fi |
|||
|
|||
shortname="$(getArgument "$1" "$(usage)" true)" |
|||
customer="$(getCustomerFromShortname "$shortname")" |
|||
project="$(getProjectFromShortname "$shortname")" |
|||
|
|||
index=false |
|||
for i in "${!shortnames[@]}" |
|||
do |
|||
if [ "${shortnames[$i]}" == "$shortname" ] |
|||
then |
|||
index="$i" |
|||
fi |
|||
done |
|||
|
|||
if [ "$index" == false ] |
|||
then |
|||
echo |
|||
echoError "Could not find project: $shortname" |
|||
echo |
|||
exit |
|||
fi |
|||
|
|||
echo |
|||
echoMainTitle "Remove project" |
|||
|
|||
echo |
|||
echoSubTitle "Please verify data" |
|||
echo |
|||
echo "Project Path: $workspaces_dir/$customer/$project" |
|||
echo "Project Data Path: $project_manager_dir/data/$customer/$project" |
|||
echo |
|||
confirm |
|||
|
|||
nr=0 |
|||
projects_string=''; |
|||
for i in "${!projects[@]}" |
|||
do |
|||
if [ "$i" != "$index" ] |
|||
then |
|||
((nr=nr+1)) |
|||
projects_string+="$(echo -e "\n\t\"${projects[$i]}\" # $nr")" |
|||
fi |
|||
done |
|||
|
|||
nr=0 |
|||
shortnames_string=''; |
|||
for i in "${!shortnames[@]}" |
|||
do |
|||
if [ "$i" != "$index" ] |
|||
then |
|||
((nr=nr+1)) |
|||
shortnames_string+="$(echo -e "\n\t\"${shortnames[$i]}\" # $nr")" |
|||
fi |
|||
done |
|||
|
|||
nr=0 |
|||
customers_string=''; |
|||
for i in "${!customers[@]}" |
|||
do |
|||
if [ "$i" != "$index" ] |
|||
then |
|||
((nr=nr+1)) |
|||
customers_string+="$(echo -e "\n\t\"${customers[$i]}\" # $nr")" |
|||
fi |
|||
done |
|||
|
|||
cat <<- EOF > "$project_manager_dir/etc/projects" |
|||
#!/bin/bash |
|||
|
|||
projects=($projects_string |
|||
) |
|||
shortnames=($shortnames_string |
|||
) |
|||
customers=($customers_string |
|||
) |
|||
|
|||
EOF |
|||
|
|||
echo |
|||
echo "Moving files to trash" |
|||
|
|||
rand=$(cat /proc/sys/kernel/random/uuid) |
|||
trash_path="$project_manager_dir/.trash/$rand" |
|||
mkdir "$trash_path" |
|||
mkdir "$trash_path/data" |
|||
mkdir "$trash_path/workspace" |
|||
mv "$project_manager_dir/data/$customer" "$trash_path/data/$customer" |
|||
mv "$workspaces_dir/$customer" "$trash_path/workspace/$customer" |
|||
|
|||
echo |
|||
echoSubTitle "Running postscripts ..." |
|||
postScript "$path/bin/postscripts/commands/remove-project" |
|||
postScript "$workspaces_dir/$customer/$project/bin/postscripts/commands/remove-project" |
|||
|
|||
echo |
|||
echoSuccess "Project has been remove, (moved to ./.trash)" |
|||
echo |
@ -1,33 +0,0 @@ |
|||
#!/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 |
|||
|
@ -0,0 +1,215 @@ |
|||
#!/bin/bash |
|||
|
|||
if [ true != ${includes_included:-false} ] |
|||
then |
|||
includes_included=true |
|||
|
|||
function echoMainTitle { |
|||
echo -e "\033[38;5;214m$1\033[0m" |
|||
} |
|||
|
|||
function echoSubTitle { |
|||
echo -e "\033[38;5;142m$1\033[0m" |
|||
} |
|||
|
|||
function echoSmall { |
|||
echo -e "\033[38;5;240m$1\033[0m" |
|||
} |
|||
|
|||
function echoSelect { |
|||
local select="$1" |
|||
local message="$2" |
|||
echo -e "\033[0;33m$select\033[0m $message" |
|||
} |
|||
|
|||
function echoError { |
|||
echo -e "\033[0;91m$1\033[0m" |
|||
} |
|||
|
|||
function echoWarning { |
|||
echo -e "\033[0;33m$1\033[0m" |
|||
} |
|||
|
|||
function echoSuccess { |
|||
echo -e "\033[0;32m$1\033[0m" |
|||
} |
|||
|
|||
function getParameter { |
|||
local name=$1 |
|||
local has=$2 |
|||
local parameters=($3) |
|||
|
|||
for i in "${!parameters[@]}" |
|||
do |
|||
if [ "${parameters[$i]}" == "$name" ] && [ "$has" == true ] |
|||
then |
|||
((j=i+1)) |
|||
echo "${parameters[$j]}" |
|||
elif [ "${parameters[$i]}" == "$name" ] |
|||
then |
|||
echo true |
|||
fi |
|||
done |
|||
} |
|||
|
|||
function getArgument { |
|||
local errmsg=$2 |
|||
local allow=${3:-false} |
|||
local var=$1 |
|||
|
|||
if [ "$allow" != false ] && [ "$(isAllowed "$var" "$allow")" == false ] |
|||
then |
|||
echo "$errmsg" >&2 |
|||
exit 1 |
|||
fi |
|||
|
|||
echo "$var" |
|||
} |
|||
|
|||
function isAllowed { |
|||
local var="$1" |
|||
local allow="$2" |
|||
local valid=true |
|||
|
|||
if [ "$allow" == true ] && [ "$var" == "" ] |
|||
then |
|||
valid=false |
|||
elif [ "$allow" != false ] && [ "$allow" != true ] |
|||
then |
|||
allow=($allow) |
|||
local found=false |
|||
for i in "${!allow[@]}" |
|||
do |
|||
if [ "${allow[$i]}" == "$var" ] |
|||
then |
|||
found=true |
|||
fi |
|||
done |
|||
if [ "$found" != true ] |
|||
then |
|||
valid=false |
|||
fi |
|||
fi |
|||
|
|||
echo $valid |
|||
} |
|||
|
|||
function readConsole { |
|||
local message="$1" |
|||
local errmsg="$2" |
|||
local allow=${3:-false} |
|||
local default="$4" |
|||
|
|||
if [ "$default" != "" ] |
|||
then |
|||
read -p "$message [default:$default]: " var |
|||
else |
|||
read -p "$message: " var |
|||
fi |
|||
|
|||
if [ "$var" == "" ] && [ "$default" != "" ] |
|||
then |
|||
var="$default" |
|||
fi |
|||
|
|||
if [ "$(isAllowed "$var" "$allow")" == false ] |
|||
then |
|||
echo "$errmsg" >&2 |
|||
var=$(readConsole "$message" "$errmsg" "$allow" "$default") |
|||
fi |
|||
|
|||
echo "$var" |
|||
} |
|||
|
|||
function getProjectFromShortname { |
|||
local shortname="$(getArgument "$1" "Invalid Argument" true)" |
|||
for i in "${!shortnames[@]}" |
|||
do |
|||
if [ "${shortnames[$i]}" == "$shortname" ] |
|||
then |
|||
echo "${projects[$i]}" |
|||
fi |
|||
done |
|||
} |
|||
|
|||
function getCustomerFromShortname { |
|||
local shortname="$(getArgument "$1" "Invalid Argument" true)" |
|||
for i in "${!shortnames[@]}" |
|||
do |
|||
if [ "${shortnames[$i]}" == "$shortname" ] |
|||
then |
|||
echo "${customers[$i]}" |
|||
fi |
|||
done |
|||
} |
|||
|
|||
function loadProjectConfig |
|||
{ |
|||
local shortname="$(getArgument "$1" "Invalid Argument" true)" |
|||
local customer="$(getCustomerFromShortname "$shortname")" |
|||
local project="$(getProjectFromShortname "$shortname")" |
|||
|
|||
if [ "$customer" == "" ] || [ "$project" == "" ] |
|||
then |
|||
echo |
|||
echoError "Could not load project with name: $shortname" |
|||
echo |
|||
exit |
|||
fi |
|||
|
|||
local path="$project_manager_dir/data/$customer/$project" |
|||
local plugin_path="$project_manager_dir/plugins" |
|||
local plugins="$(ls -t "$plugin_path")" |
|||
|
|||
source "$path/etc/config" |
|||
for plugin in ${plugins[*]} |
|||
do |
|||
if [ -f "$path/etc/plugins/$plugin/config" ] |
|||
then |
|||
source "$path/etc/plugins/$plugin/config" |
|||
fi |
|||
done |
|||
} |
|||
|
|||
function postScript { |
|||
local script=$(getArgument "$1" "Usage: postScript \"post_script.sh\"" true) |
|||
if [ -f "$script" ] |
|||
then |
|||
source "$script" |
|||
fi |
|||
} |
|||
|
|||
function getConfig { |
|||
local env=$(getArgument "$1" "Usage getEnvVar [live|stage|local_live|local_stage] var" "live stage local_live local_stage") |
|||
local suffix=$(getArgument "$2" "Usage getEnvVar [live|stage|local_live|local_stage] var" true) |
|||
echo "$(eval "echo \"\$${env}_$suffix\"")" |
|||
} |
|||
|
|||
function sedEscape { |
|||
echo "$1" | sed -r 's/([\$\.\*\/\[\\^])/\\\1/g' | sed 's/[]]/\[]]/g' |
|||
} |
|||
|
|||
function confirm { |
|||
confirm="$(readConsole "Should i execute? [y,n]" "Invalid selection" "y n")" |
|||
|
|||
if [ "$confirm" == "n" ] |
|||
then |
|||
echo |
|||
echoError "Aborting" |
|||
echo |
|||
exit |
|||
fi |
|||
} |
|||
|
|||
|
|||
plugin_dir="$project_manager_dir/plugins" |
|||
plugins="$(ls -t "$plugin_dir")" |
|||
for plugin in ${plugins[*]} |
|||
do |
|||
if [ -f "$plugin_dir/$plugin/includes/includes" ] |
|||
then |
|||
source "$plugin_dir/$plugin/includes/includes" |
|||
fi |
|||
done |
|||
|
|||
fi |
@ -1,166 +0,0 @@ |
|||
#!/bin/bash |
|||
|
|||
if [ true != ${includes_included:-false} ] |
|||
then |
|||
includes_included=true |
|||
|
|||
function echoMainTitle { |
|||
echo -e "\033[1;34m$1\033[0m" |
|||
} |
|||
|
|||
function echoSubTitle { |
|||
echo -e "\033[0;32m$1\033[0m" |
|||
} |
|||
|
|||
function echoSelect { |
|||
local select="$1" |
|||
local message="$2" |
|||
echo -e "\033[0;33m$select\033[0m $message" |
|||
} |
|||
|
|||
function echoError { |
|||
echo -e "\033[0;91m$1\033[0m" |
|||
} |
|||
|
|||
function getArgument { |
|||
local var=$1 |
|||
local errmsg=$2 |
|||
local allow=${3:-false} |
|||
|
|||
if [ "$allow" != false ] && [ "$(isAllowed "$var" "$allow")" == false ] |
|||
then |
|||
echo "$errmsg" >&2 |
|||
exit 1 |
|||
fi |
|||
|
|||
echo "$var" |
|||
} |
|||
|
|||
function isAllowed { |
|||
local var="$1" |
|||
local allow="$2" |
|||
local valid=true |
|||
|
|||
if [ "$allow" == true ] && [ "$var" == "" ] |
|||
then |
|||
valid=false |
|||
elif [ "$allow" != false ] && [ "$allow" != true ] |
|||
then |
|||
allow=($allow) |
|||
local found=false |
|||
for i in "${!allow[@]}" |
|||
do |
|||
if [ "${allow[$i]}" == "$var" ] |
|||
then |
|||
found=true |
|||
fi |
|||
done |
|||
if [ "$found" != true ] |
|||
then |
|||
valid=false |
|||
fi |
|||
fi |
|||
|
|||
echo $valid |
|||
} |
|||
|
|||
function readConsole { |
|||
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 |
|||
echo "$errmsg" >&2 |
|||
var=$(readConsole "$message" "$errmsg" "$allow") |
|||
fi |
|||
|
|||
echo "$var" |
|||
} |
|||
|
|||
function addSSHKey { |
|||
local env=$(getArgument "$1" "Usage: addSSHKey [live|stage|git]" "live stage git") |
|||
local ssh_key_file=$(eval "echo \"\$${env}_has_ssh_key_file\"") |
|||
|
|||
if [ "$ssh_key_file" != "" ] |
|||
then |
|||
copySSHKeys "$env" |
|||
else |
|||
installSSHKey "$env" |
|||
fi |
|||
ssh-add "$app_dir/.ssh/$env" |
|||
} |
|||
|
|||
function copySSHKeys { |
|||
local env=$(getArgument "$1" "Usage: copySSHKeys [live|stage|git]" "live stage git") |
|||
local source=$(eval "echo \$${env}_ssh_key_file") |
|||
local target="$app_dir/.ssh/$env" |
|||
|
|||
if [ -f "$source" ] && [ ! -f "$target" ] |
|||
then |
|||
cp "$source" "$target" |
|||
chmod 0600 "$target" |
|||
else |
|||
echoError "Could not copy ssh key file" >&2 |
|||
exit 1 |
|||
fi |
|||
if [ -f "$source.pub" ] && [ ! -f "$target.pub" ] |
|||
then |
|||
cp "$source.pub" "$target.pub" |
|||
chmod 0600 "$target.pub" |
|||
else |
|||
echoError "Could not copy ssh key file" >&2 |
|||
exit 1 |
|||
fi |
|||
} |
|||
|
|||
function installSSHKey { |
|||
local env=$(getArgument "$1" "Usage: installSSHKey [live|stage|git]" "live stage git") |
|||
local file=$(eval "echo \"\$${env}_ssh_key_file\"") |
|||
local user=$(eval "echo \"\$${env}_ssh_user\"") |
|||
local domain=$(eval "echo \"\$${env}_ssh_domain\"") |
|||
|
|||
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" |
|||
chmod 0600 "$app_dir/.ssh/$env.pub" |
|||
|
|||
echo "Please enter SSH $env system password:" |
|||
ssh-copy-id -i "$app_dir/.ssh/$env.pub" "$user"@"$domain" |
|||
fi |
|||
} |
|||
|
|||
function buildIgnoredTablesArguments { |
|||
local env=$(getArgument "$1" "Usage: buildIgnoredTables [live|stage|local] [ignoredTablesArray]" "live stage local") |
|||
local ignoredTables=$(getArgument "$2" "Usage: buildIgnoredTables [live|stage|local] [ignoredTablesArray]" true) |
|||
|
|||
local database_name=$(eval "echo \"\$${env}_database_name\"") |
|||
|
|||
ignoredTables=($ignoredTables) |
|||
local ignoredTablesArguments="" |
|||
for table in "${ignoredTables[@]}" |
|||
do |
|||
ignoredTablesArguments="$ignoredTablesArguments --ignore-table=\"${database_name}.${table}\"" |
|||
done |
|||
|
|||
echo "$ignoredTablesArguments" |
|||
} |
|||
|
|||
function postScript { |
|||
local script=$(getArgument "$1" "Usage: postScript \"post_script.sh\"" true) |
|||
if [ -f "$script" ] |
|||
then |
|||
source "$script" |
|||
fi |
|||
} |
|||
fi |
@ -0,0 +1,15 @@ |
|||
#!/bin/bash |
|||
|
|||
source "$project_manager_dir/bin/includes/includes" |
|||
shortname="$(getArgument "$1" "$(usage)" true)" |
|||
project="$(getProjectFromShortname "$shortname")" |
|||
customer="$(getCustomerFromShortname "$shortname")" |
|||
loadProjectConfig "$shortname" |
|||
app_dir="$project_manager_dir/data/$customer/$project" |
|||
|
|||
help="$(getParameter "--help" false "$*")" |
|||
if [ "$help" == true ] || [ "$1" == "" ] |
|||
then |
|||
usage |
|||
exit |
|||
fi |
@ -1,100 +0,0 @@ |
|||
#!/bin/bash |
|||
|
|||
set -e |
|||
|
|||
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 "What do you want to do today?" |
|||
|
|||
echo |
|||
echoSelect "[1]" "Databaseupdate" |
|||
echoSelect "[2]" "Fetching Files" |
|||
echo |
|||
main_selection=$(readConsole "Select: " "Invalid selection" "1 2") |
|||
words=( |
|||
'databaseupdate' |
|||
'files' |
|||
) |
|||
|
|||
for i in "${!words[@]}" |
|||
do |
|||
((cur=i+1)) |
|||
if [ $cur == "$main_selection" ] |
|||
then |
|||
main_selection=${words[$i]} |
|||
fi |
|||
done |
|||
|
|||
echo $main_selection |
|||
|
|||
if [ "$main_selection" == "databaseupdate" ] |
|||
then |
|||
echo |
|||
echoSubTitle "Databaseupdate" |
|||
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 database from $env to local ($env)? [y,n]: " "Invalid selection" "y n") |
|||
|
|||
if [ "$confirm" == "y" ] |
|||
then |
|||
source "$app_dir/bin/commands/import_db.sh" "$env" |
|||
else |
|||
echo "Aborted" |
|||
fi |
|||
fi |
|||
|
|||
if [ "$main_selection" == "files" ] |
|||
then |
|||
echo |
|||
echoSubTitle "Fetching Files" |
|||
echo |
|||
echo "From Environment:" |
|||
echo |
|||
echoSelect "[live] " "Live" |
|||
echoSelect "[stage] " "Stage" |
|||
env=$(readConsole "Select: " "Invalid selection" "live stage") |
|||
|
|||
echoSubTitle "Select a directory:" |
|||
echo |
|||
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 |
|||
files_selection=$(readConsole "Please give a subpath to the shopware root on $env: ", "Invalid selection", true) |
|||
else |
|||
for i in "${!values[@]}" |
|||
do |
|||
((cur=i+1)) |
|||
if [ "$cur" == "$files_selection" ] |
|||
then |
|||
files_selection="${values[$i]}" |
|||
fi |
|||
done |
|||
fi |
|||
|
|||
echo |
|||
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" "$files_selection" |
|||
else |
|||
echo "Aborted" |
|||
fi |
|||
fi |
@ -0,0 +1,149 @@ |
|||
#!/bin/bash |
|||
set -e |
|||
|
|||
project_manager_dir="$(readlink -f "$(dirname "$(readlink -f ${BASH_SOURCE[0]})")/..")" |
|||
source "$project_manager_dir/bin/includes/includes" |
|||
if [ -f "$project_manager_dir/etc/config" ] |
|||
then |
|||
source "$project_manager_dir/etc/config" |
|||
fi |
|||
|
|||
if [ -f "$project_manager_dir/etc/projects" ] |
|||
then |
|||
source "$project_manager_dir/etc/projects" |
|||
fi |
|||
|
|||
function use { |
|||
echo |
|||
echoMainTitle "Sumedia Project Manager" |
|||
echoSmall "Manager: $project_manager_dir" |
|||
echoSmall "Workspaces: $workspaces_dir" |
|||
echo |
|||
echoSubTitle "Usage:" |
|||
echo |
|||
echo "project-manager [command] [command-args]" |
|||
echo "project-manager [plugin:command] [command-args]" |
|||
echo |
|||
echo "--help Prints this message" |
|||
echo "--help [command] Prints the help message for a command" |
|||
echo "--help [plugin:command] Prints the help message for a command" |
|||
echo "--list-commands List all commands" |
|||
echo "--list-commands [plugin] List all plugin commands" |
|||
echo "--list-plugins List all plugins" |
|||
echo |
|||
} |
|||
|
|||
function list { |
|||
local dir=$1 |
|||
|
|||
echo >&2 |
|||
echoSubTitle "List $dir" >&2 |
|||
echo >&2 |
|||
|
|||
dir=($(ls -t "$project_manager_dir/$dir")) |
|||
for script in "${dir[@]}" |
|||
do |
|||
echo "- $script" >&2 |
|||
done |
|||
echo >&2 |
|||
} |
|||
|
|||
if [ "$1" == "" ] |
|||
then |
|||
use |
|||
exit |
|||
fi |
|||
|
|||
help="$(getParameter "--help" false "$*")" |
|||
list_commands="$(getParameter "--list-commands" false "$*")" |
|||
list_plugins="$(getParameter "--list-plugins" false "$*")" |
|||
|
|||
if [[ "$1" == *"--"* ]]; then key=2; else key=1; fi |
|||
param="$(eval "echo \"\$${key}\"")" |
|||
if [[ "$param" == *":"* ]] |
|||
then |
|||
command="$(echo "$param" | cut -f2 -d':')" |
|||
plugin="$(echo "$param" | cut -f1 -d':')" |
|||
else |
|||
command=$param |
|||
plugin="" |
|||
fi |
|||
|
|||
if [ ! -f "$project_manager_dir/etc/config" ] || [ ! -f "$project_manager_dir/etc/projects" ] |
|||
then |
|||
command="install-project-manager" |
|||
plugin="" |
|||
fi |
|||
|
|||
if [ "$help" == true ] || [ "$list_commands" == true ] || [ "$list_plugins" == "true" ] |
|||
then |
|||
|
|||
if [ "$command" == "" ] |
|||
then |
|||
use |
|||
exit |
|||
elif [ "$command" != "" ] && [ "$plugin" != "" ] && [ "$help" == true ] |
|||
then |
|||
file="$project_manager_dir/plugins/$plugin/commands/$command" |
|||
if [ ! -f "$file" ] |
|||
then |
|||
echo |
|||
echoError "No such file or directory: $file" |
|||
echo |
|||
exit |
|||
else |
|||
source "$file" --help |
|||
exit |
|||
fi |
|||
elif [ "$command" != "" ] && [ "$help" == true ] |
|||
then |
|||
file="$project_manager_dir/bin/commands/$command" |
|||
if [ ! -f "$file" ] |
|||
then |
|||
echo |
|||
echoError "No such file or directory: $file" |
|||
echo |
|||
exit |
|||
else |
|||
source "$file" --help |
|||
exit |
|||
fi |
|||
elif [ "$command" != "" ] && [ "$plugin" != "" ] && [ "$list_commands" == true ] |
|||
then |
|||
list "plugins/$plugin/commands" |
|||
elif [ "$command" != "" ] && [ "$list_commands" == true ] |
|||
then |
|||
list "bin/commands" |
|||
elif [ "$list_plugins" == true ] |
|||
then |
|||
list "plugins" |
|||
fi |
|||
|
|||
else |
|||
|
|||
if [ "$plugin" != "" ] |
|||
then |
|||
file="$project_manager_dir/plugins/$plugin/commands/$command" |
|||
else |
|||
file="$project_manager_dir/bin/commands/$command" |
|||
fi |
|||
|
|||
if [ ! -f "$file" ] |
|||
then |
|||
echo |
|||
echoError "No such file or directory: $file" |
|||
echo |
|||
exit |
|||
else |
|||
source "$file" "${@:2}" |
|||
fi |
|||
|
|||
echo |
|||
echoSubTitle "Running postscripts ..." |
|||
postScript "$project_manager_dir/bin/postscripts/project-manager" |
|||
|
|||
echo |
|||
echoSuccess "Project Manager done" |
|||
echo |
|||
|
|||
fi |
@ -0,0 +1,35 @@ |
|||
#!/bin/bash |
|||
|
|||
### GENERAL |
|||
|
|||
app_customer="" |
|||
app_project="" |
|||
app_project_manager_dir="" |
|||
|
|||
### STAGE |
|||
|
|||
stage_httpdocs_path="" |
|||
stage_httpdocs_git_subpath="" |
|||
stage_httpdocs_shopware_subpath="" |
|||
|
|||
### LIVE |
|||
|
|||
live_httpdocs_path="" |
|||
live_httpdocs_git_subpath="" |
|||
live_httpdocs_shopware_subpath="" |
|||
|
|||
### LOCAL STAGE |
|||
|
|||
local_stage_host="" |
|||
|
|||
### LOCAL LIVE |
|||
|
|||
local_live_host="" |
|||
|
|||
### POST SCRIPT |
|||
|
|||
app_dir="$app_project_manager_dir/data/$customer/$project" |
|||
if [ -f "$app_dir/etc/post_config.sh" ] |
|||
then |
|||
source "$app_dir/etc/post_config.sh" |
|||
fi |
@ -0,0 +1,5 @@ |
|||
#!/bin/bash |
|||
|
|||
workspaces_dir="" |
|||
project_manager_dir="" |
|||
|
@ -0,0 +1,5 @@ |
|||
#!/bin/bash |
|||
|
|||
projects=() |
|||
shortnames=() |
|||
customers=() |
@ -0,0 +1,49 @@ |
|||
#!/bin/bash |
|||
|
|||
### STAGE |
|||
|
|||
db_stage_socket="" |
|||
db_stage_host="" |
|||
db_stage_port="" |
|||
db_stage_name="" |
|||
db_stage_user="" |
|||
db_stage_password="" |
|||
|
|||
db_stage_admin_user="" |
|||
db_stage_admin_password="" |
|||
|
|||
### LIVE |
|||
|
|||
db_live_socket="" |
|||
db_live_host="" |
|||
db_live_port="" |
|||
db_live_name="" |
|||
db_live_user="" |
|||
db_live_password="" |
|||
|
|||
db_live_admin_user="" |
|||
db_live_admin_password="" |
|||
|
|||
### LOCAL_STAGE |
|||
|
|||
db_local_stage_socket="" |
|||
db_local_stage_host="" |
|||
db_local_stage_port="" |
|||
db_local_stage_name="" |
|||
db_local_stage_user="" |
|||
db_local_stage_password="" |
|||
|
|||
db_local_stage_admin_user="" |
|||
db_local_stage_admin_password="" |
|||
|
|||
### LOCAL_LIVE |
|||
|
|||
db_local_live_socket="" |
|||
db_local_live_host="" |
|||
db_local_live_port="" |
|||
db_local_live_name="" |
|||
db_local_live_user="" |
|||
db_local_live_password="" |
|||
|
|||
db_local_live_admin_user="" |
|||
db_local_live_admin_password="" |
@ -0,0 +1,60 @@ |
|||
#!/bin/bash |
|||
|
|||
function usage { |
|||
echo |
|||
echoMainTitle "Clone repository" |
|||
echo |
|||
echoSubTitle "Usage:" |
|||
echo |
|||
echo "project-manager git:clone [project-shortname]" |
|||
echo |
|||
echo "--help Prints this message" |
|||
echo |
|||
} |
|||
|
|||
source "$project_manager_dir/bin/includes/project_header" |
|||
gitValidate |
|||
|
|||
echo |
|||
echoMainTitle "Cloning Repository" |
|||
|
|||
if [ "$git_url" == "" ] |
|||
then |
|||
echo |
|||
echoError "There is no git url configured" |
|||
echo |
|||
exit |
|||
fi |
|||
|
|||
echo |
|||
echoSubTitle "Please confirm following data" |
|||
echo |
|||
if [ "$git_ssh_private_key" != "" ] |
|||
then |
|||
echo "SSH Private Key File: $git_ssh_public_key" |
|||
fi |
|||
if [ "$git_ssh_public_key" != "" ] |
|||
then |
|||
echo "SSH Public Key File: $git_ssh_public_key" |
|||
fi |
|||
echo "GIT Url: $git_url" |
|||
echo "GIT User: $git_ssh_user" |
|||
echo "GIT Domain: $git_ssh_domain" |
|||
echo "Install Location: $workspaces_dir/$customer/$project" |
|||
echo |
|||
confirm="$(readConsole "Should i execute [y,n]:" "Invalid selection" "y n")" |
|||
|
|||
if [ "$confirm" == "n" ] |
|||
then |
|||
echo |
|||
echoError "Aborting" |
|||
echo |
|||
exit; |
|||
fi |
|||
|
|||
sshAddKey "git" |
|||
git clone "$git_url" "$workspaces_dir/$customer/$project" |
|||
|
|||
echo |
|||
echoSuccess "GIT cloned" |
|||
echo |
@ -0,0 +1,9 @@ |
|||
#!/bin/bash |
|||
|
|||
### GIT |
|||
|
|||
git_url="" |
|||
git_ssh_user="" |
|||
git_ssh_domain="" |
|||
git_ssh_private_key="" |
|||
git_ssh_public_key="" |
@ -0,0 +1,13 @@ |
|||
#!/bin/bash |
|||
|
|||
git_included=true |
|||
|
|||
function gitValidate { |
|||
if [ "$git_url" == "" ] |
|||
then |
|||
echo >&2 |
|||
echoError "Please configure $project_manager_dir/data/$customer/$project/etc/plugins/git/config" >&2 |
|||
echo >&2 |
|||
exit |
|||
fi |
|||
} |
@ -0,0 +1,88 @@ |
|||
#!/bin/bash |
|||
|
|||
### GENERAL |
|||
|
|||
shopware_version="" |
|||
|
|||
shopware6_httpdocs_subpath="" |
|||
|
|||
shopware6_local_user="" |
|||
shopware6_local_email="" |
|||
shopware6_local_firstname="" |
|||
shopware6_local_lastname="" |
|||
|
|||
shopware6_install_name="" |
|||
shopware6_install_email="" |
|||
shopware6_install_locale="" |
|||
shopware6_install_currency="" |
|||
shopware6_install_storefront_name="" |
|||
shopware6_install_storefront_url="" |
|||
|
|||
### URL MAPPING |
|||
|
|||
shopware6_live_urls=() |
|||
shopware6_stage_urls=() |
|||
shopware6_local_urls=() |
|||
|
|||
### GDPR SHOPWARE 6 TABLES |
|||
|
|||
shopware6_gdpr_tables=( |
|||
acl_user_role |
|||
cart |
|||
customer |
|||
customer_address |
|||
customer_recovery |
|||
customer_tag |
|||
customer_wishlist |
|||
customer_wishlist_product |
|||
elasticsearch_index_task |
|||
import_export_log |
|||
integration |
|||
integration_role |
|||
log_entry |
|||
message_queue_stats |
|||
newsletter_recipient |
|||
newsletter_recipient_tag |
|||
order |
|||
order_address |
|||
order_customer |
|||
order_delivery |
|||
order_delivery_position |
|||
order_line_item |
|||
order_tag |
|||
order_transaction |
|||
product_export |
|||
product_review |
|||
promotion_persona_customer |
|||
refresh_token |
|||
sales_channel_api_context |
|||
state_machine_history |
|||
user |
|||
user_access_key |
|||
user_config |
|||
user_recovery |
|||
version |
|||
version_commit |
|||
version_commit_data |
|||
klarna_payment_request_log |
|||
payone_payment_card |
|||
payone_payment_mandate |
|||
payone_payment_redirect |
|||
unzer_payment_payment_device |
|||
unzer_payment_transfer_info |
|||
enqeueue |
|||
product_keyword_dictionary |
|||
product_search_keyword |
|||
) |
|||
|
|||
### Media Files |
|||
|
|||
shopware6_shared_files=( |
|||
"/files" |
|||
"/public/media" |
|||
"/public/thumbnails" |
|||
) |
|||
|
|||
### MAILER |
|||
|
|||
shopware6_local_mailer_url="" |
@ -0,0 +1,47 @@ |
|||
#!/bin/bash |
|||
|
|||
function shopware6BuildIgnoredTablesArguments { |
|||
local env=$(getArgument "$1" "Usage: buildIgnoredTables [live|stage|local] [ignoredTablesArray]" "live stage local") |
|||
local ignoredTables=$(getArgument "$2" "Usage: buildIgnoredTables [live|stage|local] [ignoredTablesArray]" true) |
|||
|
|||
local database_name=$(eval "echo \"\$${env}_database_name\"") |
|||
|
|||
ignoredTables=($ignoredTables) |
|||
local ignoredTablesArguments="" |
|||
for table in "${ignoredTables[@]}" |
|||
do |
|||
ignoredTablesArguments="$ignoredTablesArguments --ignore-table=\"${database_name}.${table}\"" |
|||
done |
|||
|
|||
echo "$ignoredTablesArguments" |
|||
} |
|||
|
|||
function shopware6GetSecret { |
|||
local prop="$(getArgument "$1" "Usage: getSecret [APP_SECRET|INSTANCE_ID]" "APP_SECRET INSTANCE_ID")" |
|||
local httpdocs_shopware_subpath="$(getConfig "local" "httpdocs_shopware_subpath")" |
|||
local path="$app_dir/git/$project_name$httpdocs_shopware_subpath" |
|||
|
|||
app_secret="$(cat "$app_dir/etc/app_secret")" |
|||
app_secret="$(if [ "$app_secret" == "" ]; then echo "$(_shopware6GetRemoteSecret "live" "$prop")"; else echo "$app_secret"; fi)" |
|||
app_secret="$(if [ "$app_secret" == "" ]; then echo "$(_shopware6GetRemoteSecret "stage" "$prop")"; else echo "$app_secret"; fi)" |
|||
app_secret="$(if [ "$app_secret" == "" ]; then echo "$(cat \""$path/.env"\" | sed -i -r "s/^$prop=\(.*\)\$/\\1/")"; else echo "$app_secret"; fi)" |
|||
app_secret="$(if [ "$app_secret" == "" ]; then echo "$(_shopware6GenerateSecret)"; else echo "$app_secret"; fi)" |
|||
} |
|||
|
|||
function _shopware6GetRemoteSecret { |
|||
local env="$(getArgument "$1" "Usage: _getRemoteSecret [live|stage] [APP_SECRET|INSTANCE_ID]" "live stage")" |
|||
local prop="$(getArgument "$2" "Usage: _getRemoteSecret [live|stage] [APP_SECRET|INSTANCE_ID]" "APP_SECRET INSTANCE_ID")" |
|||
local ssh_user="$(getConfig "$env" "ssh_user")" |
|||
local ssh_domain="$(getConfig "$env" "ssh_domain")" |
|||
local httpdocs_path="$(getConfig "$env" "httpdocs_path")" |
|||
local httpdocs_git_subpath="$(getConfig "$env" "httpdocs_git_subpath")" |
|||
local httpdocs_shopware_subpath="$(getConfig "$env" "httpdocs_shopware_subpath")" |
|||
local path="$httpdocs_path$httpdocs_git_subpath$httpdocs_shopware_subpath" |
|||
|
|||
addSSHKey "$env" |
|||
echo "$(ssh "$ssh_user"@"$ssh_domain" "cat \"$path/.env"\" | sed -i -r "s/^$prop=\(.*\)\$/\\1/")" |
|||
} |
|||
|
|||
function _shopware6GenerateSecret { |
|||
echo openssl rand -hex 32 |
|||
} |
@ -0,0 +1,70 @@ |
|||
#!/bin/bash |
|||
|
|||
function usage { |
|||
echo |
|||
echoMainTitle "Create, move the ssh keys and install them to server" |
|||
echo |
|||
echoSubTitle "Usage:" |
|||
echo |
|||
echo "project-manager ssh:add-key [project-shortname] [env]" |
|||
echo |
|||
echo " [env] could be live, stage or git" |
|||
echo |
|||
echo "--help Prints this message" |
|||
echo |
|||
} |
|||
|
|||
source "$project_manager_dir/bin/includes/project_header" |
|||
env="$(getArgument "$2" "$(usage)" "live stage git")" |
|||
sshValidate |
|||
|
|||
ssh_private_key="$(sshGetConfig "$env" "private_key")" |
|||
ssh_public_key="$(sshGetConfig "$env" "public_key")" |
|||
ssh_user="$(sshGetConfig "$env" "user")" |
|||
ssh_domain="$(sshGetConfig "$env" "domain")" |
|||
|
|||
echo "$ssh_private_key" |
|||
echo "$ssh_public_key" |
|||
echo "$ssh_user" |
|||
echo "$ssh_domain" |
|||
|
|||
echo |
|||
echoMainTitle "Adding SSH Keys" |
|||
echo |
|||
echoSubTitle "Please verify data" |
|||
echo |
|||
echo "-- $env" |
|||
echo "Private key: $ssh_private_key" |
|||
echo "Public key: $ssh_public_key" |
|||
echo |
|||
confirm |
|||
|
|||
if [ "$ssh_private_key" != "" ] |
|||
then |
|||
target="$app_dir/.ssh/$env" |
|||
if [ -f "$source" ] && [ ! -f "$target" ] |
|||
then |
|||
cp "$ssh_private_key" "target" |
|||
chmod 0600 "$target" |
|||
fi |
|||
fi |
|||
|
|||
if [ "$ssh_public_key" != "" ] |
|||
then |
|||
target="$app_dir/.ssh/$env.pub" |
|||
if [ -f "$source" ] && [ ! -f "$target" ] |
|||
then |
|||
cp "$ssh_public_key" "target" |
|||
chmod 0600 "$target" |
|||
fi |
|||
fi |
|||
|
|||
if [ "$ssh_private_key" == "" ] && [ "$ssh_public_key" == "" ] && [ ! -f "$app_dir/.ssh/$env" ] && [ ! -f "$app_dir/.ssh/$env.pub" ] |
|||
then |
|||
ssh-keygen -b 4096 -t rsa -f "$app_dir/.ssh/$env" -q -N "" |
|||
chmod 0600 "$app_dir/.ssh/$env" |
|||
chmod 0600 "$app_dir/.ssh/$env.pub" |
|||
ssh-copy-id -i "$app_dir/.ssh/$env.pub" "$ssh_user"@"$ssh_domain" |
|||
fi |
|||
|
|||
ssh-add "$app_dir/.ssh/$env" |
@ -0,0 +1,15 @@ |
|||
#!/bin/bash |
|||
|
|||
### STAGE |
|||
|
|||
ssh_stage_user="" |
|||
ssh_stage_domain="" |
|||
ssh_stage_private_key="" |
|||
ssh_stage_public_key="" |
|||
|
|||
### LIVE |
|||
|
|||
ssh_live_user="" |
|||
ssh_live_domain="" |
|||
ssh_live_private_key="" |
|||
ssh_live_public_key="" |
@ -0,0 +1,161 @@ |
|||
#!/bin/bash |
|||
|
|||
ssh_included=true |
|||
|
|||
function sshValidate { |
|||
if [ "$ssh_stage_user" == "" ] || [ "$ssh_stage_domain" == "" ] || [ "$ssh_live_user" == "" ] || [ "$ssh_live_domain" == "" ] |
|||
then |
|||
echo >&2 |
|||
echoError "Please configure $project_manager_dir/data/$customer/$project/etc/plugins/ssh/config" >&2 |
|||
echo >&2 |
|||
exit |
|||
fi |
|||
|
|||
if [ "$git_included" == "" ] |
|||
then |
|||
echo >&2 |
|||
echoError "Plugin \"git\" has to be included" >&2 |
|||
echo >&2 |
|||
exit |
|||
fi |
|||
|
|||
if [ "$git_ssh_user" == "" ] || [ "$git_ssh_domain" == "" ] |
|||
then |
|||
echo >&2 |
|||
echoError "Please configure $project_manager_dir/data/$customer/$project/etc/plugins/git/config" >&2 |
|||
echo >&2 |
|||
exit |
|||
fi |
|||
} |
|||
|
|||
|
|||
function sshGetConfig { |
|||
local env=$(getArgument "$1" "Usage getEnvVar [live|stage|git] var" "live stage git") |
|||
local suffix=$(getArgument "$2" "Usage getEnvVar [live|stage|git] var" true) |
|||
|
|||
if [ "$env" == "live" ] || [ "$env" == "stage" ] |
|||
then |
|||
echo "$(eval "echo \"\$ssh_${env}_$suffix\"")" |
|||
else |
|||
echo "$(eval "echo \"\$${env}_ssh_$suffix\"")" |
|||
fi |
|||
} |
|||
|
|||
function sshGetPrivateKey |
|||
{ |
|||
local env=$(getArgument "$1" "Usage: sshGetPrivateKey [live|stage|git]" "live stage git") |
|||
|
|||
if [ "$env" == "live" ] || [ "$env" == "stage" ] |
|||
then |
|||
echo "$(sshGetConfig "$env" "private_key")" |
|||
else |
|||
echo "$ssh_private_key" |
|||
fi |
|||
} |
|||
|
|||
function sshGetPublicKey |
|||
{ |
|||
local env=$(getArgument "$1" "Usage: addSSHPublic [live|stage|git]" "live stage git") |
|||
|
|||
if [ "$env" == "live" ] || [ "$env" == "stage" ] |
|||
then |
|||
echo "$(sshGetConfig "$env" "private_key")" |
|||
else |
|||
echo "$ssh_private_key" |
|||
fi |
|||
} |
|||
|
|||
function sshAddKey { |
|||
local env="$(getArgument "$1" "Usage: sshAddKey [live|stage|git]" "live stage git")" |
|||
local ssh_private_key="$(sshGetPrivateKey "$env")" |
|||
local ssh_public_key="$(sshGetPublicKey "$env")" |
|||
|
|||
if [ "$ssh_private_key" != "" ] && [ "$ssh_public_key" != "" ] |
|||
then |
|||
if [ ! -f "$app_dir/.ssh/$env" ] && [ ! -f "$app_dir/.ssh/$env.pub" ] |
|||
then |
|||
sshCopyKeys "$env" |
|||
fi |
|||
else |
|||
if [ ! -f "$app_dir/.ssh/$env" ] && [ ! -f "$app_dir/.ssh/$env.pub" ] |
|||
then |
|||
sshInstallKeys "$env" |
|||
fi |
|||
fi |
|||
ssh-add "$app_dir/.ssh/$env" |
|||
} |
|||
|
|||
function sshCopyKeys { |
|||
local env=$(getArgument "$1" "Usage: sshCopyKeys [live|stage|git]" "live stage git") |
|||
local ssh_private_key="$(sshGetPrivateKey "$env")" |
|||
local ssh_public_key="$(sshGetPublicKey "$env")" |
|||
|
|||
if [ ! -f "$ssh_private_key" ] && [ ! -f "$ssh_public_key" ] |
|||
then |
|||
echo |
|||
echoError "Configureg $env key files don't exists" >&2 |
|||
echo |
|||
exit |
|||
fi |
|||
|
|||
if [ -f "$app_dir/.ssh/$env" ] |
|||
then |
|||
echo |
|||
echoError "SSH $env private key already exists" >&2 |
|||
echo |
|||
exit |
|||
fi |
|||
|
|||
if [ -f "$app_dir/.ssh/$env.pub" ] |
|||
then |
|||
echo |
|||
echoError "SSH $env public key already exists" >&2 |
|||
echo |
|||
exit |
|||
fi |
|||
|
|||
cp "$ssh_private_key" "$app_dir/.ssh/$env" |
|||
chmod 0600 "$app_dir/.ssh/$env" |
|||
|
|||
cp "$ssh_public_key" "$app_dir/.ssh/$env.pub" |
|||
chmod 0600 "$app_dir/.ssh/$env.pub" |
|||
} |
|||
|
|||
function sshInstallKeys { |
|||
local env=$(getArgument "$1" "Usage: sshInstallKeys [live|stage|git]" "live stage git") |
|||
local ssh_private_key="$(sshGetPrivateKey "$env")" |
|||
local ssh_public_key="$(sshGetPublicKey "$env")" |
|||
local user="$(sshGetConfig "$env" "user")" |
|||
local domain="$(sshGetConfig "$env" "domain")" |
|||
|
|||
if [ -f "$ssh_private_key" ] && [ -f "$ssh_public_key" ] |
|||
then |
|||
echo |
|||
echoError "Can't create $env key files, there are already some configured" >&2 |
|||
echo |
|||
exit |
|||
fi |
|||
|
|||
if [ -f "$app_dir/.ssh/$env" ] |
|||
then |
|||
echo |
|||
echoError "SSH $env private key already exists" >&2 |
|||
echo |
|||
exit |
|||
fi |
|||
|
|||
if [ -f "$app_dir/.ssh/$env.pub" ] |
|||
then |
|||
echo |
|||
echoError "SSH $env public key already exists" >&2 |
|||
echo |
|||
exit |
|||
fi |
|||
|
|||
ssh-keygen -b 4096 -t rsa -f "$app_dir/.ssh/$env" -q -N "" |
|||
chmod 0600 "$app_dir/.ssh/$env" |
|||
chmod 0600 "$app_dir/.ssh/$env.pub" |
|||
|
|||
echo "Please enter SSH $env system password:" |
|||
ssh-copy-id -i "$app_dir/.ssh/$env.pub" "$user"@"$domain" |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue