|
| 1 | +<?xml version="1.0" encoding="UTF-8"?> |
| 2 | +<project name="Handle p2 composite metadata from Bintray" basedir="."> |
| 3 | + |
| 4 | + <!-- |
| 5 | + These must be set from outside |
| 6 | + <property name="bintray.user" value="" /> |
| 7 | + <property name="bintray.apikey" value="" /> |
| 8 | + <property name="bintray.repo" value="" /> |
| 9 | + <property name="bintray.package" value="" /> |
| 10 | + <property name="bintray.releases.path" value="" /> |
| 11 | + <property name="bintray.composite.path" value="" /> |
| 12 | + <property name="bintray.zip.path" value="" /> |
| 13 | + --> |
| 14 | + |
| 15 | + <property name="bintray.url" value="https://dl.bintray.com/${bintray.owner}/${bintray.repo}" /> |
| 16 | + <property name="bintray.package.version" value="${unqualifiedVersion}.${buildQualifier}" /> |
| 17 | + <property name="bintray.releases.target.path" value="${bintray.releases.path}/${bintray.package.version}" /> |
| 18 | + |
| 19 | + <property name="main.composite.url" value="${bintray.url}/${bintray.composite.path}" /> |
| 20 | + <property name="target" value="target" /> |
| 21 | + <property name="composite.repository.directory" value="composite-child" /> |
| 22 | + <property name="main.composite.repository.directory" value="composite-main" /> |
| 23 | + |
| 24 | + <property name="compositeArtifacts" value="compositeArtifacts.xml" /> |
| 25 | + <property name="compositeContent" value="compositeContent.xml" /> |
| 26 | + |
| 27 | + <property name="local.p2.repository" value="target/repository" /> |
| 28 | + |
| 29 | + <target name="getMajorMinorVersion"> |
| 30 | + <script language="javascript"> |
| 31 | + <![CDATA[ |
| 32 | +
|
| 33 | + // getting the value |
| 34 | + buildnumber = project.getProperty("unqualifiedVersion"); |
| 35 | + index = buildnumber.lastIndexOf("."); |
| 36 | + counter = buildnumber.substring(0, index); |
| 37 | + project.setProperty("majorMinorVersion",counter); |
| 38 | +
|
| 39 | + ]]> |
| 40 | + </script> |
| 41 | + </target> |
| 42 | + |
| 43 | + <!-- Take from the remote URL the possible existing metadata --> |
| 44 | + <target name="get-composite-metadata" depends="getMajorMinorVersion" > |
| 45 | + <get-metadata url="${main.composite.url}" dest="${target}/${main.composite.repository.directory}" /> |
| 46 | + <get-metadata url="${main.composite.url}/${majorMinorVersion}" dest="${target}/${composite.repository.directory}" /> |
| 47 | + <antcall target="preprocess-metadata" /> |
| 48 | + </target> |
| 49 | + |
| 50 | + <macrodef name="get-metadata" description="Retrieve the p2 composite metadata"> |
| 51 | + <attribute name="url" /> |
| 52 | + <attribute name="dest" /> |
| 53 | + <sequential> |
| 54 | + <echo message="Creating directory @{dest}..." /> |
| 55 | + <mkdir dir="@{dest}" /> |
| 56 | + <get-file file="${compositeArtifacts}" url="@{url}" dest="@{dest}" /> |
| 57 | + <get-file file="${compositeContent}" url="@{url}" dest="@{dest}" /> |
| 58 | + </sequential> |
| 59 | + </macrodef> |
| 60 | + |
| 61 | + <macrodef name="get-file" description="Use Ant Get task the file"> |
| 62 | + <attribute name="file" /> |
| 63 | + <attribute name="url" /> |
| 64 | + <attribute name="dest" /> |
| 65 | + <sequential> |
| 66 | + <!-- If the remote file does not exist then fail gracefully --> |
| 67 | + <echo message="Getting @{file} from @{url} into @{dest}..." /> |
| 68 | + <get dest="@{dest}" ignoreerrors="true"> |
| 69 | + <url url="@{url}/@{file}" /> |
| 70 | + </get> |
| 71 | + </sequential> |
| 72 | + </macrodef> |
| 73 | + |
| 74 | + <!-- p2.atomic.composite.loading must be set to false otherwise we won't be able |
| 75 | + to add a child to the composite repository without having all the children available --> |
| 76 | + <target name="preprocess-metadata" description="Preprocess p2 composite metadata"> |
| 77 | + <replaceregexp byline="true"> |
| 78 | + <regexp pattern="property name='p2.atomic.composite.loading' value='true'" /> |
| 79 | + <substitution expression="property name='p2.atomic.composite.loading' value='false'" /> |
| 80 | + <fileset dir="${target}"> |
| 81 | + <include name="${composite.repository.directory}/*.xml" /> |
| 82 | + <include name="${main.composite.repository.directory}/*.xml" /> |
| 83 | + </fileset> |
| 84 | + </replaceregexp> |
| 85 | + </target> |
| 86 | + |
| 87 | + <!-- p2.atomic.composite.loading must be set to true |
| 88 | + see https://bugs.eclipse.org/bugs/show_bug.cgi?id=356561 --> |
| 89 | + <target name="postprocess-metadata" description="Preprocess p2 composite metadata"> |
| 90 | + <replaceregexp byline="true"> |
| 91 | + <regexp pattern="property name='p2.atomic.composite.loading' value='false'" /> |
| 92 | + <substitution expression="property name='p2.atomic.composite.loading' value='true'" /> |
| 93 | + <fileset dir="${target}"> |
| 94 | + <include name="${composite.repository.directory}/*.xml" /> |
| 95 | + <include name="${main.composite.repository.directory}/*.xml" /> |
| 96 | + </fileset> |
| 97 | + </replaceregexp> |
| 98 | + </target> |
| 99 | + |
| 100 | + <target name="push-to-bintray" > |
| 101 | + <antcall target="postprocess-metadata" /> |
| 102 | + <antcall target="push-p2-repo-to-bintray" /> |
| 103 | + <antcall target="push-p2-repo-zipped-to-bintray" /> |
| 104 | + <antcall target="push-composite-to-bintray" /> |
| 105 | + <antcall target="push-main-composite-to-bintray" /> |
| 106 | + </target> |
| 107 | + |
| 108 | + <target name="push-p2-repo-to-bintray"> |
| 109 | + <apply executable="curl" parallel="false" relative="true" addsourcefile="false"> |
| 110 | + <arg value="-XPUT" /> |
| 111 | + <targetfile /> |
| 112 | + |
| 113 | + <fileset dir="${local.p2.repository}" /> |
| 114 | + |
| 115 | + <compositemapper> |
| 116 | + <mergemapper to="-T" /> |
| 117 | + <globmapper from="*" to="${local.p2.repository}/*" /> |
| 118 | + <mergemapper to="-u${bintray.user}:${bintray.apikey}" /> |
| 119 | + <globmapper from="*" to="https://api.bintray.com/content/${bintray.owner}/${bintray.repo}/${bintray.releases.target.path}/*;bt_package=${bintray.package};bt_version=${bintray.package.version};publish=1" /> |
| 120 | + </compositemapper> |
| 121 | + </apply> |
| 122 | + </target> |
| 123 | + |
| 124 | + <target name="push-p2-repo-zipped-to-bintray"> |
| 125 | + <apply executable="curl" parallel="false" relative="true" addsourcefile="false"> |
| 126 | + <arg value="-XPUT" /> |
| 127 | + <targetfile /> |
| 128 | + |
| 129 | + <fileset dir="${target}" includes="*.zip" /> |
| 130 | + |
| 131 | + <compositemapper> |
| 132 | + <mergemapper to="-T" /> |
| 133 | + <globmapper from="*" to="${target}/*" /> |
| 134 | + <mergemapper to="-u${bintray.user}:${bintray.apikey}" /> |
| 135 | + <globmapper from="*" to="https://api.bintray.com/content/${bintray.owner}/${bintray.repo}/${bintray.zip.path}/*;bt_package=${bintray.package};bt_version=${bintray.package.version};publish=1" /> |
| 136 | + </compositemapper> |
| 137 | + </apply> |
| 138 | + </target> |
| 139 | + |
| 140 | + <target name="push-composite-to-bintray" depends="getMajorMinorVersion" > |
| 141 | + <apply executable="curl" parallel="false" relative="true" addsourcefile="false"> |
| 142 | + <arg value="-XPUT" /> |
| 143 | + <targetfile /> |
| 144 | + |
| 145 | + <fileset dir="${target}/${composite.repository.directory}" /> |
| 146 | + |
| 147 | + <compositemapper> |
| 148 | + <mergemapper to="-T" /> |
| 149 | + <globmapper from="*" to="${target}/${composite.repository.directory}/*" /> |
| 150 | + <mergemapper to="-u${bintray.user}:${bintray.apikey}" /> |
| 151 | + <globmapper from="*" to="https://api.bintray.com/content/${bintray.owner}/${bintray.repo}/${bintray.composite.path}/${majorMinorVersion}/*;publish=1" /> |
| 152 | + </compositemapper> |
| 153 | + </apply> |
| 154 | + </target> |
| 155 | + |
| 156 | + <target name="push-main-composite-to-bintray" > |
| 157 | + <apply executable="curl" parallel="false" relative="true" addsourcefile="false"> |
| 158 | + <arg value="-XPUT" /> |
| 159 | + <targetfile /> |
| 160 | + |
| 161 | + <fileset dir="${target}/${main.composite.repository.directory}" /> |
| 162 | + |
| 163 | + <compositemapper> |
| 164 | + <mergemapper to="-T" /> |
| 165 | + <globmapper from="*" to="${target}/${main.composite.repository.directory}/*" /> |
| 166 | + <mergemapper to="-u${bintray.user}:${bintray.apikey}" /> |
| 167 | + <globmapper from="*" to="https://api.bintray.com/content/${bintray.owner}/${bintray.repo}/${bintray.composite.path}/*;publish=1" /> |
| 168 | + </compositemapper> |
| 169 | + </apply> |
| 170 | + </target> |
| 171 | + |
| 172 | +</project> |
0 commit comments