Newer
Older
#!/bin/zsh
# vim: set shiftwidth=4 softtabstop=4:
# Create archive of project sources
# Arguments:
# - directory of the odoo sources
# - name of the tar file (the target file will have this name + .xz) if no name specified, name is <project name>.tar
odoo_dir=$1
tar_file=$2
here=$(dirname $0)
project_home=$(cd $here && cd .. && echo $PWD)
project_name=$(basename $project_home)
python=python
odoo_modules="$($python -B -c "import ConfigParser ; c = ConfigParser.ConfigParser() ; c.read('${project_home}/setup.cfg') ; print(' '.join(c.get('odoo_scripts', 'modules', '').split()))")"
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
dependencies="$($python -B -c "import ConfigParser ; c = ConfigParser.ConfigParser() ; c.read('${project_home}/setup.cfg') ; print(c.has_section('odoo_scripts') and c.has_option('odoo_scripts', 'dependencies') and' '.join(c.get('odoo_scripts', 'dependencies', 'dependencies').split()) or 'dependencies')")"
if [[ -z $tar_file ]];
then
tar_file=${project_name}.tar
fi
pushd $project_home
# Create empty tar
tar cf ${project_name}.tar --files-from /dev/null
# Add modules, in odoo_modules directory (whatever the original directory name)
for module in $(eval echo $odoo_modules) ;
do
tar uf $tar_file --transform="s|^$(dirname $module)|odoo_modules|" $module --show-transform --exclude-vcs --exclude-backups --exclude='*.pyc' --exclude='.drone.yml'
done
# Add dependencies, in dependencies directory (whatever the original directory name)
for dep in $(eval echo $dependencies) ;
do
tar uf $tar_file --transform="s|^$(dirname $dep)|dependencies|" $dep --exclude-vcs --exclude-backups --exclude='*.pyc' --exclude='.drone.yml'
done
# Add version number file if present
if [[ -f VERSION ]];
then
tar uf $tar_file VERSION
fi
if [[ -d $odoo_dir ]];
then
tar uf $tar_file --transform="s|^$(echo $odoo_dir | sed -e "s|/\(.*\)|\1|")|odoo|" $odoo_dir --exclude-vcs --exclude-backups --exclude='*.pyc'
fi
# Compress the file
xz $tar_file
popd