forked from ljoli-invitu/env_invitu_dev
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathlaunch_project.sh
executable file
·176 lines (152 loc) · 5.27 KB
/
launch_project.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#! /bin/bash
workspacemain=$HOME/invitu-devel
workspacerepos=$workspacemain/allrepos
## Welcome message
echo "Bonjour, bienvenue dans l'outils de lancement d'environement odoo automatique (by Coco@invitu)"
## prompt project name (requierd for python check/install)
echo "Indiquez le nom de votre projet"
#Read input in the assigned variable
read nameproject
## prompt project version (requierd for python check/install)
echo "Indiquez la version d'odoo que vous souhaitez utilisez : (Format 8,9,10,11,12,13,14,15,16,17)"
#Read input in the assigned variable
read odooversion
#We check and make project folder if not exist
echo "Nous vérifions votre dossier de projet ..."
projectpath=$workspacemain/projects/$nameproject$odooversion
if [ -d $projectpath ]
then
echo 'Votre workspace project existe déja !'
else
echo 'Création du workspace projet.'
mkdir $projectpath
fi
#######
# combinaison de versions
# ODOO 08 : python 2.7.9
# ODOO 09 : python 2.7.9
# ODOO 10 : python 2.7.9
# ODOO 11 : python 3.5
# ODOO 12 : python 3.5
# ODOO 13 : python 3.6
# ODOO 14 : python 3.8
# ODOO 15 : python 3.12
# ODOO 16 : python 3.12
# ODOO 17 : python 3.12
# ODOO 18 : python 3.12
#########
#We check odooversion with pyenv_version
case $odooversion in
"8" | "9" | "10")
pyenv_version="2.7.9"
pyenvsystem=$(pyenv versions | grep -m 1 2.7.9)
;;
"11" | "12")
pyenv_version="3.5"
pyenvsystem=$(pyenv versions | grep -m 1 3.5)
;;
"13")
pyenv_version="3.6"
pyenvsystem=$(pyenv versions | grep -m 1 3.6)
;;
"14")
pyenv_version="3.8"
pyenvsystem=$(pyenv versions | grep -m 1 3.8)
;;
"15" | "16" | "17" | "18")
pyenv_version="3.12"
pyenvsystem=$(pyenv versions | grep -m 1 3.12)
;;
esac
## We check or install python environement for odoo version
echo 'Nous vérifions si py env est installé.'
if [ -z "$pyenvsystem" ]
then
echo 'Nous installons votre pyenv pour Odoo.'
pyenv install -v $pyenv_version
else
echo 'Pyenv pour Odoo est déja installé, rien à faire.'
fi
## We create environement
pyenv_name=odoo$odooversion
pyenv_create=$(pyenv versions | grep -m 1 ^\ \ $pyenv_name)
if [ -z "$pyenv_create" ]
then
echo 'Création environement pyenv'
pyenv virtualenv $pyenv_version $pyenv_name
else
echo 'Votre environement est déja créer'
fi
#We check odoo version update
odoov="$odooversion.0"
echo "On se déplace dans le répertoire Odoo"
odoopath=$workspacerepos/gitodoo/odoo
cd $odoopath
echo "On effectue un git checkout et git pull de la version."
git checkout $odoov && git pull
#We check if modules.csv is present
echo "On vérifie si le fichier modules.csv existe..."
modulefile="$projectpath/modules.csv"
if [ -f $modulefile ]
then
echo "Fichier présent."
else
echo "Vous devez créer le fichier modules.csv dans votre projet $projectpath pour poursuivre !"
exit
fi
#We check and download repos from conf csv file
echo "On importe les modules contenue dans modules.csv"
#Read each line of the file in each iteration
while IFS="," read -r module_name module_link
do
#We can make file process here
echo "On détermine quels type de module est invoqué :"
echo $module_link
if [[ $module_name == \#* ]]; then
echo 'commentaire'
elif [[ $module_link == http* ]]; then
echo 'Module via url : on supprime le lien symbolique et on recupere le module'
if [[ -L "$projectpath/$module_name" ]]; then
unlink $projectpath/$module_name
fi
echo 'on supprime aussi le dossier pour permettre une MAJ propre'
if [[ -d "$projectpath/$module_name" ]]; then
rm -rf $projectpath/$module_name
fi
repo="$(echo $module_link | cut -d/ -f5)"
branch="$(echo $module_link | cut -d/ -f7)"
echo $branch
module_url=${module_link/\/tree\//\/archive\/}
echo $module_url
echo "wget -O - $module_url.tar.gz | tar -xz --strip=1 $repo-$branch/$module_name"
wget -O - $module_url.tar.gz | tar -xvz -C $projectpath --strip=1 $repo-$branch/$module_name
elif [[ $module_link == git* ]]; then
echo 'Module via repos : on supprime le dossier et on crée le lien symbolique'
if [[ -d "$projectpath/$module_name" ]]; then
rm -rf $projectpath/$module_name
fi
echo $workspacerepos/$module_link
if [ ! -d $workspacerepos/$module_link ]; then
echo "please git clone the repo $module_link first"
fi
# On supprime le lien au cas où le repo a changé
if [ -L $projectpath/$module_name ]; then
echo "UNLINK"
unlink $projectpath/$module_name
fi
cd $workspacerepos/$module_link
git checkout $odoov && git pull
ln -s $workspacerepos/$module_link/$module_name $projectpath
else
echo "Erreur dans le fichier de déclaration des modules $module_name $module_link"
exit
fi
#end of while in file
done < $modulefile
#We provide cmd for odoo lauch
echo ""
echo "Pour lancer votre environement odoo vous devez saisir cette commande :"
echo "${PYENV_ROOT}/versions/$pyenv_name/bin/python $odoopath/odoo-bin --limit-time-real=3600 --addons-path=$odoopath/addons,$projectpath -d $nameproject$odooversion"
echo "Si vous souhaitez charger un language, ajouter --load-language=fr_FR -i base"
echo "Si vous ne souhaitez pas de donnée de test, ajouter cet argument à la commande ci-dessus : --without-demo=all"
echo "Votre projet Odoo est prêt !"