build.xml 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project name="UNA" basedir="." default="test">
  3. <property file="${project.basedir}/build.properties" override="true" />
  4. <property name="build" value="0" override="yes" />
  5. <property name="modules" value="" override="yes" />
  6. <if>
  7. <not><isset property="composer" /></not>
  8. <then><property name="composer" value="${project.basedir}/composer.phar" override="yes" /></then>
  9. </if>
  10. <if>
  11. <not><isset property="php" /></not>
  12. <then><property name="php" value="php" override="yes" /></then>
  13. </if>
  14. <if>
  15. <not><isset property="db_host" /></not>
  16. <then><property name="db_host" value="localhost" override="yes" /></then>
  17. </if>
  18. <if>
  19. <not><isset property="db_name" /></not>
  20. <then><property name="db_name" value="test" override="yes" /></then>
  21. </if>
  22. <if>
  23. <not><isset property="db_user" /></not>
  24. <then><property name="db_user" value="root" override="yes" /></then>
  25. </if>
  26. <if>
  27. <not><isset property="db_password" /></not>
  28. <then><property name="db_password" value="" override="yes" /></then>
  29. </if>
  30. <if>
  31. <not><isset property="http_host" /></not>
  32. <then><property name="http_host" value="localhost" override="yes" /></then>
  33. </if>
  34. <if>
  35. <not><isset property="http_path" /></not>
  36. <then><property name="http_path" value="/" override="yes" /></then>
  37. </if>
  38. <if>
  39. <not><isset property="php_self" /></not>
  40. <then><property name="php_self" value="${http_path}install/index.php" override="yes" /></then>
  41. </if>
  42. <if>
  43. <and>
  44. <not><isset property="doc_root" /></not>
  45. <isset property="deploy_path" />
  46. </and>
  47. <then><property name="doc_root" value="${deploy_path}" override="yes" /></then>
  48. </if>
  49. <fileset dir="${project.basedir}" defaultexcludes="true" id="files_dist">
  50. <include name="**/*" />
  51. <exclude name="**/*.swp" />
  52. <exclude name=".github/**" />
  53. <exclude name=".vscode/**" />
  54. <exclude name="ai/**" />
  55. <exclude name="inc/header*" />
  56. <exclude name="AGENTS.md" />
  57. <exclude name="CLAUDE.md" />
  58. <exclude name=".agents/**" />
  59. <exclude name=".claude/**" />
  60. <exclude name="build.xml" />
  61. <exclude name="build.properties" />
  62. <exclude name="bower.json" />
  63. <exclude name="rollup.config.js" />
  64. <exclude name="composer.json" />
  65. <exclude name="composer.lock" />
  66. <exclude name="composer.phar" />
  67. <exclude name="phing.phar" />
  68. <exclude name="CODE_OF_CONDUCT.md" />
  69. <exclude name="SECURITY.md" />
  70. <exclude name="docker-compose.yml" />
  71. <exclude name="package.json" />
  72. <exclude name="package-lock.json" />
  73. <exclude name="yarn.lock" />
  74. <exclude name="tailwind.*" />
  75. <exclude name="tsconfig.*" />
  76. <exclude name="patches/**" />
  77. <exclude name="storage/**/*" />
  78. <exclude name="samples/**" />
  79. <exclude name="scripts/**" />
  80. <exclude name="tools/**" />
  81. <exclude name="src/**" />
  82. <exclude name="tests/**" />
  83. <exclude name="packages/**" />
  84. <exclude name="upgrade/**" />
  85. <exclude name="node_modules/**" />
  86. <exclude name="bower_components/**" />
  87. <exclude name="modules/boonex/*/updates/**" />
  88. <exclude name="neo/**" />
  89. </fileset>
  90. <fileset dir="${project.basedir}" defaultexcludes="true" id="doc_files">
  91. <include name="**/*" />
  92. <exclude name="**/*.swp" />
  93. <exclude name="inc/header*" />
  94. <exclude name="build.xml" />
  95. <exclude name="build.properties" />
  96. <exclude name="storage/**/*" />
  97. <exclude name="samples/**" />
  98. <exclude name="scripts/**" />
  99. <exclude name="tools/**" />
  100. <exclude name="tests/**" />
  101. <exclude name="packages/**" />
  102. <exclude name="upgrade/**" />
  103. <exclude name="cache/**" />
  104. <exclude name="cache_public/**" />
  105. <exclude name="logs/**" />
  106. <exclude name="tmp/**" />
  107. <exclude name="plugins/**" />
  108. <exclude name="plugins_public/**" />
  109. <exclude name="modules/boonex/sites/**" />
  110. <exclude name="modules/boonex/membership_pricing/**" />
  111. <exclude name="modules/boonex/analytics/plugins/**" />
  112. <exclude name="modules/boonex/editor/plugins/**" />
  113. <exclude name="modules/boonex/massmailer/plugins/**" />
  114. <exclude name="modules/boonex/froala/plugins/**" />
  115. <exclude name="modules/boonex/media/plugins/**" />
  116. <exclude name="modules/boonex/plyr/plugins/**" />
  117. <exclude name="modules/boonex/xero/plugins/**" />
  118. <exclude name="modules/boonex/*/updates/**" />
  119. <exclude name="**/updates/**" />
  120. <exclude name="neo/**" />
  121. </fileset>
  122. <!-- ============================================ -->
  123. <!-- Target: prepare -->
  124. <!-- ============================================ -->
  125. <target name="prepare">
  126. <echo msg="Prepage: installing necessary components" />
  127. <exec executable="yarn" dir="${project.basedir}" checkreturn="true" />
  128. <exec executable="${php}" dir="${project.basedir}" checkreturn="true">
  129. <arg line="${composer} install" />
  130. </exec>
  131. </target>
  132. <!-- ============================================ -->
  133. <!-- Target: install -->
  134. <!-- ============================================ -->
  135. <target name="install">
  136. <echo msg="Installing..." />
  137. <if>
  138. <not><isset property="install_base_dir" /></not>
  139. <then><property name="install_base_dir" value="${project.basedir}" /></then>
  140. </if>
  141. <exec executable="${php}" dir="${install_base_dir}/install" checkreturn="true">
  142. <arg line="cmd.php -m ${modules} --db_host=${db_host} --db_name=${db_name} --db_user=${db_user} --db_password=${db_password} --server_http_host=${http_host} --server_php_self=${php_self} --server_doc_root=${doc_root}" />
  143. </exec>
  144. </target>
  145. <!-- ============================================ -->
  146. <!-- (DEFAULT) Target: test -->
  147. <!-- ============================================ -->
  148. <target name="test">
  149. <echo msg="Testing..." />
  150. <exec executable="${php}" dir="${project.basedir}" checkreturn="true">
  151. <arg line="plugins/bin/phpunit -c tests/phpunit.xml" />
  152. </exec>
  153. </target>
  154. <!-- ============================================ -->
  155. <!-- Target: test-units -->
  156. <!-- ============================================ -->
  157. <target name="test-units">
  158. <echo msg="Testing units..." />
  159. <exec executable="${php}" dir="${project.basedir}" checkreturn="true">
  160. <arg line="plugins/bin/phpunit -c tests/phpunit.xml --testsuite Units" />
  161. </exec>
  162. </target>
  163. <!-- ============================================ -->
  164. <!-- Target: test-integration -->
  165. <!-- ============================================ -->
  166. <target name="test-integration">
  167. <echo msg="Testing integration..." />
  168. <exec executable="${php}" dir="${project.basedir}" checkreturn="true">
  169. <arg line="plugins/bin/phpunit -c tests/phpunit.xml --testsuite Integration --log-junit logs/junit-integration.xml" />
  170. </exec>
  171. </target>
  172. <!-- ============================================ -->
  173. <!-- Target: package -->
  174. <!-- ============================================ -->
  175. <target name="package" depends="clean">
  176. <tstamp />
  177. <property name="package_name" value="UNA-${DSTAMP}-${build}" override="yes" />
  178. <property name="package_file" value="${package_name}.zip" />
  179. <echo msg="Packaging ${package_file} file..." />
  180. <mkdir dir="${project.basedir}/packages" />
  181. <delete dir="${project.basedir}/packages/tmp" quiet="true" />
  182. <delete file="${project.basedir}/packages/${package_file}" quiet="true" />
  183. <copy todir="${project.basedir}/packages/tmp/${package_name}">
  184. <fileset refid="files_dist" />
  185. </copy>
  186. <zip destfile="${project.basedir}/packages/${package_file}">
  187. <fileset dir="${project.basedir}/packages/tmp" defaultexcludes="true" />
  188. </zip>
  189. <fail message="Package archive was not created: packages/${package_file}">
  190. <condition>
  191. <not>
  192. <available file="${project.basedir}/packages/${package_file}" />
  193. </not>
  194. </condition>
  195. </fail>
  196. <delete dir="${project.basedir}/packages/tmp" quiet="true" />
  197. </target>
  198. <!-- ============================================ -->
  199. <!-- Target: package_upgrade -->
  200. <!-- ============================================ -->
  201. <target name="package_upgrade">
  202. <tstamp />
  203. <propertyprompt propertyName="version_from" promptText="Enter version to upgrade from" />
  204. <propertyprompt propertyName="version_to" promptText="Enter version to upgrade to" />
  205. <property name="package_name" value="UNA-Patch-v.${version_from}-to-v.${version_to}" override="yes" />
  206. <property name="package_file" value="${package_name}.zip" />
  207. <echo msg="Packaging ${package_file} file..." />
  208. <mkdir dir="${project.basedir}/packages" />
  209. <delete dir="${project.basedir}/packages/tmp" quiet="true" />
  210. <delete file="${project.basedir}/packages/${package_file}" quiet="true" />
  211. <copy todir="${project.basedir}/packages/tmp/${package_name}">
  212. <fileset dir="${project.basedir}/upgrade" defaultexcludes="true">
  213. <include name="classes/**/*" />
  214. <include name="BxDolUpgradeCron.php" />
  215. <include name="files/${version_from}-*/**/*" />
  216. <include name="files/*-${version_to}/**/*" />
  217. </fileset>
  218. </copy>
  219. <zip destfile="${project.basedir}/packages/${package_file}">
  220. <fileset dir="${project.basedir}/packages/tmp" defaultexcludes="true" />
  221. </zip>
  222. <delete dir="${project.basedir}/packages/tmp" quiet="true" />
  223. </target>
  224. <!-- ============================================ -->
  225. <!-- Target: package_all_modules -->
  226. <!-- ============================================ -->
  227. <target name="package_all_modules">
  228. <property name="vendor" value="boonex" override="yes" />
  229. <foreach param="module" target="package_module">
  230. <fileset dir="${project.basedir}/modules/${vendor}">
  231. <include name="*" />
  232. </fileset>
  233. </foreach>
  234. </target>
  235. <!-- ============================================ -->
  236. <!-- Target: package_all_langs -->
  237. <!-- ============================================ -->
  238. <target name="package_all_langs">
  239. <property name="vendor" value="boonex" override="yes" />
  240. <foreach param="module" target="package_lang">
  241. <fileset dir="${project.basedir}/modules/${vendor}">
  242. <include name="*" />
  243. </fileset>
  244. </foreach>
  245. <if>
  246. <available file="${project.basedir}/modules/${vendor}/english/data/langs/system/en.xml" type="file" />
  247. <then>
  248. <mkdir dir="${project.basedir}/packages/en/system" />
  249. <delete dir="${project.basedir}/packages/en/system" quiet="true" />
  250. <echo msg="Copying lang file for system module..." />
  251. <copy todir="${project.basedir}/packages/en/system">
  252. <fileset dir="${project.basedir}/modules/${vendor}/english/data/langs/system" defaultexcludes="true" />
  253. </copy>
  254. </then>
  255. </if>
  256. </target>
  257. <!-- ============================================ -->
  258. <!-- Target: package_module -->
  259. <!-- ============================================ -->
  260. <target name="package_module">
  261. <tstamp />
  262. <property name="vendor" value="boonex" override="yes" />
  263. <property name="module" value="antispam" override="yes" />
  264. <if>
  265. <available file="${project.basedir}/modules/${vendor}/${module}/install/config.php" type="file" />
  266. <then>
  267. <php expression="eval('define(&quot;BX_DOL_MODULE_TYPE_LANGUAGE&quot;, &quot;language&quot;); define(&quot;BX_DOL_MODULE_TYPE_TEMPLATE&quot;, &quot;template&quot;); define(&quot;BX_DOL_MODULE_TYPE_MODULE&quot;, &quot;module&quot;); include(&quot;${project.basedir}/modules/${vendor}/${module}/install/config.php&quot;); return $aConfig[&quot;version&quot;];')" returnProperty="module_version" />
  268. <property name="package_name" value="${module}" />
  269. <property name="package_file" value="${package_name}-v.${module_version}.zip" />
  270. <echo msg="Packaging ${package_file} file..." />
  271. <mkdir dir="${project.basedir}/packages" />
  272. <delete dir="${project.basedir}/packages/tmp" quiet="true" />
  273. <delete file="${project.basedir}/packages/${package_file}" quiet="true" />
  274. <copy todir="${project.basedir}/packages/tmp/${package_name}">
  275. <fileset dir="${project.basedir}/modules/${vendor}/${module}" defaultexcludes="true">
  276. <exclude name="updates/" />
  277. </fileset>
  278. </copy>
  279. <zip destfile="${project.basedir}/packages/${package_file}">
  280. <fileset dir="${project.basedir}/packages/tmp" defaultexcludes="true" />
  281. </zip>
  282. <delete dir="${project.basedir}/packages/tmp" quiet="true" />
  283. </then>
  284. </if>
  285. </target>
  286. <!-- ============================================ -->
  287. <!-- Target: package_lang -->
  288. <!-- ============================================ -->
  289. <target name="package_lang">
  290. <tstamp />
  291. <property name="vendor" value="boonex" override="yes" />
  292. <property name="module" value="antispam" override="yes" />
  293. <if>
  294. <and>
  295. <available file="${project.basedir}/modules/${vendor}/${module}/install/config.php" type="file" />
  296. <not><equals arg1="${module}" arg2="anon_follow" /></not>
  297. <not><equals arg1="${module}" arg2="azure_b2c_con" /></not>
  298. <not><equals arg1="${module}" arg2="azure_connect" /></not>
  299. <not><equals arg1="${module}" arg2="cas_connect" /></not>
  300. <not><equals arg1="${module}" arg2="reviews" /></not>
  301. <not><equals arg1="${module}" arg2="se_migration" /></not>
  302. <not><equals arg1="${module}" arg2="mapshow" /></not>
  303. <not><equals arg1="${module}" arg2="una_mods" /></not>
  304. <not><equals arg1="${module}" arg2="hosting_api" /></not>
  305. <not><equals arg1="${module}" arg2="market_api" /></not>
  306. <not><equals arg1="${module}" arg2="opencv" /></not>
  307. </and>
  308. <then>
  309. <php expression="eval('include(&quot;${project.basedir}/modules/${vendor}/${module}/install/config.php&quot;); return $aConfig[&quot;name&quot;];')" returnProperty="module_name" />
  310. <echo msg="Copying lang file for ${module} module..." />
  311. <mkdir dir="${project.basedir}/packages" />
  312. <mkdir dir="${project.basedir}/packages/en" />
  313. <delete dir="${project.basedir}/packages/en/${module_name}" quiet="true" />
  314. <copy todir="${project.basedir}/packages/en/${module_name}">
  315. <fileset dir="${project.basedir}/modules/${vendor}/${module}/install/langs" defaultexcludes="true">
  316. <exclude name="ru.xml" />
  317. </fileset>
  318. </copy>
  319. </then>
  320. </if>
  321. </target>
  322. <!-- ============================================ -->
  323. <!-- Target: deploy -->
  324. <!-- ============================================ -->
  325. <target name="deploy">
  326. <property name="deploy_path" value="/var/www" override="yes" />
  327. <echo msg="Deploying to '${deploy_path}' folder..." />
  328. <delete failonerror="true">
  329. <fileset dir="${deploy_path}">
  330. <include name="**/*" />
  331. </fileset>
  332. </delete>
  333. <copy todir="${deploy_path}">
  334. <fileset refid="files_dist" />
  335. </copy>
  336. <phingcall target="change_permissions">
  337. <property name="files_path" value="${deploy_path}" />
  338. </phingcall>
  339. <phingcall target="install">
  340. <property name="install_base_dir" value="${deploy_path}" />
  341. </phingcall>
  342. <delete dir="${deploy_path}/install" failonerror="true" />
  343. </target>
  344. <!-- ============================================ -->
  345. <!-- Target: copy files for doc generation -->
  346. <!-- ============================================ -->
  347. <target name="copy_for_doc">
  348. <property name="path" value="/tmp/doc_files" override="yes" />
  349. <echo msg="Copying to '${path}' folder..." />
  350. <delete failonerror="true">
  351. <fileset dir="${path}">
  352. <include name="**/*" />
  353. </fileset>
  354. </delete>
  355. <copy todir="${path}">
  356. <fileset refid="doc_files" />
  357. </copy>
  358. </target>
  359. <!-- ============================================ -->
  360. <!-- Target: change permissions -->
  361. <!-- ============================================ -->
  362. <target name="change_permissions">
  363. <property name="files_path" value="${project.basedir}" override="yes" />
  364. <echo msg="Change permissions in '${files_path}' folder..." />
  365. <chmod file="${files_path}/cache" mode="0777" />
  366. <chmod file="${files_path}/cache_public" mode="0777" />
  367. <chmod file="${files_path}/logs" mode="0777" />
  368. <chmod file="${files_path}/tmp" mode="0777" />
  369. <chmod file="${files_path}/storage" mode="0777" />
  370. <chmod file="${files_path}/plugins/ffmpeg/ffmpeg.exe" mode="0755" />
  371. </target>
  372. <!-- ============================================ -->
  373. <!-- Target: clean -->
  374. <!-- ============================================ -->
  375. <target name="clean">
  376. <echo msg="Cleaning..." />
  377. <delete dir="${project.basedir}/tests/vendor" quiet="true" />
  378. <delete includeemptydirs="true">
  379. <fileset dir="${project.basedir}/cache">
  380. <include name="**/*" />
  381. <exclude name=".htaccess" />
  382. </fileset>
  383. </delete>
  384. <delete includeemptydirs="true">
  385. <fileset dir="${project.basedir}/cache_public">
  386. <include name="**/*" />
  387. <exclude name=".htaccess" />
  388. </fileset>
  389. </delete>
  390. <delete includeemptydirs="true">
  391. <fileset dir="${project.basedir}/logs">
  392. <include name="**/*" />
  393. <exclude name=".htaccess" />
  394. <exclude name="clover.xml" />
  395. <exclude name="phpcdp.xml" />
  396. <exclude name="phpcpd.xml" />
  397. <exclude name="junit.xml" />
  398. <exclude name="junit-units.xml" />
  399. <exclude name="junit-integration.xml" />
  400. </fileset>
  401. </delete>
  402. <delete includeemptydirs="true">
  403. <fileset dir="${project.basedir}/tmp">
  404. <include name="**/*" />
  405. <exclude name=".htaccess" />
  406. </fileset>
  407. </delete>
  408. </target>
  409. <target name="clean_install" depends="clean">
  410. <echo msg="Install cleaning..." />
  411. <delete file="${project.basedir}/inc/header.inc.php" quiet="true" />
  412. </target>
  413. </project>