diff --git a/pull_subtrees.sh b/pull_subtrees.sh new file mode 100755 index 0000000000000000000000000000000000000000..d9bc20cf9cd259704bdfb8e563ff8a3c0f2f78da --- /dev/null +++ b/pull_subtrees.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# +# +# Récupère les modifications des modules sur l'application +# +# + +if [ `whoami` == "root" ]; then + echo "Please, do not run this script as sudo" +else + cd utils/ + ./pull_subtrees.sh +fi diff --git a/push_subtrees.sh b/push_subtrees.sh new file mode 100644 index 0000000000000000000000000000000000000000..098911317857e59aa0e87fb002942c61ddfbc2c1 --- /dev/null +++ b/push_subtrees.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# +# +# Envoie les modifications de l'application sur les modules +# +# + +if [ `whoami` == "root" ]; then + echo "Please, do not run this script as sudo" +else + cd utils/ + ./push_subtrees.sh +fi diff --git a/utils/utils/copy_hooks.bat b/utils/utils/copy_hooks.bat new file mode 100644 index 0000000000000000000000000000000000000000..a24ac68b0f099047b546b33d77a4fab3d99c0247 --- /dev/null +++ b/utils/utils/copy_hooks.bat @@ -0,0 +1,3 @@ + + +robocopy "githooks" "../.git/hooks" /E /NFL /NDL /NJH /NJS /nc /ns /np diff --git a/utils/utils/copy_hooks.sh b/utils/utils/copy_hooks.sh new file mode 100755 index 0000000000000000000000000000000000000000..f5bed2f2552ef3440e7e9589197c0922a1875927 --- /dev/null +++ b/utils/utils/copy_hooks.sh @@ -0,0 +1,14 @@ +#!/bin/bash +# +# +# Script de mise à jour des hooks client +# +# +# + + +if [ -d "githooks" ]; then + if [ -d "../.git/hooks" ]; then + cp -f githooks/* ../.git/hooks/ + fi +fi diff --git a/utils/utils/get_deps.sh b/utils/utils/get_deps.sh new file mode 100755 index 0000000000000000000000000000000000000000..0a26177f9d9a4d746b39799eff421477c4d6ebd8 --- /dev/null +++ b/utils/utils/get_deps.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# +# Récupère l'ensemble des dépendances depuis conf/_install/dependency.xml +# +# +# +# + +if [ "../conf/_install/dependency.xml" ]; then + + declare -A aDeps + vitisVersion=master + depsCount=0 + dependencies=($(cat "../conf/_install/dependency.xml" | tr -d '\040\011\012\015' | grep -oP '<dependency>([\s\S]*?)<\/dependency>')) + + for i in ${!dependencies[*]}; do + + sName=$(grep -oP '(?<=name>)[^<]+' <<< ${dependencies[$i]}) + sVersion=$(grep -oP '(?<=version>)[^<]+' <<< ${dependencies[$i]}) + sNature=$(grep -oP '(?<=nature>)[^<]+' <<< ${dependencies[$i]}) + + if [ $sName == "vitis" ]; then + vitisVersion=$sVersion + fi + if [ $sNature == "modules" ] || [ $sNature == "web_services" ] || [ $sName == "vitis" ]; then + aDeps[$i, name]=$sName + aDeps[$i, version]=$sVersion + aDeps[$i, nature]=$sNature + let depsCount++ + fi + + done + + echo "[INFO] dependencies:" + echo "vitis : $vitisVersion" + for i in ${!dependencies[*]}; do + echo "(${aDeps[$i, nature]}) ${aDeps[$i, name]} : ${aDeps[$i, version]}" + done + echo "depsCount : ${depsCount}" + + export vitisVersion + export depsCount + export aDeps + +else + echo "[ERROR] ../conf/_install/dependency.xml not found" +fi diff --git a/utils/utils/githooks/post-merge b/utils/utils/githooks/post-merge new file mode 100755 index 0000000000000000000000000000000000000000..45b38b216aa67e69223d8bea9440665e898168f2 --- /dev/null +++ b/utils/utils/githooks/post-merge @@ -0,0 +1,19 @@ +#!/bin/sh +# +# Hook qui permet de pull toutes les dépendances +# quand on fait un pull sur l'application +# +# +# +# +# + +echo "****** Post-merge Hook ******" +echo "****** Pull ******" +# echo "****** Pull subtrees ******" +# echo "$(pwd)" +# +# if [ -d "$(pwd)/utils" ]; then +# cd utils +# ./pull_subtrees.sh +# fi diff --git a/utils/utils/githooks/pre-push b/utils/utils/githooks/pre-push new file mode 100755 index 0000000000000000000000000000000000000000..c5e4e9536803f05a55dce10289d9bd9299350a7d --- /dev/null +++ b/utils/utils/githooks/pre-push @@ -0,0 +1,22 @@ +#!/bin/sh +# +# Hook qui permet de push toutes les dépendances +# quand on fait un push sur l'application +# +# +# +# +# + +remote="$1" +url="$2" +if [ $remote != $url ]; then + + echo "****** Pre-push Hook ******" + echo "****** Push ******" + # echo "****** Push subtrees ******" + # if [ -d "$(pwd)/utils" ]; then + # cd utils + # ./push_subtrees.sh + # fi +fi diff --git a/utils/utils/init_subtrees.sh b/utils/utils/init_subtrees.sh new file mode 100755 index 0000000000000000000000000000000000000000..7f9c2abf14978552d1ae88ca6b9b119d51c71578 --- /dev/null +++ b/utils/utils/init_subtrees.sh @@ -0,0 +1,48 @@ +#!/bin/bash +# +# +# Script d'initialisation d'un dépot vMap versionné sous git +# Initislise l'ensemble des dépendances sous forme de subtrees +# +# Nécessite xmllint : sudo apt install libxml2-utils +# + + +APP_NAME="vmap" + +# Récupère la liste des dépendances +. ./get_deps.sh + +cd .. +if [ -d "$(pwd)/client" ]; then + rm client +fi +if [ -d "$(pwd)/vas" ]; then + rm vas +fi +if [ -d "$(pwd)/src" ]; then + git rm -r src + git commit -a -m "Reset sources" +fi +mkdir src + +if [[ $depsCount > 0 ]]; then + + # Vitis + echo "---- Init vitis ----" + git subtree add --squash -m "add subtree" --prefix src/vitis "git@gitlab.veremes.net:Development/vitis_apps/sources/vitis.git" $vitisVersion + + echo "---- Init conf ----" + git subtree add --squash -m "add subtree" --prefix src/closure "git@gitlab.veremes.net:Development/vitis_apps/sources/closure.git" master + + # Modules + for (( i=1; i <= $depsCount; i++ )); do + if [ ${aDeps[$i, nature]} == "modules" ]; then + echo "---- Init ${aDeps[$i, name]} : ${aDeps[$i, version]}----" + + # Ajoute le dépôt + git subtree add --squash -m "add subtree" --prefix src/${aDeps[$i, name]} "git@gitlab.veremes.net:Development/vitis_apps/sources/${aDeps[$i, name]}.git" ${aDeps[$i, version]} + fi + done + +fi diff --git a/utils/utils/init_symlinks.sh b/utils/utils/init_symlinks.sh new file mode 100755 index 0000000000000000000000000000000000000000..562c7ddb343ad70e85c86d8300080d6eb2c7f7fa --- /dev/null +++ b/utils/utils/init_symlinks.sh @@ -0,0 +1,159 @@ +#!/bin/bash +# +# +# Script d'initialisation d'un dépot vMap versionné sous git +# +# Split repo +# git subtree split -P module/ -b module_split_branch +# +# Add subtree +# git subtree add --prefix vmap "git@gitlab.veremes.net:Development/vitis_apps/sources/Vitis.git" master +# +# + +echo -n "Existing app path (path/empty)? " +read APP_EXISTING_PATH + +# Récupère la liste des dépendances +. ./get_deps.sh + +cd .. + +# Supprime les anciens symlinks +if [ -d "client" ]; then + rm -Rf client +fi +if [ -d "vas" ]; then + rm -Rf vas +fi +find src/vitis/client -type l -delete +find src/vitis/vas/sql -type l -delete +find src/vitis/vas/rest -type l -delete + +# Vitis +echo "---- Link vitis ----" +if ! [ -e "$(pwd)/client" ]; then + + mkdir client + mkdir client/javascript + mkdir client/modules + ln -rsf src/vitis/client/css client/css + ln -rsf src/vitis/client/forms client/forms + ln -rsf src/vitis/client/images client/images + ln -rsf src/vitis/client/javascript/app client/javascript/app + ln -rsf src/vitis/client/javascript/externs client/javascript/externs + ln -rsf src/vitis/client/javascript/require client/javascript/require + ln -rsf src/vitis/client/lang client/lang + ln -rsf src/vitis/client/less client/less + ln -rsf src/vitis/client/modules/vitis client/modules/vitis + ln -rsf src/vitis/client/templates client/templates + ln -rsf src/vitis/client/.htaccess client/.htaccess + ln -rsf src/vitis/client/index.html client/index.html +fi +if ! [ -e "$(pwd)/vas" ]; then + + mkdir vas + mkdir vas/rest + mkdir vas/rest/ws + ln -rsf src/vitis/vas/doc vas/doc + ln -rsf src/vitis/vas/rest/class vas/rest/class + ln -rsf src/vitis/vas/rest/inc vas/rest/inc + ln -rsf src/vitis/vas/rest/ws/vitis vas/rest/ws/vitis + ln -rsf src/vitis/vas/rest/index.phtml vas/rest/index.phtml + ln -rsf src/vitis/vas/rest/index.vhtml vas/rest/index.vhtml + ln -rsf src/vitis/vas/sql vas/sql + ln -rsf src/vitis/vas/util vas/util +fi + +# Conf +echo "---- Link conf ----" +if ! [ -e "src/vitis/client/conf" ]; then + # ln -rsf conf client/conf + + mkdir client/conf + for elem in $( ls "conf"); do + if [[ $elem != 'properties.json' ]]; then + if [[ -d "conf/${elem}" || -f "conf/${elem}" ]]; then + echo "---- Link conf/$elem" + ln -rsf conf/$elem client/conf/$elem + fi + fi + done +fi +if ! [ -e "conf/closure" ]; then + ln -rsf src/closure/conf conf/closure +fi + +# Modules +if [[ $depsCount > 0 ]]; then + for (( i=1; i <= $depsCount; i++ )); do + if [ ${aDeps[$i, nature]} == "modules" ]; then + if [ ${aDeps[$i, name]:0:7} == "module_" ]; then + module=${aDeps[$i, name]:7} + echo "---- Link module_${module} ----" + if [ -d "$(pwd)/src/module_${module}/module" ]; then + if ! [ -e "src/vitis/client/modules/${module}" ]; then + ln -rsf src/module_${module}/module client/modules/${module} + fi + fi + if [ -d "$(pwd)/src/module_${module}/web_service/ws" ]; then + if ! [ -e "src/vitis/vas/rest/ws/${module}" ]; then + ln -rsf src/module_${module}/web_service/ws vas/rest/ws/${module} + fi + fi + if [ -d "$(pwd)/src/module_${module}/web_service/sql" ]; then + if ! [ -e "src/vitis/vas/sql/${module}" ]; then + ln -rsf src/module_${module}/web_service/sql vas/sql/${module} + fi + fi + if [ -d "$(pwd)/src/module_${module}/web_service/class" ]; then + for class_dir in $( ls "$(pwd)/src/module_${module}/web_service/class"); do + if [ -d "$(pwd)/src/module_${module}/web_service/class/${class_dir}" ]; then + echo "---- Link module_${module}/${class_dir} ----" + if ! [ -e "src/vitis/vas/rest/class/${class_dir}" ]; then + ln -rsf src/module_${module}/web_service/class/${class_dir} vas/rest/class/${class_dir} + fi + fi + done + fi + fi + fi + done + + # Utilisation d'une install déjà existante + if [ -d "${APP_EXISTING_PATH}" ]; then + echo "---- Link exixting app ${APP_EXISTING_PATH} ----" + + declare -a existing_folders_path=("vas/server" + "vas/rest/conf" + "vas/log" + "vas/public" + "vas/shared" + "vas/tmp" + "vas/upload" + "vas/ws_data") + for folder_path in "${existing_folders_path[@]}"; do + if [ -d "${APP_EXISTING_PATH}/$folder_path" ]; then + echo "copy $folder_path" + cp -Rf "${APP_EXISTING_PATH}/$folder_path" "$(pwd)/$folder_path" + chmod 777 -R "$(pwd)/$folder_path" + fi + done + + declare -a existing_files_path=("client/conf/properties.json" + "vas/rest/.htaccess") + for file_path in "${existing_files_path[@]}"; do + if [ -f "${APP_EXISTING_PATH}/$file_path" ]; then + echo "copy $file_path" + cp -f "${APP_EXISTING_PATH}/$file_path" "$(pwd)/$file_path" + fi + done + + for properties_dir in $( ls "${APP_EXISTING_PATH}/vas/rest/conf"); do + if [ -d "${APP_EXISTING_PATH}/vas/rest/conf/${properties_dir}" ]; then + echo "copy ${APP_EXISTING_PATH}/vas/rest/conf/${properties_dir}/ > $(pwd)/vas/rest/conf/" + cp -Rf "${APP_EXISTING_PATH}/vas/rest/conf/${properties_dir}/" "$(pwd)/vas/rest/conf/" + fi + done + fi +fi diff --git a/utils/utils/init_tree.bat b/utils/utils/init_tree.bat new file mode 100644 index 0000000000000000000000000000000000000000..d8e6956ca21d8e9e7a4d4d46c77657f1153fb8b9 --- /dev/null +++ b/utils/utils/init_tree.bat @@ -0,0 +1,99 @@ +@echo off +title Install Vitis App +setlocal EnableDelayedExpansion + +cd .. + +set /p existing_path="Existing app path: " + +REM Client Dir +echo Create client directory +if exist "client" ( + rmdir /S /Q "client" +) +echo copy client +robocopy "src/vitis/client" "client" /E /NFL /NDL /NJH /NJS /nc /ns /np +echo copy client/conf +robocopy "conf" "client/conf" /E /NFL /NDL /NJH /NJS /nc /ns /np +echo copy client/conf/closure +robocopy "src/closure/conf" "client/conf/closure" /E /NFL /NDL /NJH /NJS /nc /ns /np + +echo Copy client modules +for /d %%g in ("src/module_*") do ( + set x=%%g + echo !x:~7! + if exist "src/%%g/module" ( + echo copy client/modules/!x:~7! + robocopy "src/%%g/module" "client/modules/!x:~7!" /E /NFL /NDL /NJH /NJS /nc /ns /np + ) +) + +REM VAS dir +echo Create vas directory +echo Create client directory +if exist "vas" ( + rmdir /S /Q "vas" +) +echo copy vas +robocopy "src/vitis/vas" "vas" /E /NFL /NDL /NJH /NJS /nc /ns /np + +echo Copy vas web_services +for /d %%g in ("src/module_*") do ( + set x=%%g + echo !x:~7! + if exist "src/%%g/web_service/conf" ( + echo copy vas/rest/conf/!x:~7! + robocopy "src/%%g/web_service/conf" "vas/rest/conf/!x:~7!" /E /NFL /NDL /NJH /NJS /nc /ns /np + ) + if exist "src/%%g/web_service/sql" ( + echo copy vas/sql/!x:~7! + robocopy "src/%%g/web_service/sql" "vas/sql/!x:~7!" /E /NFL /NDL /NJH /NJS /nc /ns /np + ) + if exist "src/%%g/web_service/ws" ( + echo copy vas/rest/ws/!x:~7! + robocopy "src/%%g/web_service/ws" "vas/rest/ws/!x:~7!" /E /NFL /NDL /NJH /NJS /nc /ns /np + ) + if exist "src/%%g/web_service/class" ( + echo copy vas/rest/class + robocopy "src/%%g/web_service/class" "vas/rest/class" /E /NFL /NDL /NJH /NJS /nc /ns /np + ) + if exist "src/%%g/web_service/ws_data" ( + echo copy vas/ws_data + robocopy "src/%%g/web_service/ws_data" "vas/ws_data" /E /NFL /NDL /NJH /NJS /nc /ns /np + ) + if exist "src/%%g/web_service/public" ( + echo copy vas/public + robocopy "src/%%g/web_service/public" "vas/public" /E /NFL /NDL /NJH /NJS /nc /ns /np + ) + if exist "src/%%g/web_service/upload" ( + echo copy vas/upload + robocopy "src/%%g/web_service/upload" "vas/upload" /E /NFL /NDL /NJH /NJS /nc /ns /np + ) +) + +REM Copy from existing path +if exist %existing_path% ( + echo copy properties from %existing_path% + + for %%G in (vas\server,vas\rest\conf,vas\log,vas\public,vas\shared,vas\tmp,vas\upload,vas\ws_data) do ( + echo %%G + if exist %existing_path%\%%G ( + echo copy %%G + robocopy "%existing_path%\%%G" "%%G" /E /NFL /NDL /NJH /NJS /nc /ns /np + ) + ) + + if exist %existing_path%\client\conf\properties.json ( + echo copy properties.json + robocopy "%existing_path%\client\conf" "client\conf" "properties.json" /NFL /NDL /NJH /NJS /nc /ns /np + ) + if exist %existing_path%\vas\rest\.htaccess ( + echo copy .htaccess + robocopy "%existing_path%\vas\rest" "vas\rest" ".htaccess" /NFL /NDL /NJH /NJS /nc /ns /np + ) + + if exist "%existing_path%\vas\rest\conf" ( + echo copy vas\rest\conf + robocopy "%existing_path%\vas\rest\conf" "vas\rest\conf" /E /NFL /NDL /NJH /NJS /nc /ns /np + ) +) diff --git a/utils/utils/pull_subtrees.sh b/utils/utils/pull_subtrees.sh new file mode 100755 index 0000000000000000000000000000000000000000..5cac1ba0c4a626761809103e822793ec694068a4 --- /dev/null +++ b/utils/utils/pull_subtrees.sh @@ -0,0 +1,32 @@ +#!/bin/bash +# +# +# Script d'initialisation d'un dépot vMap versionné sous git +# Initislise l'ensemble des dépendances sous forme de subtrees +# +# +# + + +APP_NAME="vmap" + +# Récupère la liste des dépendances +. ./get_deps.sh + +cd .. + +# Vitis +echo "---- Pull vitis ----" +git subtree pull --prefix src/vitis --squash -m "pull subtree" "git@gitlab.veremes.net:Development/vitis_apps/sources/vitis.git" $vitisVersion + +# Modules +if [[ $depsCount > 0 ]]; then + for (( i=1; i <= $depsCount; i++ )); do + if [ ${aDeps[$i, nature]} == "modules" ]; then + echo "---- Pull ${aDeps[$i, name]} ----" + + # Ajoute le dépôt + git subtree pull --prefix src/${aDeps[$i, name]} --squash -m "pull subtree" "git@gitlab.veremes.net:Development/vitis_apps/sources/${aDeps[$i, name]}.git" ${aDeps[$i, version]} + fi + done +fi diff --git a/utils/utils/push_subtrees.sh b/utils/utils/push_subtrees.sh new file mode 100755 index 0000000000000000000000000000000000000000..18a9d3bdac1f0d8d3f6af3e16af06d7337ddf9f6 --- /dev/null +++ b/utils/utils/push_subtrees.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# +# +# Script d'initialisation d'un dépot vMap versionné sous git +# Initislise l'ensemble des dépendances sous forme de subtrees +# +# +# + + +APP_NAME="vmap" + +# Récupère la liste des dépendances +. ./get_deps.sh + +cd .. + +# Vitis +echo "---- Push vitis ----" +{ # 'try' block + git subtree push --prefix src/vitis "git@gitlab.veremes.net:Development/vitis_apps/sources/vitis.git" $vitisVersion +} || { # 'catch' block + echo "could not push vitis" +} + +# Modules +if [[ $depsCount > 0 ]]; then + for (( i=1; i <= $depsCount; i++ )); do + if [ ${aDeps[$i, nature]} == "modules" ]; then + echo "---- Push ${aDeps[$i, name]} ----" + + # Push le dépôt + + { # 'try' block + git subtree push --prefix src/${aDeps[$i, name]} "git@gitlab.veremes.net:Development/vitis_apps/sources/${aDeps[$i, name]}.git" ${aDeps[$i, version]} + } || { # 'catch' block + echo "could not push ${aDeps[$i, name]}" + } + fi + done +fi diff --git a/utils/utils/update_tree.bat b/utils/utils/update_tree.bat new file mode 100644 index 0000000000000000000000000000000000000000..3c3c5dc356d7cc5922c046ea95f6787f80faa363 --- /dev/null +++ b/utils/utils/update_tree.bat @@ -0,0 +1,80 @@ +@echo off +title Update Vitis tree +echo Update Vitis tree +setlocal EnableDelayedExpansion + +cd utils + +REM Pull repo +"C:\Program Files\Git\bin\sh.exe" --login -i -c "git pull" + +REM Pull subtrees +"C:\Program Files\Git\bin\sh.exe" --login -i -c "./pull_subtrees.sh" + +REM Save important files +if exist "../vas/rest/sql" ( + robocopy "../vas/rest/sql" "../vas/rest/sql_bak" /E /NFL /NDL /NJH /NJS /nc /ns /np +) +if exist "../vas/rest/conf" ( + robocopy "../vas/rest/conf" "../vas/rest/conf_bak" /E /NFL /NDL /NJH /NJS /nc /ns /np +) + +REM Replace Vitis files +for /d %%g in ("../src/vitis/client/*") do ( + set x=%%g + echo copy client/!x! + rmdir /S /Q "../client/!x!" + robocopy "../src/vitis/client/!x!" "../client/!x!" /E /NFL /NDL /NJH /NJS /nc /ns /np +) +for /d %%g in ("../src/vitis/vas/sql") do ( + echo copy vas/sql + rmdir /S /Q "../vas/sql" + robocopy "../src/vitis/vas/sql" "../vas/sql" /E /NFL /NDL /NJH /NJS /nc /ns /np +) +for /d %%g in ("../src/vitis/vas/rest/class") do ( + echo copy vas/rest/class + rmdir /S /Q "../vas/rest/class" + robocopy "../src/vitis/vas/rest/class" "../vas/rest/class" /E /NFL /NDL /NJH /NJS /nc /ns /np +) +for /d %%g in ("../src/vitis/vas/rest/conf") do ( + echo copy vas/rest/conf + robocopy "../src/vitis/vas/rest/conf" "../vas/rest/conf_veremes" /E /NFL /NDL /NJH /NJS /nc /ns /np +) +for /d %%g in ("../src/vitis/vas/rest/inc") do ( + echo copy vas/rest/inc + rmdir /S /Q "../vas/rest/inc" + robocopy "../src/vitis/vas/rest/inc" "../vas/rest/inc" /E /NFL /NDL /NJH /NJS /nc /ns /np +) +for /d %%g in ("../src/vitis/vas/rest/ws") do ( + echo copy vas/rest/ws + rmdir /S /Q "../vas/rest/ws" + robocopy "../src/vitis/vas/rest/ws" "../vas/rest/ws" /E /NFL /NDL /NJH /NJS /nc /ns /np +) + +REM Replace modules files +for /d %%g in ("../src/module_*") do ( + set x=%%g + if exist "../src/%%g/module" ( + echo copy client/modules/!x:~7! + robocopy "../src/%%g/module" "../client/modules/!x:~7!" /E /NFL /NDL /NJH /NJS /nc /ns /np + ) + if exist "../src/%%g/web_service/conf" ( + echo copy vas/rest/conf_veremes/!x:~7! + robocopy "../src/%%g/web_service/conf" "../vas/rest/conf_veremes/!x:~7!" /E /NFL /NDL /NJH /NJS /nc /ns /np + ) + if exist "../src/%%g/web_service/sql" ( + echo copy vas/sql/!x:~7! + robocopy "../src/%%g/web_service/sql" "../vas/sql/!x:~7!" /E /NFL /NDL /NJH /NJS /nc /ns /np + ) + if exist "../src/%%g/web_service/ws" ( + echo copy vas/rest/ws/!x:~7! + robocopy "../src/%%g/web_service/ws" "../vas/rest/ws/!x:~7!" /E /NFL /NDL /NJH /NJS /nc /ns /np + ) + if exist "../src/%%g/web_service/class" ( + echo copy vas/rest/class + robocopy "../src/%%g/web_service/class" "../vas/rest/class" /E /NFL /NDL /NJH /NJS /nc /ns /np + ) +) + + +cd ..