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.

173 lines
4.6 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/etc" ]; then mkdir "$path/etc"; fi
  81. if [ ! -d "$path/etc/plugins" ]; then mkdir "$path/etc/plugins"; fi
  82. if [ ! -d "$path/shared" ]; then mkdir "$path/shared"; fi
  83. if [ ! -d "$path/shared/live" ]; then mkdir "$path/shared/live"; fi
  84. if [ ! -d "$path/shared/stage" ]; then mkdir "$path/shared/stage"; fi
  85. if [ ! -d "$path/var" ]; then mkdir "$path/var"; fi
  86. if [ ! -d "$path/var/tmp" ]; then mkdir "$path/var/tmp"; fi
  87. if [ ! -d "$path/var/latest" ]; then mkdir "$path/var/latest"; fi
  88. if [ ! -f "$path/etc/config" ]
  89. then
  90. quoted="$(sedEscape "$project_manager_dir")"
  91. cat "$project_manager_dir/etc/.config_template" | \
  92. sed "s/app_customer=''/app_customer='$customer'/" | \
  93. sed "s/app_project=''/app_project='$project'/" | \
  94. sed "s/app_project_manager_dir=''/app_project_manager_dir='$quoted'/" \
  95. > "$path/etc/config"
  96. fi
  97. plugin_path="$project_manager_dir/plugins"
  98. plugins=$(ls -t "$plugin_path")
  99. for plugin in ${plugins[*]}
  100. do
  101. etc_file="$plugin_path/$plugin/etc/.config_template"
  102. if [ -f "$etc_file" ] && [ ! -f "$path/etc/plugins/$plugin/config" ]
  103. then
  104. if [ ! -d "$path/etc/plugins/$plugin" ]
  105. then
  106. mkdir "$path/etc/plugins/$plugin"
  107. fi
  108. cp "$etc_file" "$path/etc/plugins/$plugin/config"
  109. fi
  110. done
  111. if [ ! -d "$workspaces_dir/$customer/$project" ]; then mkdir -p "$workspaces_dir/$customer/$project"; fi
  112. projects_string='';
  113. for i in "${!projects[@]}"
  114. do
  115. ((nr=i+1))
  116. projects_string+="$(echo -e "\n\t'${projects[$i]}' # $nr")"
  117. done
  118. ((nr=nr+1))
  119. projects_string+="$(echo -e "\n\t'$project' # $nr")"
  120. shortnames_string='';
  121. for i in "${!shortnames[@]}"
  122. do
  123. ((nr=i+1))
  124. shortnames_string+="$(echo -e "\n\t'${shortnames[$i]}' # $nr")"
  125. done
  126. ((nr=nr+1))
  127. shortnames_string+="$(echo -e "\n\t'$shortname' # $nr")"
  128. customers_string='';
  129. for i in "${!customers[@]}"
  130. do
  131. ((nr=i+1))
  132. customers_string+="$(echo -e "\n\t'${customers[$i]}' # $nr")"
  133. done
  134. ((nr=nr+1))
  135. customers_string+="$(echo -e "\n\t'$customer' # $nr")"
  136. cat <<- EOF > "$project_manager_dir/etc/projects"
  137. #!/bin/bash
  138. projects=($projects_string
  139. )
  140. shortnames=($shortnames_string
  141. )
  142. customers=($customers_string
  143. )
  144. EOF
  145. echo
  146. echoSubTitle "Running postscripts ..."
  147. postScript "$path/bin/postscripts/commands/create-project"
  148. postScript "$workspaces_dir/$customer/$project/bin/postscripts/commands/create-project"
  149. echo
  150. echoSuccess "Project has been created, please configure: $path/etc/*"
  151. echo