Commit | Line | Data |
---|---|---|
69ff4a4a | 1 | #!/bin/bash |
2 | ||
fa379693 | 3 | ## Delete/create a dir |
4 | ## usage: dm_reset_dirs <path1> <path2> ... | |
5 | function 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> | |
15 | function 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>... | |
27 | function 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>... | |
39 | function 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 |
49 | function 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> | |
64 | function dm_install_core() { | |
65 | local repo="$1" | |
66 | local to="$2" | |
67 | ||
04e5df15 | 68 | for dir in ang css i js PEAR templates bin CRM api extern Reports install settings Civi partials release-notes xml ; 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 |
e4c4f267 | 73 | dm_install_files "$repo" "$to" composer.json composer.lock bower.json package.json Civi.php README.md release-notes.md extension-compatibility.json |
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> | |
94 | function 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> | |
114 | function 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 | |
065248bd | 122 | dm_preg_edit '/version = ([0-9]*\.x)-[1-9.]*/m' "version = \$1-$DM_VERSION" "$INFO" |
7082ee3c | 123 | done |
08297720 TO |
124 | |
125 | for f in "$to/.gitignore" "$to/.toxic.json" ; do | |
126 | if [ -f "$f" ]; then | |
127 | rm -f "$f" | |
128 | fi | |
129 | done | |
7082ee3c | 130 | } |
30a50cd8 | 131 | |
274ebc9e | 132 | ## Copy Joomla-integration module |
133 | ## usage: dm_install_joomla <joomla_repo_path> <to_path> | |
134 | function dm_install_joomla() { | |
135 | local repo="$1" | |
136 | local to="$2" | |
bf20507d | 137 | dm_install_dir "$repo" "$to" |
80def6a8 | 138 | |
139 | ## Before this change, the zip file included the joomla-integration | |
140 | ## modules twice. The two were basically identical -- except that | |
141 | ## one included .gitignore and the omitted it. We'll now omit it | |
142 | ## consistently. | |
08297720 TO |
143 | |
144 | for f in "$to/.gitignore" "$to/.toxic.json" ; do | |
145 | if [ -f "$f" ]; then | |
146 | rm -f "$f" | |
147 | fi | |
148 | done | |
274ebc9e | 149 | } |
150 | ||
8d32d903 | 151 | ## usage: dm_install_l10n <l10n_repo_path> <to_path> |
152 | function dm_install_l10n() { | |
153 | local repo="$1" | |
154 | local to="$2" | |
155 | dm_install_dir "$repo" "$to" | |
156 | } | |
157 | ||
c84eb16e TO |
158 | ## Copy composer's "vendor" folder |
159 | ## usage: dm_install_vendor <from_path> <to_path> | |
160 | function dm_install_vendor() { | |
161 | local repo="$1" | |
162 | local to="$2" | |
163 | ||
164 | local excludes_rsync="" | |
af5c4d9f | 165 | ## CRM-21729 - .idea test-cases unit-test come from phpquery package. |
166 | for exclude in .git .svn {T,t}est{,s} {D,d}oc{,s} {E,e}xample{,s} .idea test-cases unit-test; do | |
c84eb16e TO |
167 | excludes_rsync="--exclude=${exclude} ${excludes_rsync}" |
168 | done | |
169 | ||
c84eb16e | 170 | [ ! -d "$to" ] && mkdir "$to" |
e00b8b13 | 171 | ${DM_RSYNC:-rsync} -avC $excludes_rsync "$repo/./" "$to/./" |
c84eb16e TO |
172 | } |
173 | ||
9003e8e1 | 174 | ## usage: dm_install_wordpress <wp_repo_path> <to_path> |
175 | function dm_install_wordpress() { | |
176 | local repo="$1" | |
177 | local to="$2" | |
d0f95878 | 178 | |
179 | if [ ! -d "$to" ]; then | |
180 | mkdir -p "$to" | |
181 | fi | |
e00b8b13 | 182 | ${DM_RSYNC:-rsync} -avC \ |
d0f95878 | 183 | --exclude=.git \ |
184 | --exclude=.svn \ | |
185 | --exclude=civicrm.config.php.wordpress \ | |
08297720 | 186 | --exclude=.toxic.json \ |
d0f95878 | 187 | --exclude=.gitignore \ |
188 | --exclude=civicrm \ | |
189 | "$repo/./" "$to/./" | |
190 | ## Need --exclude=civicrm for self-building on WP site | |
006e39e1 TO |
191 | |
192 | dm_preg_edit '/^Version: [0-9\.]+/m' "Version: $DM_VERSION" "$to/civicrm.php" | |
9003e8e1 | 193 | } |
194 | ||
1446640b TO |
195 | |
196 | ## Generate the "bower_components" folder. | |
197 | ## usage: dm_generate_bower <repo_path> | |
198 | function dm_generate_bower() { | |
199 | local repo="$1" | |
200 | pushd "$repo" | |
201 | ${DM_NPM:-npm} install | |
202 | ${DM_NODE:-node} node_modules/bower/bin/bower install | |
203 | popd | |
204 | } | |
205 | ||
c84eb16e TO |
206 | ## Generate the composer "vendor" folder |
207 | ## usage: dm_generate_vendor <repo_path> | |
208 | function dm_generate_vendor() { | |
209 | local repo="$1" | |
210 | pushd "$repo" | |
1446640b | 211 | ${DM_COMPOSER:-composer} install |
c84eb16e TO |
212 | popd |
213 | } | |
214 | ||
30a50cd8 | 215 | ## Generate civicrm-version.php |
216 | ## usage: dm_generate_version <file> <ufname> | |
217 | function dm_generate_version() { | |
218 | local to="$1" | |
219 | local ufname="$2" | |
220 | ||
221 | # final touch | |
222 | echo "<?php | |
e78d5446 | 223 | /** @deprecated */ |
30a50cd8 | 224 | function civicrmVersion( ) { |
225 | return array( 'version' => '$DM_VERSION', | |
226 | 'cms' => '$ufname', | |
227 | 'revision' => '$DM_REVISION' ); | |
228 | } | |
229 | " > "$to" | |
230 | } | |
445009ec | 231 | |
232 | ## Perform a hard checkout on a given report | |
233 | ## usage: dm_git_checkout <repo_path> <tree-ish> | |
234 | function dm_git_checkout() { | |
235 | pushd "$1" | |
236 | git checkout . | |
237 | git checkout "$2" | |
238 | popd | |
239 | } | |
006e39e1 | 240 | |
3c7cc32e TO |
241 | ## Download a Civi extension |
242 | ## usage: dm_install_cvext <full-ext-key> <target-path> | |
243 | function dm_install_cvext() { | |
244 | # cv dl -b '@https://civicrm.org/extdir/ver=4.7.25|cms=Drupal/com.iatspayments.civicrm.xml' --destination=$PWD/iatspayments | |
245 | cv dl -b "@https://civicrm.org/extdir/ver=$DM_VERSION|cms=Drupal/$1.xml" --to="$2" | |
246 | } | |
247 | ||
006e39e1 TO |
248 | ## Edit a file by applying a regular expression. |
249 | ## Note: We'd rather just call "sed", but it differs on GNU+BSD. | |
250 | ## usage: dm_preg_edit <search-pattern> <replacement-pattern> <file> | |
251 | ## example: '/version = \([0-9]*\.x-\)[1-9.]*/' 'version = \1$DM_VERSION' | |
252 | function dm_preg_edit() { | |
253 | env RPAT="$1" RREPL="$2" RFILE="$3" \ | |
254 | php -r '$c = file_get_contents(getenv("RFILE")); $c = preg_replace(getenv("RPAT"), getenv("RREPL"), $c); file_put_contents(getenv("RFILE"), $c);' | |
255 | } |