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.

132 lines
2.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 "Removes a project"
  7. echo
  8. echoSubTitle "Usage:"
  9. echo
  10. echo "remove-project [shortname]"
  11. echo
  12. echo "This will remove the project and move the project files to ./.trash"
  13. echo
  14. echo "--help Prints this message"
  15. echo
  16. }
  17. help="$(getParameter "--help" false "$@")"
  18. if [ "$help" == true ] || [ "$1" == "" ]
  19. then
  20. usage
  21. exit
  22. fi
  23. shortname="$(getArgument "$1" "$(usage)" true)"
  24. customer="$(getCustomerFromShortname "$shortname")"
  25. project="$(getProjectFromShortname "$shortname")"
  26. index=false
  27. for i in "${!shortnames[@]}"
  28. do
  29. if [ "${shortnames[$i]}" == "$shortname" ]
  30. then
  31. index="$i"
  32. fi
  33. done
  34. if [ "$index" == false ]
  35. then
  36. echo
  37. echoError "Could not find project: $shortname"
  38. echo
  39. exit
  40. fi
  41. echo
  42. echoMainTitle "Remove project"
  43. echo
  44. echoSubTitle "Please verify data"
  45. echo
  46. echo "Project Path: $workspaces_dir/$customer/$project"
  47. echo "Project Data Path: $project_manager_dir/data/$customer/$project"
  48. echo
  49. confirm
  50. echo
  51. echo "Moving files to trash"
  52. customer_dir_list=($(ls -t "$project_manager_dir/data/$customer"))
  53. has_more_dirs=$(if [ "${#customer_dir_list[@]}" -gt 1 ]; then echo true; else echo false; fi)
  54. rand=$(cat /proc/sys/kernel/random/uuid)
  55. trash_path="$project_manager_dir/.trash/$rand"
  56. mkdir "$trash_path"
  57. mkdir "$trash_path/data"
  58. mkdir "$trash_path/workspace"
  59. mkdir "$trash_path/data/$customer"
  60. mkdir "$trash_path/workspace/$customer"
  61. mv "$project_manager_dir/data/$customer/$project" "$trash_path/data/$customer/$project"
  62. mv "$workspaces_dir/$customer/$project" "$trash_path/workspace/$customer/$project"
  63. if [ "$has_more_dirs" != true ]
  64. then
  65. rmdir "$project_manager_dir/data/$customer"
  66. rmdir "$workspaces_dir/$customer"
  67. fi
  68. nr=0
  69. projects_string='';
  70. for i in "${!projects[@]}"
  71. do
  72. if [ "$i" != "$index" ]
  73. then
  74. ((nr=nr+1))
  75. projects_string+="$(echo -e "\n\t\"${projects[$i]}\" # $nr")"
  76. fi
  77. done
  78. nr=0
  79. shortnames_string='';
  80. for i in "${!shortnames[@]}"
  81. do
  82. if [ "$i" != "$index" ]
  83. then
  84. ((nr=nr+1))
  85. shortnames_string+="$(echo -e "\n\t\"${shortnames[$i]}\" # $nr")"
  86. fi
  87. done
  88. nr=0
  89. customers_string='';
  90. for i in "${!customers[@]}"
  91. do
  92. if [ "$i" != "$index" ]
  93. then
  94. ((nr=nr+1))
  95. customers_string+="$(echo -e "\n\t\"${customers[$i]}\" # $nr")"
  96. fi
  97. done
  98. cat <<- EOF > "$project_manager_dir/etc/projects"
  99. #!/bin/bash
  100. projects=($projects_string
  101. )
  102. shortnames=($shortnames_string
  103. )
  104. customers=($customers_string
  105. )
  106. EOF
  107. echo
  108. echoSubTitle "Running postscripts ..."
  109. postScript "$path/bin/postscripts/commands/remove-project"
  110. postScript "$workspaces_dir/$customer/$project/bin/postscripts/commands/remove-project"
  111. echo
  112. echoSuccess "Project has been remove, (moved to ./.trash)"
  113. echo