Ein für Shopware 6 vorbereitet Systemmanagment.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

162 lines
4.3 KiB

2 years ago
  1. #!/bin/bash
  2. if [ true != ${includes_included:-false} ]
  3. then
  4. includes_included=true
  5. function echoMainTitle {
  6. echo -e "\033[1;34m$1\033[0m"
  7. }
  8. function echoSubTitle {
  9. echo -e "\033[0;32m$1\033[0m"
  10. }
  11. function echoSelect {
  12. local select="$1"
  13. local message="$2"
  14. echo -e "\033[0;33m$select\033[0m $message"
  15. }
  16. function echoError {
  17. echo -e "\033[0;91m$1\033[0m"
  18. }
  19. function getArgument {
  20. local errmsg=$2
  21. local allow=${3:-false}
  22. local var=$1
  23. if [ "$allow" != false ] && [ "$(isAllowed "$var" "$allow")" == false ]
  24. then
  25. echo "$errmsg" >&2
  26. exit 1
  27. fi
  28. echo "$var"
  29. }
  30. function isAllowed {
  31. local var="$1"
  32. local allow="$2"
  33. local valid=true
  34. if [ "$allow" == true ] && [ "$var" == "" ]
  35. then
  36. valid=false
  37. elif [ "$allow" != false ] && [ "$allow" != true ]
  38. then
  39. allow=($allow)
  40. local found=false
  41. for i in "${!allow[@]}"
  42. do
  43. if [ "${allow[$i]}" == "$var" ]
  44. then
  45. found=true
  46. fi
  47. done
  48. if [ "$found" != true ]
  49. then
  50. valid=false
  51. fi
  52. fi
  53. echo $valid
  54. }
  55. function readConsole {
  56. local message="$1"
  57. local errmsg="$2"
  58. local allow=${3:-false}
  59. read -p "$message" var
  60. if [ "$(isAllowed "$var" "$allow")" == false ]
  61. then
  62. echo "$errmsg" >&2
  63. var=$(readConsole "$message" "$errmsg" "$allow")
  64. fi
  65. echo "$var"
  66. }
  67. function addSSHKey {
  68. local env=$(getArgument "$1" "Usage: addSSHKey [live|stage|git]" "live stage git")
  69. local ssh_key_file="$app_dir/.ssh/$env"
  70. local has_ssh_key_file=$(eval "echo \"\$${env}_has_ssh_key_file\"")
  71. if [ "$has_ssh_key_file" == "y" ]
  72. then
  73. copySSHKeys "$env"
  74. else
  75. installSSHKey "$env"
  76. fi
  77. ssh-add "$ssh_key_file"
  78. }
  79. function copySSHKeys {
  80. local env=$(getArgument "$1" "Usage: copySSHKeys [live|stage|git]" "live stage git")
  81. local has=$(eval "echo \$${env}_has_ssk_key_file")
  82. local source=$(eval "echo \$${env}_ssh_key_file")
  83. local target="$app_dir/.ssh/$env"
  84. if [ -f "$source" ] && [ ! -f "$target" ]
  85. then
  86. cp "$source" "$target"
  87. chmod 0600 "$target"
  88. else
  89. echoError "Could not copy ssh key file" >&2
  90. exit 1
  91. fi
  92. if [ -f "$source.pub" ] && [ ! -f "$target.pub" ]
  93. then
  94. cp "$source.pub" "$target.pub"
  95. chmod 0600 "$target.pub"
  96. else
  97. echoError "Could not copy ssh key file" >&2
  98. exit 1
  99. fi
  100. }
  101. function installSSHKey {
  102. local env=$(getArgument "$1" "Usage: installSSHKey [live|stage|git]" "live stage git")
  103. local has=$(eval "echo \"\$${env}_has_ssh_key_file\"")
  104. local file=$(eval "echo \"\$${env}_ssh_key_file\"")
  105. local user=$(eval "echo \"\$${env}_ssh_user\"")
  106. local domain=$(eval "echo \"\$${env}_ssh_domain\"")
  107. if [ "$has" == "n" ] && [ ! -f "$app_dir/.ssh/$env"]
  108. then
  109. ssh-keygen -b 4096 -t rsa -f "$app_dir/.ssh/$env" -q -N ""
  110. chmod 0600 "$app_dir/.ssh/$env"
  111. chmod 0600 "$app_dir/.ssh/$env.pub"
  112. echo "Please enter SSH $env system password:"
  113. ssh-copy-id -i "$app_dir/.ssh/$env.pub" "$user"@"$domain"
  114. fi
  115. }
  116. function buildIgnoredTablesArguments {
  117. local env=$(getArgument "$1" "Usage: buildIgnoredTables [live|stage|local] [ignoredTablesArray]" "live stage local")
  118. local ignoredTables=$(getArgument "$2" "Usage: buildIgnoredTables [live|stage|local] [ignoredTablesArray]" true)
  119. local database_name=$(eval "echo \"\$${env}_database_name\"")
  120. ignoredTables=($ignoredTables)
  121. local ignoredTablesArguments=""
  122. for table in "${ignoredTables[@]}"
  123. do
  124. ignoredTablesArguments="$ignoredTablesArguments --ignore-table=\"${database_name}.${table}\""
  125. done
  126. echo "$ignoredTablesArguments"
  127. }
  128. function postScript {
  129. local script=$(getArgument "$1" "Usage: postScript \"post_script.sh\"" true)
  130. if [ -f "$script" ]
  131. then
  132. source "$script"
  133. fi
  134. }
  135. fi