Merge pull request #9510 from colemanw/CRM-19709-b
[civicrm-core.git] / distmaker / dists / common.sh
CommitLineData
69ff4a4a 1#!/bin/bash
2
fa379693 3## Delete/create a dir
4## usage: dm_reset_dirs <path1> <path2> ...
5function dm_reset_dirs() {
6 for d in "$@" ; do
7 [ -d "$d" ] && rm -rf "$d"
8 done
9
10 mkdir -p "$@"
11}
12
69ff4a4a 13## Copy files from one dir into another dir
14## usage: dm_install_dir <from-dir> <to-dir>
15function dm_install_dir() {
16 local from="$1"
17 local to="$2"
18
19 if [ ! -d "$to" ]; then
20 mkdir -p "$to"
21 fi
e00b8b13 22 ${DM_RSYNC:-rsync} -avC --exclude=.git --exclude=.svn "$from/./" "$to/./"
69ff4a4a 23}
24
25## Copy listed files
26## usage: dm_install_files <from-dir> <to-dir> <file1> <file2>...
27function dm_install_files() {
28 local from="$1"
29 shift
30 local to="$1"
31 shift
32
33 for file in "$@" ; do
34 [ -f "$from/$file" ] && cp -f "$from/$file" "$to/$file"
35 done
36}
37
38## usage: dm_remove_files <directory> <file1> <file2>...
39function dm_remove_files() {
40 local tgt="$1"
41 shift
42
43 for file in "$@" ; do
44 [ -f "$tgt/$file" ] && rm -f "$tgt/$file"
45 done
46}
47
1446640b
TO
48## Copy all bower dependencies
49function dm_install_bower() {
50 local repo="$1"
51 local to="$2"
52
53 local excludes_rsync=""
54 for exclude in .git .svn {T,t}est{,s} {D,d}oc{,s} {E,e}xample{,s} ; do
55 excludes_rsync="--exclude=${exclude} ${excludes_rsync}"
56 done
57
58 [ ! -d "$to" ] && mkdir "$to"
e00b8b13 59 ${DM_RSYNC:-rsync} -avC $excludes_rsync "$repo/./" "$to/./"
1446640b
TO
60}
61
69ff4a4a 62## Copy all core files
63## usage: dm_install_core <core_repo_path> <to_path>
64function dm_install_core() {
65 local repo="$1"
66 local to="$2"
67
3120e843 68 for dir in ang css i js PEAR templates bin CRM api extern Reports install settings Civi partials release-notes ; do
69ff4a4a 69 [ -d "$repo/$dir" ] && dm_install_dir "$repo/$dir" "$to/$dir"
70 done
71
62da8665 72 dm_install_files "$repo" "$to" {agpl-3.0,agpl-3.0.exception,gpl,CONTRIBUTORS}.txt
3120e843 73 dm_install_files "$repo" "$to" composer.json composer.lock bower.json package.json Civi.php README.md release-notes.md
69ff4a4a 74
75 mkdir -p "$to/sql"
76 pushd "$repo" >> /dev/null
61101c01 77 dm_install_files "$repo" "$to" sql/civicrm*.mysql sql/case_sample*.mysql
69ff4a4a 78 ## TODO: for master, remove counties.US.SQL.gz
79 popd >> /dev/null
80
81 if [ -d $to/bin ] ; then
82 rm -f $to/bin/setup.sh
83 rm -f $to/bin/setup.php4.sh
84 rm -f $to/bin/setup.bat
85 fi
86
87 set +e
88 rm -rf $to/sql/civicrm_*.??_??.mysql
89 set -e
90}
9f0ca23d 91
92## Copy all packages
93## usage: dm_install_packages <packages_repo_path> <to_path>
94function dm_install_packages() {
95 local repo="$1"
96 local to="$2"
97
98 local excludes_rsync=""
acbec2da 99 for exclude in .git .svn _ORIGINAL_ SeleniumRC PHPUnit PhpDocumentor SymfonyComponents amavisd-new git-footnote PHP/CodeCoverage ; do
9f0ca23d 100 excludes_rsync="--exclude=${exclude} ${excludes_rsync}"
101 done
102
e365b6e5 103 ## Note: These small folders have items that previously were not published,
104 ## but there's no real cost to including them, and excluding them seems
105 ## likely to cause confusion as the codebase evolves:
106 ## packages/Files packages/PHP packages/Text
107
9f0ca23d 108 [ ! -d "$to" ] && mkdir "$to"
e00b8b13 109 ${DM_RSYNC:-rsync} -avC $excludes_rsync --include=core "$repo/./" "$to/./"
9f0ca23d 110}
7082ee3c 111
112## Copy Drupal-integration module
113## usage: dm_install_drupal <drupal_repo_path> <to_path>
114function dm_install_drupal() {
115 local repo="$1"
116 local to="$2"
bf20507d 117 dm_install_dir "$repo" "$to"
7082ee3c 118
0c5cbe3d 119 # Set full version in .info files. See CRM-15768.
7082ee3c 120 local MODULE_DIRS=`find "$to" -type f -name "*.info"`
121 for INFO in $MODULE_DIRS; do
122 if [ $(uname) = "Darwin" ]; then
123 ## BSD sed
0c5cbe3d 124 sed -i '' "s/version = \([0-9]*\.x-\)[1-9.]*/version = \1$DM_VERSION/g" $INFO
7082ee3c 125 else
126 ## GNU sed
0c5cbe3d 127 sed -i'' "s/version = \([0-9]*\.x-\)[1-9.]*/version = \1$DM_VERSION/g" $INFO
7082ee3c 128 fi
129 done
08297720
TO
130
131 for f in "$to/.gitignore" "$to/.toxic.json" ; do
132 if [ -f "$f" ]; then
133 rm -f "$f"
134 fi
135 done
7082ee3c 136}
30a50cd8 137
274ebc9e 138## Copy Joomla-integration module
139## usage: dm_install_joomla <joomla_repo_path> <to_path>
140function dm_install_joomla() {
141 local repo="$1"
142 local to="$2"
bf20507d 143 dm_install_dir "$repo" "$to"
80def6a8 144
145 ## Before this change, the zip file included the joomla-integration
146 ## modules twice. The two were basically identical -- except that
147 ## one included .gitignore and the omitted it. We'll now omit it
148 ## consistently.
08297720
TO
149
150 for f in "$to/.gitignore" "$to/.toxic.json" ; do
151 if [ -f "$f" ]; then
152 rm -f "$f"
153 fi
154 done
274ebc9e 155}
156
8d32d903 157## usage: dm_install_l10n <l10n_repo_path> <to_path>
158function dm_install_l10n() {
159 local repo="$1"
160 local to="$2"
161 dm_install_dir "$repo" "$to"
162}
163
c84eb16e
TO
164## Copy composer's "vendor" folder
165## usage: dm_install_vendor <from_path> <to_path>
166function dm_install_vendor() {
167 local repo="$1"
168 local to="$2"
169
170 local excludes_rsync=""
171 for exclude in .git .svn {T,t}est{,s} {D,d}oc{,s} {E,e}xample{,s} ; do
172 excludes_rsync="--exclude=${exclude} ${excludes_rsync}"
173 done
174
c84eb16e 175 [ ! -d "$to" ] && mkdir "$to"
e00b8b13 176 ${DM_RSYNC:-rsync} -avC $excludes_rsync "$repo/./" "$to/./"
c84eb16e
TO
177}
178
9003e8e1 179## usage: dm_install_wordpress <wp_repo_path> <to_path>
180function dm_install_wordpress() {
181 local repo="$1"
182 local to="$2"
d0f95878 183
184 if [ ! -d "$to" ]; then
185 mkdir -p "$to"
186 fi
e00b8b13 187 ${DM_RSYNC:-rsync} -avC \
d0f95878 188 --exclude=.git \
189 --exclude=.svn \
190 --exclude=civicrm.config.php.wordpress \
08297720 191 --exclude=.toxic.json \
d0f95878 192 --exclude=.gitignore \
193 --exclude=civicrm \
194 "$repo/./" "$to/./"
195 ## Need --exclude=civicrm for self-building on WP site
9003e8e1 196}
197
1446640b
TO
198
199## Generate the "bower_components" folder.
200## usage: dm_generate_bower <repo_path>
201function dm_generate_bower() {
202 local repo="$1"
203 pushd "$repo"
204 ${DM_NPM:-npm} install
205 ${DM_NODE:-node} node_modules/bower/bin/bower install
206 popd
207}
208
c84eb16e
TO
209## Generate the composer "vendor" folder
210## usage: dm_generate_vendor <repo_path>
211function dm_generate_vendor() {
212 local repo="$1"
213 pushd "$repo"
1446640b 214 ${DM_COMPOSER:-composer} install
c84eb16e
TO
215 popd
216}
217
30a50cd8 218## Generate civicrm-version.php
219## usage: dm_generate_version <file> <ufname>
220function dm_generate_version() {
221 local to="$1"
222 local ufname="$2"
223
224 # final touch
225 echo "<?php
226function civicrmVersion( ) {
227 return array( 'version' => '$DM_VERSION',
228 'cms' => '$ufname',
229 'revision' => '$DM_REVISION' );
230}
231" > "$to"
232}
445009ec 233
234## Perform a hard checkout on a given report
235## usage: dm_git_checkout <repo_path> <tree-ish>
236function dm_git_checkout() {
237 pushd "$1"
238 git checkout .
239 git checkout "$2"
240 popd
241}