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.

175 lines
4.8 KiB

  1. #!/bin/bash
  2. source "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." &> /dev/null && pwd)/etc/config"
  3. source "$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." &> /dev/null && pwd)/etc/projects"
  4. function usage {
  5. echo
  6. echoMainTitle "Creates a new project"
  7. echo
  8. echoSubTitle "Usage:"
  9. echo
  10. echo "create-project [customer] [project] [shortname]"
  11. echo
  12. echo "The given customer and project will result in the file directory as you have setted"
  13. echo "it in project_manager/etc/projects configuration file:"
  14. echo " - workspace_dir/customer/project"
  15. echo " - data_dir/customer/project"
  16. echo "It will set a configuration file for your project to:"
  17. echo " - data_dir/customer/project/etc/config"
  18. echo
  19. echo "--help Prints this message"
  20. echo
  21. }
  22. help="$(getParameter "--help" false "$*")"
  23. if [ "$help" == true ] || [ "$1" == "" ]
  24. then
  25. usage
  26. exit
  27. fi
  28. customer=$(getArgument "$1" "$(usage)" true)
  29. project=$(getArgument "$2" "$(usage)" true)
  30. shortname=$(getArgument "$3" "$(usage)" true)
  31. for p in "${projects[@]}"
  32. do
  33. if [ "$p" == "$project" ]
  34. then
  35. echoError "Project already exists"
  36. echo
  37. exit
  38. fi
  39. done
  40. for s in "${shortnames[@]}"
  41. do
  42. if [ "$s" == "$shortname" ]
  43. then
  44. echoError "Shortname already exists"
  45. echo
  46. exit
  47. fi
  48. done
  49. echo
  50. echoMainTitle "Create project"
  51. echo
  52. echoSubTitle "Please verify data"
  53. echo
  54. echo "Project path: $workspaces_dir/$customer/$project"
  55. echo "Project data path: $project_manager_dir/data/$customer/$project"
  56. echo
  57. confirm
  58. if [ -d "$project_manager_dir/data/$customer/$project" ] || [ -d "$project_manager_dir/data/$customer/$project" ]
  59. then
  60. echo
  61. echoError "Data path already exists"
  62. echo
  63. exit
  64. fi
  65. if [ -d "$workspaces_dir/$customer/$project" ] || [ -d "$workspaces_dir/$customer/$project" ]
  66. then
  67. echo
  68. echoError "Path already exists"
  69. echo
  70. exit
  71. fi
  72. path="$project_manager_dir/data/$customer/$project"
  73. if [ ! -d "$path" ]; then mkdir -p "$path"; fi
  74. if [ ! -d "$path/.ssh" ]; then mkdir "$path/.ssh"; fi
  75. if [ ! -d "$path/backup" ]; then mkdir "$path/backup"; fi
  76. if [ ! -d "$path/backup/database" ]; then mkdir "$path/backup/database"; fi
  77. if [ ! -d "$path/bin" ]; then mkdir "$path/bin"; fi
  78. if [ ! -d "$path/bin/postscripts" ]; then mkdir "$path/bin/postscripts"; fi
  79. if [ ! -d "$path/bin/postscripts/plugins" ]; then mkdir "$path/bin/postscripts/plugins"; fi
  80. if [ ! -d "$path/bin/includes" ]; then mkdir "$path/bin/includes"; fi
  81. if [ ! -d "$path/bin/includes/plugins" ]; then mkdir "$path/bin/includes/plugins"; fi
  82. if [ ! -d "$path/etc" ]; then mkdir "$path/etc"; fi
  83. if [ ! -d "$path/etc/plugins" ]; then mkdir "$path/etc/plugins"; fi
  84. if [ ! -d "$path/shared" ]; then mkdir "$path/shared"; fi
  85. if [ ! -d "$path/shared/live" ]; then mkdir "$path/shared/live"; fi
  86. if [ ! -d "$path/shared/stage" ]; then mkdir "$path/shared/stage"; fi
  87. if [ ! -d "$path/var" ]; then mkdir "$path/var"; fi
  88. if [ ! -d "$path/var/tmp" ]; then mkdir "$path/var/tmp"; fi
  89. if [ ! -d "$path/var/latest" ]; then mkdir "$path/var/latest"; fi
  90. if [ ! -f "$path/etc/config" ]
  91. then
  92. quoted="$(sedEscape "$project_manager_dir")"
  93. cat "$project_manager_dir/etc/.config_template" | \
  94. sed "s/app_customer=''/app_customer='$customer'/" | \
  95. sed "s/app_project=''/app_project='$project'/" | \
  96. sed "s/app_project_manager_dir=''/app_project_manager_dir='$quoted'/" \
  97. > "$path/etc/config"
  98. fi
  99. plugin_path="$project_manager_dir/plugins"
  100. plugins=$(ls -t "$plugin_path")
  101. for plugin in ${plugins[*]}
  102. do
  103. etc_file="$plugin_path/$plugin/etc/.config_template"
  104. if [ -f "$etc_file" ] && [ ! -f "$path/etc/plugins/$plugin/config" ]
  105. then
  106. if [ ! -d "$path/etc/plugins/$plugin" ]
  107. then
  108. mkdir "$path/etc/plugins/$plugin"
  109. fi
  110. cp "$etc_file" "$path/etc/plugins/$plugin/config"
  111. fi
  112. done
  113. if [ ! -d "$workspaces_dir/$customer/$project" ]; then mkdir -p "$workspaces_dir/$customer/$project"; fi
  114. projects_string='';
  115. for i in "${!projects[@]}"
  116. do
  117. ((nr=i+1))
  118. projects_string+="$(echo -e "\n\t'${projects[$i]}' # $nr")"
  119. done
  120. ((nr=nr+1))
  121. projects_string+="$(echo -e "\n\t'$project' # $nr")"
  122. shortnames_string='';
  123. for i in "${!shortnames[@]}"
  124. do
  125. ((nr=i+1))
  126. shortnames_string+="$(echo -e "\n\t'${shortnames[$i]}' # $nr")"
  127. done
  128. ((nr=nr+1))
  129. shortnames_string+="$(echo -e "\n\t'$shortname' # $nr")"
  130. customers_string='';
  131. for i in "${!customers[@]}"
  132. do
  133. ((nr=i+1))
  134. customers_string+="$(echo -e "\n\t'${customers[$i]}' # $nr")"
  135. done
  136. ((nr=nr+1))
  137. customers_string+="$(echo -e "\n\t'$customer' # $nr")"
  138. cat <<- EOF > "$project_manager_dir/etc/projects"
  139. #!/bin/bash
  140. projects=($projects_string
  141. )
  142. shortnames=($shortnames_string
  143. )
  144. customers=($customers_string
  145. )
  146. EOF
  147. echo
  148. echoSubTitle "Running postscripts ..."
  149. postScript "$path/bin/postscripts/commands/create-project"
  150. postScript "$workspaces_dir/$customer/$project/bin/postscripts/commands/create-project"
  151. echo
  152. echoSuccess "Project has been created, please configure: $path/etc/*"
  153. echo