diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..d8b5d9919508b3efbd1b1fdc1d91adb22b53876d --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +client +vas +conf/closure +conf/node_modules/ +conf/properties.json +src/closure/conf/depswriter/ +src/vitis/vas/log/ +src/vitis/vas/public/ +src/vitis/vas/server/ +src/vitis/vas/ws_data/ +src/vitis/vas/tmp/ +src/vitis/client/modules/ +! src/vitis/client/modules/vitis/ +src/vitis/vas/rest/ws/* +! src/vitis/vas/rest/ws/vitis/ +src/vitis/vas/sql/* +! src/vitis/vas/sql/sqlQueries.xml diff --git a/README.md b/README.md index 7d592df3ef51a76083f4b31fbb55892b6fe3817d..74f028f09749f9b761f2201dd3b24edc6496ae8f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,13 @@ # Extraction -Application extraction \ No newline at end of file +Application extraction + +## Install dev version (linux) + +To install the dev version of this project run the following steps: + +- Install the app via the VAI setup on var/www/[app name] +- Clone this repo on var/wwww/[app name]\_dev +- Run install.sh and give the var/www/[app name] path when asked to build your tree structure +- Now you have the correct versioned tree structure, rename var/www/[app name] as var/www/[app name]\_vai and var/www/[app name]\_dev as var/www/[app name] +- Run `git pull` and `git push` to update/post the project and his dependencies diff --git a/conf/Gruntfile.js b/conf/Gruntfile.js new file mode 100755 index 0000000000000000000000000000000000000000..fbffa3c28e54d44198fadcb08639c38f3c2182cd --- /dev/null +++ b/conf/Gruntfile.js @@ -0,0 +1,106 @@ +module.exports = function (grunt) { + + var compilerPackage = require('google-closure-compiler'); + compilerPackage.grunt(grunt); + + var sHome = '../'; + var sClosureDepsHome = '../../../../../'; + + // Project configuration. + grunt.initConfig({ + 'closure-compiler': { + Extraction: { + files: { + '../javascript/extraction.min.js': [ + // Fichiers Vitis + sHome + 'javascript/require/*.js', + sHome + 'javascript/app/**/*.js', + sHome + 'javascript/externs/formReader/**/*.js', + sHome + 'javascript/externs/mapJSON/**/*.js', + sHome + 'modules/vitis/javascript/**/*.js', + // OpenLayers + sHome + 'javascript/externs/openLayers/**/*.js', + // Fichiers Extraction + sHome + 'conf/requires/*.js', + sHome + 'modules/extraction/javascript/**/*.js' + ] + }, + options: { + js: [ + 'node_modules/google-closure-library/closure/goog/**.js', + '!node_modules/google-closure-library/closure/goog/**_test.js' + ], + externs: [ + 'closure/externs/angular-1.3.js', + 'closure/externs/bingmaps.js', + 'closure/externs/jquery-1.9.js', + 'closure/externs/bootstrap.js', + 'closure/externs/geojson.js', + 'closure/externs/jspdf.js', + 'closure/externs/html2canvas.js' + ], + compilation_level: 'ADVANCED', + manage_closure_dependencies: true, + generate_exports: true, + angular_pass: true, + debug: false, + language_in: 'ECMASCRIPT5', + language_out: 'ECMASCRIPT5', + closure_entry_point: ['vitis'], + create_source_map: '../javascript/extraction.min.js.map', + output_wrapper: '(function(){\n%output%\n}).call(this)\n//# sourceMappingURL=../javascript/extraction.min.js.map' + } + }, + formReader: { + files: { + '../javascript/externs/formReader/formReader.min.js': [ + // Fichiers FormReader + sHome + 'javascript/externs/formReader/**/*.js' + ] + }, + options: { + compilation_level: 'WHITESPACE_ONLY', + angular_pass: true, + language_in: 'ECMASCRIPT5', + language_out: 'ECMASCRIPT5' + } + } + }, + 'closureDepsWriter': { + options: { + depswriter: 'closure/depswriter/depswriter.py', + root_with_prefix: [ + // Fichiers Vitis + '"' + sHome + 'javascript/app ' + sClosureDepsHome + 'javascript/app"', + '"' + sHome + 'modules/vitis/javascript ' + sClosureDepsHome + 'modules/vitis/javascript"', + '"' + sHome + 'javascript/externs/formReader ' + sClosureDepsHome + 'javascript/externs/formReader"', + '"' + sHome + 'javascript/externs/mapJSON ' + sClosureDepsHome + 'javascript/externs/mapJSON"', + '"' + sHome + 'conf/requires ' + sClosureDepsHome + 'conf/requires"', + // OpenLayers + '"' + sHome + 'javascript/externs/openLayers ' + sClosureDepsHome + 'javascript/externs/openLayers"', + // Fichiers Extraction + '"' + sHome + 'modules/extraction/javascript ' + sClosureDepsHome + 'modules/extraction/javascript"', + // Closure library + '"' + sHome + 'conf/node_modules/google-closure-library/closure/goog ' + sClosureDepsHome + 'conf/node_modules/google-closure-library/closure/goog"' + ] + }, + targetName: { + dest: '../javascript/extraction.deps.js' + } + } + }); + + grunt.loadNpmTasks('grunt-closure-tools'); + + // Tache par défaut + // cmd: grunt + grunt.registerTask('default', ['closureDepsWriter', 'closure-compiler:Extraction']); + // cmd: grunt generate-deps + grunt.registerTask('generate-deps', ['closureDepsWriter']); + // cmd: grunt formReader minify + grunt.registerTask('minify-formReader', ['closure-compiler:formReader']); + // cmd: grunt formReader and studio minify + grunt.registerTask('minify-libs', ['closure-compiler:formReader']); + // cmd: grunt compile + grunt.registerTask('compile', ['closure-compiler:Extraction']); +}; \ No newline at end of file diff --git a/conf/_install/apache.conf b/conf/_install/apache.conf new file mode 100755 index 0000000000000000000000000000000000000000..a57db00115b18fa7bd6372477c8df53b4eaa993d --- /dev/null +++ b/conf/_install/apache.conf @@ -0,0 +1,6 @@ +Alias /extraction[ENV] "[APPDIRECTORY]" + <Directory "[APPDIRECTORY]"> + AllowOverride FileInfo + Options FollowSymLinks + Require all granted + </Directory> diff --git a/conf/_install/dependency.xml b/conf/_install/dependency.xml new file mode 100755 index 0000000000000000000000000000000000000000..31e6b634e64f4ba0a85df14595dae910608c86b1 --- /dev/null +++ b/conf/_install/dependency.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Application --> +<installer> + <dependenciesCollection> + <dependency> + <nature>framework</nature> + <name>vitis</name> + <version>master</version> + </dependency> + <dependency> + <nature>modules</nature> + <name>module_extraction</name> + <version>master</version> + </dependency> + </dependenciesCollection> +</installer> diff --git a/conf/_install/fileToDelete.txt b/conf/_install/fileToDelete.txt new file mode 100755 index 0000000000000000000000000000000000000000..5b05a50a454c651556fd9d44df2c88b53b1caf05 --- /dev/null +++ b/conf/_install/fileToDelete.txt @@ -0,0 +1,2 @@ +package.json +Gruntfile.js \ No newline at end of file diff --git a/conf/_install/folderToDelete.txt b/conf/_install/folderToDelete.txt new file mode 100755 index 0000000000000000000000000000000000000000..3ff9591f1c764874b1d17e92491d955cff82fb9f --- /dev/null +++ b/conf/_install/folderToDelete.txt @@ -0,0 +1 @@ +requires \ No newline at end of file diff --git a/conf/credits.json b/conf/credits.json new file mode 100755 index 0000000000000000000000000000000000000000..6e2a596b388c9464ddab0005244de976a285b4dc --- /dev/null +++ b/conf/credits.json @@ -0,0 +1,156 @@ +[ + { + "label": "CREDITS_SOFTWARE", + "rows": [ + { + "type": "text", + "value": "vMap" + } + ] + }, + { + "label": "CREDITS_VERSION", + "rows": [ + { + "type": "text", + "value": "CREDITS_VERSION_CONTENT" + } + ] + }, + { + "label": "CREDITS_DATE", + "rows": [ + { + "type": "text", + "value": "CREDITS_DATE_CONTENT" + } + ] + }, + { + "label": "CREDITS_EDITOR", + "rows": [ + { + "type": "link", + "value": "Veremes", + "url": "http://www.veremes.com" + } + ] + }, + { + "label": "CREDITS_AUTHOR", + "rows": [ + { + "type": "text", + "value": "Armand Bahi" + }, + { + "type": "text", + "value": "Alexandre Bizien" + }, + { + "type": "text", + "value": "Anthony Borghi" + }, + { + "type": "text", + "value": "Frédéric Carretero" + }, + { + "type": "text", + "value": "Olivier Gayte" + }, + { + "type": "text", + "value": "Sébastien Legrand" + }, + { + "type": "text", + "value": "Laurent Panabieres" + }, + { + "type": "text", + "value": "Yoann Perollet" + } + ] + }, + { + "label": "CREDITS_GRAPHICS", + "rows": [ + { + "type": "link", + "value": "Nematis", + "url": "http://www.nematis.com" + } + ] + }, + { + "label": "CREDITS_LIBRARIES", + "rows": [ + { + "type": "link", + "value": "Bootstrap", + "url": "http://getbootstrap.com" + }, + { + "type": "link", + "value": "AngularJS", + "url": "https://angularjs.org" + }, + { + "type": "link", + "value": "Google Closure", + "url": "https://developers.google.com/closure" + }, + { + "type": "link", + "value": "jQuery", + "url": "http://jquery.com" + }, + { + "type": "link", + "value": "Rgraph", + "url": "http://www.rgraph.net" + }, + { + "type": "link", + "value": "CodeMirror", + "url": "http://codemirror.net" + }, + { + "type": "link", + "value": "OpenLayers", + "url": "http://openlayers.org" + }, + { + "type": "link", + "value": "TinyMCE", + "url": "https://www.tinymce.com" + } + ] + }, + { + "label": "CREDITS_CONTACT", + "rows": [ + { + "type": "link", + "value": "www.veremes.com", + "url": "http://www.veremes.com" + }, + { + "type": "link", + "value": "www.veremes.com/nous-contacter#1", + "url": "http://www.veremes.com/nous-contacter#1" + } + ] + }, + { + "label": "CREDITS_LICENSE", + "rows": [ + { + "type": "link", + "value": "Cecill-B", + "url": "http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.html" + } + ] + } +] diff --git a/conf/less/variables.less b/conf/less/variables.less new file mode 100755 index 0000000000000000000000000000000000000000..9636cd033e250a040d282d02129ea7e3f22e61e1 --- /dev/null +++ b/conf/less/variables.less @@ -0,0 +1,35 @@ + +// user colors +@user-color-theme-1: #23282D; +@user-color-theme-2: #6F8456; + + +// Veremes colors +@veremes-gtf-color: #39468A; +@veremes-majic-color: #CF461F; +@veremes-qualigeo-color: #832C7A; +@veremes-wab-color: #198D9F; +/*@veremes-vmap-color: #CB0650;*/ +@veremes-vmap-color: #198D9F; + +@veremes-map-backgroud-color: #020237; +@veremes-gray-backgroud-color: #3A3A3A; +@veremes-light-gray-backgroud-color: #9A9A9A; + + +// Application colors +@application-color-theme: @veremes-vmap-color; // <- Change this color + +@application-lighen-color-theme: lighten(@application-color-theme, 20%); +@application-darken-color-theme: darken(@application-color-theme, 10%); + +@application-action-1-color: #337ab7; // blue bootstrap +@application-action-2-color: #5cb85c; // green bootstrap + +// Other variables +@ui-grid-bg-image: "../images/ui-grid/wbg.gif"; +@font-color-purple: #020237; + +// Dimension des vignettes dans les listes. +@ui-grid-thumbnail-width: 100px; +@ui-grid-thumbnail-heigth: 60px; \ No newline at end of file diff --git a/conf/package.json b/conf/package.json new file mode 100755 index 0000000000000000000000000000000000000000..5b5091d40728e547f4c50369734cf88ed10edef1 --- /dev/null +++ b/conf/package.json @@ -0,0 +1,4 @@ +{ + "name": "Vitis", + "version": "0.1.0" +} diff --git a/conf/requires/config.js b/conf/requires/config.js new file mode 100755 index 0000000000000000000000000000000000000000..6d0f540fe9ce3c78b73ce81ec4c05a3d853cdbc1 --- /dev/null +++ b/conf/requires/config.js @@ -0,0 +1,66 @@ +'use strict'; + +goog.provide('vitis.application.config'); + +// Fichiers js et css à charger pour l'application Extraction. +var oApplicationFiles = { + 'css': [ + // Vitis + 'css/lib/bootstrap/css/bootstrap.min.css', + 'css/lib/jquery/plugins/bootstrap-datepicker/bootstrap-datepicker3.min.css', + 'css/lib/jquery/plugins/bootstrap-fileinput/css/fileinput.min.css', + 'css/lib/ui-grid/ui-grid.min.css', + 'css/lib/jquery/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css', + 'css/lib/bootstrap-checkbox/build.css', + 'css/lib/bootstrap-checkbox/font-awesome.css', + 'css/lib/jquery/plugins/bootstrap-slider/bootstrap-slider.min.css', + 'css/lib/jquery/plugins/malihu-custom-scrollbar/jquery.mCustomScrollbar.min.css', + 'css/lib/ui-grid/plugins/draggable-rows.less', + 'less/main.less', + // App + 'modules/vitis/less/main.less', + 'modules/extraction/less/main.less', + 'css/lib/codemirror/codemirror.css', + 'css/lib/codemirror/codemirror_foldgutter.css', + 'css/lib/codemirror/map.css', + 'css/lib/codemirror/show-hint.css', + 'css/lib/jquery/plugins/bootstrap-treeview/bootstrap-treeview.min.css', + 'css/lib/jquery/plugins/bootstrap-tagsinput/bootstrap-tagsinput.css', + 'css/lib/jquery/plugins/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css', + 'css/lib/viewer/viewer.min.css' + ], + 'js': { + 'externs': [ + // Studio + 'javascript/externs/bootbox/bootbox.min.js', + 'javascript/externs/codemirror/codemirror.min.js', + 'javascript/externs/codemirror/htmlmixed.js', + 'javascript/externs/codemirror/css.js', + 'javascript/externs/codemirror/javascript.js', + 'javascript/externs/codemirror/clike.js', + 'javascript/externs/codemirror/php.js', + 'javascript/externs/codemirror/xml.js', + 'javascript/externs/codemirror/sql.js', + 'javascript/externs/codemirror/map.js', + 'javascript/externs/codemirror/show-hint.js', + 'javascript/externs/codemirror/addon/fold/foldcode.js', + 'javascript/externs/codemirror/addon/fold/foldgutter.js', + 'javascript/externs/codemirror/addon/fold/brace-fold.js', + 'javascript/externs/codemirror/addon/fold/xml-fold.js', + 'javascript/externs/angular/modules/ui-codemirror/ui-codemirror.min.js', + 'javascript/externs/tinymce/tinymce.min.js', + 'javascript/externs/angular/modules/ui-tinymce/tinymce.js', + 'javascript/externs/jquery/plugins/bootstrap-treeview/bootstrap-treeview.js', + 'javascript/externs/jquery/plugins/bootstrap-tagsinput/bootstrap-tagsinput.min.js', + 'javascript/externs/scripts_cryptage.js', + 'javascript/externs/moment/moment.min.js', + 'javascript/externs/moment/min/moment-with-locales.min.js', + 'javascript/externs/jquery/plugins/notify/notify.js', + 'javascript/externs/jquery/plugins/bootstrap-colorpicker/bootstrap-colorpicker.min.js', + 'javascript/externs/jquery/plugins/bootstrap-confirmation/bootstrap-confirmation.min.js', + 'javascript/externs/jquery/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.min.js', + 'javascript/externs/viewer/viewer.min.js' + ] + }, + 'vitisModuleDependencies': ['ui.codemirror', 'ui.tinymce', 'ui.grid.draggable-rows'] +}; \ No newline at end of file diff --git a/conf/requires/requiresApp.js b/conf/requires/requiresApp.js new file mode 100755 index 0000000000000000000000000000000000000000..3417eb6f16157ed7199e004c095080b7c58043f5 --- /dev/null +++ b/conf/requires/requiresApp.js @@ -0,0 +1,11 @@ +/* global goog */ + +/** + * Ce fichier permet de charger les fichiers de l'applicaiton + * de façon non compilée + * @author: Armand Bahi + */ + +goog.provide('vitis.application.requires'); +//goog.require('vmap.script_module'); +goog.require('extraction.script_module'); \ No newline at end of file diff --git a/install.sh b/install.sh new file mode 100755 index 0000000000000000000000000000000000000000..b5ceb92ab36c08371f45820bd7101ca44e16108d --- /dev/null +++ b/install.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# +# +# Script d'initialisation d'un dépot vMap versionné sous git +# Initislise l'ensemble des dépendances sous forme de subtrees +# Crée des symlinks pour re-créer l'arborescence de l'application +# +# + +if [ `whoami` == "root" ]; then + echo "Please, do not run this script as sudo" +else + cd utils/ + ./init_symlinks.sh + ./pull_subtrees.sh + ./copy_hooks.sh +fi diff --git a/utils/copy_hooks.sh b/utils/copy_hooks.sh new file mode 100755 index 0000000000000000000000000000000000000000..f5bed2f2552ef3440e7e9589197c0922a1875927 --- /dev/null +++ b/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/get_deps.sh b/utils/get_deps.sh new file mode 100755 index 0000000000000000000000000000000000000000..92b0273980ef5ae8db6eea7268fd3a5c406243b9 --- /dev/null +++ b/utils/get_deps.sh @@ -0,0 +1,48 @@ +#!/bin/bash +# +# Récupère l'ensemble des dépendances depuis conf/_install/dependency.xml +# Nécessite xmllint : sudo apt install libxml2-utils +# +# +# +# + + +if [ "../conf/_install/dependency.xml" ]; then + + let depsCount=$(xmllint --xpath 'count(//dependenciesCollection/dependency/name)' ../conf/_install/dependency.xml) + declare -A aDeps + vitisVersion=master + + for (( i=1; i <= $depsCount; i++ )); do + + sName="$(xmllint --xpath 'string(//dependenciesCollection/dependency['$i']/name)' ../conf/_install/dependency.xml)" + sVersion="$(xmllint --xpath 'string(//dependenciesCollection/dependency['$i']/version)' ../conf/_install/dependency.xml)" + sNature="$(xmllint --xpath 'string(//dependenciesCollection/dependency['$i']/nature)' ../conf/_install/dependency.xml)" + + 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 + fi + + done + + echo "[INFO] dependencies:" + echo "vitis : $vitisVersion" + for (( i=1; i <= $depsCount; i++ )); do + + echo "name: ${aDeps[$i, name]}" + echo "version: ${aDeps[$i, version]}" + + done + + export vitisVersion + export depsCount + export aDeps +else + echo "[ERROR] ../conf/_install/dependency.xml not found" +fi diff --git a/utils/githooks/post-merge b/utils/githooks/post-merge new file mode 100755 index 0000000000000000000000000000000000000000..548e6ae56f6a55c2d1acab88308e336c06e71616 --- /dev/null +++ b/utils/githooks/post-merge @@ -0,0 +1,18 @@ +#!/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 subtrees ******" +echo "$(pwd)" + +if [ -d "$(pwd)/utils" ]; then + cd utils + ./pull_subtrees.sh +fi diff --git a/utils/githooks/pre-push b/utils/githooks/pre-push new file mode 100755 index 0000000000000000000000000000000000000000..50401f9e2df8033763628124e1445afe66e9bad5 --- /dev/null +++ b/utils/githooks/pre-push @@ -0,0 +1,21 @@ +#!/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 subtrees ******" + if [ -d "$(pwd)/utils" ]; then + cd utils + ./push_subtrees.sh + fi +fi diff --git a/utils/init_subtrees.sh b/utils/init_subtrees.sh new file mode 100755 index 0000000000000000000000000000000000000000..7f9c2abf14978552d1ae88ca6b9b119d51c71578 --- /dev/null +++ b/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/init_symlinks.sh b/utils/init_symlinks.sh new file mode 100755 index 0000000000000000000000000000000000000000..c98ed30e162c2d81c8b90e5b6755bb5602941b5e --- /dev/null +++ b/utils/init_symlinks.sh @@ -0,0 +1,129 @@ +#!/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 .. + +# Vitis +echo "---- Link vitis ----" +if ! [ -e "$(pwd)/client" ]; then + echo "---- Link vitis 2 ----" + ln -rsf src/vitis/client client +fi +if ! [ -e "$(pwd)/vas" ]; then + ln -rsf src/vitis/vas vas +fi + +# Conf +echo "---- Link conf ----" +if ! [ -e "src/vitis/client/conf" ]; then + ln -rsf conf src/vitis/client/conf +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 src/vitis/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 src/vitis/vas/rest/ws/${module} + fi + fi + if [ -d "$(pwd)/src/module_${module}/web_service/conf" ]; then + if ! [ -e "src/vitis/vas/rest/conf/${module}" ]; then + ln -rsf src/module_${module}/web_service/conf src/vitis/vas/rest/conf/${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 src/vitis/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} src/vitis/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/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/conf/properties.inc" + "vas/rest/conf/properties_domain.inc" + "vas/rest/conf/properties_post.inc" + "vas/rest/conf/properties_server.inc" + "vas/rest/conf/version.inc" + "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 + if [ -d "$(pwd)/vas/rest/conf/${properties_dir}" ]; then + for properties_file in $( ls "${APP_EXISTING_PATH}/vas/rest/conf/${properties_dir}"); do + # if [ ${properties_file:0:10}=="properties" || ${properties_file}=="version.inc" ]; then + if [[ $properties_file == "properties"* ]] || [[ $properties_file == "version.inc" ]]; then + echo "copy vas/rest/conf/${properties_dir}/${properties_file}" + cp -f "${APP_EXISTING_PATH}/vas/rest/conf/${properties_dir}/${properties_file}" "$(pwd)/vas/rest/conf/${properties_dir}/${properties_file}" + fi + done + fi + fi + done + fi +fi diff --git a/utils/pull_subtrees.sh b/utils/pull_subtrees.sh new file mode 100755 index 0000000000000000000000000000000000000000..c2793f2ee9ad6e0f53da243fb1b6d26dd9baa20b --- /dev/null +++ b/utils/pull_subtrees.sh @@ -0,0 +1,46 @@ +#!/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" master + +# fichiers à ignorer +git update-index --assume-unchanged conf/properties.json +git update-index --assume-unchanged conf/package.json +git update-index --assume-unchanged src/vitis/vas/rest/.htaccess +git update-index --assume-unchanged src/vitis/vas/rest/conf/properties.inc +git update-index --assume-unchanged src/vitis/vas/rest/conf/properties_domain.inc +git update-index --assume-unchanged src/vitis/vas/rest/conf/properties_post.inc +git update-index --assume-unchanged src/vitis/vas/rest/conf/properties_server.inc +git update-index --assume-unchanged src/vitis/vas/rest/conf/version.inc + +# 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" master + # fichiers à ignorer + git update-index --assume-unchanged src/${aDeps[$i, name]}/web_service/conf/properties.inc + git update-index --assume-unchanged src/${aDeps[$i, name]}/web_service/conf/properties_server.inc + git update-index --assume-unchanged src/${aDeps[$i, name]}/web_service/conf/version.inc + fi + done +fi diff --git a/utils/push_subtrees.sh b/utils/push_subtrees.sh new file mode 100755 index 0000000000000000000000000000000000000000..b4949ea2dca1465c2cc0282d59442c158d7138e1 --- /dev/null +++ b/utils/push_subtrees.sh @@ -0,0 +1,37 @@ +#!/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 ----" +git subtree push --prefix src/vitis "git@gitlab.veremes.net:Development/vitis_apps/sources/vitis.git" master + +# 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" master + } || { # 'catch' block + echo "could not push ${aDeps[$i, name]}" + } + fi + done +fi