4 ## usage: dm_reset_dirs <path1> <path2> ...
5 function dm_reset_dirs
() {
7 [ -d "$d" ] && rm -rf "$d"
13 ## Copy files from one dir into another dir
14 ## usage: dm_install_dir <from-dir> <to-dir>
15 function dm_install_dir
() {
19 if [ ! -d "$to" ]; then
22 ${DM_RSYNC:-rsync} -avC --exclude=.git
--exclude=.svn
"$from/./" "$to/./"
26 ## usage: dm_install_files <from-dir> <to-dir> <file1> <file2>...
27 function dm_install_files
() {
34 [ -f "$from/$file" ] && cp -f "$from/$file" "$to/$file"
38 ## usage: dm_remove_files <directory> <file1> <file2>...
39 function dm_remove_files
() {
44 [ -f "$tgt/$file" ] && rm -f "$tgt/$file"
48 ## Copy all bower dependencies
49 function dm_install_bower
() {
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}"
58 [ ! -d "$to" ] && mkdir
"$to"
59 ${DM_RSYNC:-rsync} -avC $excludes_rsync "$repo/./" "$to/./"
62 ## Copy all core files
63 ## usage: dm_install_core <core_repo_path> <to_path>
64 function dm_install_core
() {
68 for dir
in ang css i js PEAR templates bin CRM api extern Reports
install settings Civi partials release-notes xml setup
; do
69 [ -d "$repo/$dir" ] && dm_install_dir
"$repo/$dir" "$to/$dir"
72 dm_install_files
"$repo" "$to" {agpl-3.0
,agpl-3.0.exception
,gpl
,CONTRIBUTORS
}.txt
73 dm_install_files
"$repo" "$to" composer.json composer.lock package.json Civi.php README.md release-notes.md extension-compatibility.json
76 pushd "$repo" >> /dev
/null
77 dm_install_files
"$repo" "$to" sql
/civicrm
*.mysql
sql
/case_sample
*.mysql
78 ## TODO: for master, remove counties.US.SQL.gz
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
88 rm -rf $to/sql
/civicrm_
*.??_??.mysql
92 ## Copy built-in extensions
93 ## usage: dm_install_core <core_repo_path> <to_path> <ext-dirs...>
94 function dm_install_coreext
() {
100 for relext
in "$@" ; do
101 [ ! -d "$to/$relext" ] && mkdir
-p "$to/$relext"
102 ${DM_RSYNC:-rsync} -avC $excludes_rsync --include=core
"$repo/$relext/./" "$to/$relext/./"
106 ## Get a list of default/core extension directories (space-delimited)
107 ## reldirs=$(dm_core_exts)
108 function dm_core_exts
() {
109 echo ext
/sequentialcreditnotes
115 ## usage: dm_install_packages <packages_repo_path> <to_path>
116 function dm_install_packages
() {
120 local excludes_rsync
=""
121 for exclude
in .git .svn _ORIGINAL_ SeleniumRC PHPUnit PhpDocumentor SymfonyComponents git-footnote PHP
/CodeCoverage
; do
122 excludes_rsync
="--exclude=${exclude} ${excludes_rsync}"
125 ## Note: These small folders have items that previously were not published,
126 ## but there's no real cost to including them, and excluding them seems
127 ## likely to cause confusion as the codebase evolves:
128 ## packages/Files packages/PHP packages/Text
130 [ ! -d "$to" ] && mkdir
"$to"
131 ${DM_RSYNC:-rsync} -avC $excludes_rsync --include=core
"$repo/./" "$to/./"
134 ## Copy Drupal-integration module
135 ## usage: dm_install_drupal <drupal_repo_path> <to_path>
136 function dm_install_drupal
() {
139 dm_install_dir
"$repo" "$to"
141 # Set full version in .info files. See CRM-15768.
142 local MODULE_DIRS
=`find "$to" -type f -name "*.info"`
143 for INFO
in $MODULE_DIRS; do
144 dm_preg_edit
'/version = ([0-9]*\.x)-[1-9.]*/m' "version = \$1-$DM_VERSION" "$INFO"
147 for f
in "$to/.gitignore" "$to/.toxic.json" ; do
154 ## Copy Joomla-integration module
155 ## usage: dm_install_joomla <joomla_repo_path> <to_path>
156 function dm_install_joomla
() {
159 dm_install_dir
"$repo" "$to"
161 ## Before this change, the zip file included the joomla-integration
162 ## modules twice. The two were basically identical -- except that
163 ## one included .gitignore and the omitted it. We'll now omit it
166 for f
in "$to/.gitignore" "$to/.toxic.json" ; do
173 ## usage: dm_install_l10n <l10n_repo_path> <to_path>
174 function dm_install_l10n
() {
177 dm_install_dir
"$repo" "$to"
180 ## Copy composer's "vendor" folder
181 ## usage: dm_install_vendor <from_path> <to_path>
182 function dm_install_vendor
() {
186 local excludes_rsync
=""
187 ## CRM-21729 - .idea test-cases unit-test come from phpquery package.
188 for exclude
in .git .svn
{T
,t
}est
{,s
} {D
,d
}oc
{,s
} {E
,e
}xample
{,s
} .idea test-cases unit-test
; do
189 excludes_rsync
="--exclude=${exclude} ${excludes_rsync}"
192 [ ! -d "$to" ] && mkdir
"$to"
193 ${DM_RSYNC:-rsync} -avC $excludes_rsync "$repo/./" "$to/./"
196 ## usage: dm_install_wordpress <wp_repo_path> <to_path>
197 function dm_install_wordpress
() {
201 if [ ! -d "$to" ]; then
204 ${DM_RSYNC:-rsync} -avC \
207 --exclude=civicrm.config.php.wordpress \
208 --exclude=.toxic.json \
209 --exclude=.gitignore \
212 ## Need --exclude=civicrm for self-building on WP site
214 dm_preg_edit
'/^Version: [0-9\.]+/m' "Version: $DM_VERSION" "$to/civicrm.php"
215 dm_preg_edit
"/^define\( \'CIVICRM_PLUGIN_VERSION\',\W'[0-9\.]+/m" "define( 'CIVICRM_PLUGIN_VERSION', '$DM_VERSION" "$to/civicrm.php"
218 ## Generate the composer "vendor" folder
219 ## usage: dm_generate_vendor <repo_path>
220 function dm_generate_vendor
() {
223 ${DM_COMPOSER:-composer} install
227 ## Generate civicrm-version.php
228 ## usage: dm_generate_version <file> <ufname>
229 function dm_generate_version
() {
236 function civicrmVersion( ) {
237 return array( 'version' => '$DM_VERSION',
239 'revision' => '$DM_REVISION' );
244 ## Perform a hard checkout on a given report
245 ## usage: dm_git_checkout <repo_path> <tree-ish>
246 function dm_git_checkout
() {
253 ## Download a Civi extension
254 ## usage: dm_install_cvext <full-ext-key> <target-path>
255 function dm_install_cvext
() {
256 # cv dl -b '@https://civicrm.org/extdir/ver=4.7.25|cms=Drupal/com.iatspayments.civicrm.xml' --destination=$PWD/iatspayments
257 cv dl
-b "@https://civicrm.org/extdir/ver=$DM_VERSION|cms=Drupal/$1.xml" --to="$2"
260 ## Edit a file by applying a regular expression.
261 ## Note: We'd rather just call "sed", but it differs on GNU+BSD.
262 ## usage: dm_preg_edit <search-pattern> <replacement-pattern> <file>
263 ## example: '/version = \([0-9]*\.x-\)[1-9.]*/' 'version = \1$DM_VERSION'
264 function dm_preg_edit
() {
265 env RPAT
="$1" RREPL
="$2" RFILE
="$3" \
266 php
-r '$c = file_get_contents(getenv("RFILE")); $c = preg_replace(getenv("RPAT"), getenv("RREPL"), $c); file_put_contents(getenv("RFILE"), $c);'