1*6774467aSAndroid Build Coastguard Workerset -e 2*6774467aSAndroid Build Coastguard Worker 3*6774467aSAndroid Build Coastguard Worker 4*6774467aSAndroid Build Coastguard WorkerdestRepo="$(cd $(dirname $0)/../.. && pwd)" 5*6774467aSAndroid Build Coastguard WorkertempDir="/tmp/import-temp-work" 6*6774467aSAndroid Build Coastguard Workerrm -rf $tempDir 7*6774467aSAndroid Build Coastguard Workermkdir -p $tempDir 8*6774467aSAndroid Build Coastguard Workercd $tempDir 9*6774467aSAndroid Build Coastguard Worker 10*6774467aSAndroid Build Coastguard Workerfunction usage() { 11*6774467aSAndroid Build Coastguard Worker echo "Usage: $0 group:artifact:version[:classifier][@extension] [group:artifact:version[:classifier][@extension]...] 12*6774467aSAndroid Build Coastguard Worker 13*6774467aSAndroid Build Coastguard WorkerThis script downloads the specified artifacts copies them into the appropriate subdirectory of $destRepo/prebuilts/" 14*6774467aSAndroid Build Coastguard Worker exit 1 15*6774467aSAndroid Build Coastguard Worker} 16*6774467aSAndroid Build Coastguard Worker 17*6774467aSAndroid Build Coastguard Worker 18*6774467aSAndroid Build Coastguard Worker 19*6774467aSAndroid Build Coastguard Worker 20*6774467aSAndroid Build Coastguard WorkerinputRepo=m2repository 21*6774467aSAndroid Build Coastguard WorkerstageRepo=m2staged 22*6774467aSAndroid Build Coastguard WorkerdestAndroidRepo=$destRepo/prebuilts/gradle-plugin 23*6774467aSAndroid Build Coastguard WorkerdestThirdPartyRepo=$destRepo/prebuilts/tools/common/m2/repository 24*6774467aSAndroid Build Coastguard Worker 25*6774467aSAndroid Build Coastguard Worker 26*6774467aSAndroid Build Coastguard Worker# usage: downloadArtifacts "$group:$artifact:$version[:classifier][@extension]..." 27*6774467aSAndroid Build Coastguard Workerfunction downloadArtifacts() { 28*6774467aSAndroid Build Coastguard Worker if [ "$1" == "" ]; then 29*6774467aSAndroid Build Coastguard Worker usage 30*6774467aSAndroid Build Coastguard Worker fi 31*6774467aSAndroid Build Coastguard Worker echo downloading dependencies into $inputRepo 32*6774467aSAndroid Build Coastguard Worker rm -rf $inputRepo 33*6774467aSAndroid Build Coastguard Worker while [ "$1" != "" ]; do 34*6774467aSAndroid Build Coastguard Worker echo importing $1 35*6774467aSAndroid Build Coastguard Worker IFS=@ read -r dependency extension <<< "$1" 36*6774467aSAndroid Build Coastguard Worker IFS=: read -ra FIELDS <<< "${dependency}" 37*6774467aSAndroid Build Coastguard Worker groupId="${FIELDS[0]}" 38*6774467aSAndroid Build Coastguard Worker artifactId="${FIELDS[1]}" 39*6774467aSAndroid Build Coastguard Worker version="${FIELDS[2]}" 40*6774467aSAndroid Build Coastguard Worker classifier="${FIELDS[3]}" 41*6774467aSAndroid Build Coastguard Worker 42*6774467aSAndroid Build Coastguard Worker # download the actual artifact 43*6774467aSAndroid Build Coastguard Worker downloadArtifact "$groupId" "$artifactId" "$version" "$classifier" "$extension" 44*6774467aSAndroid Build Coastguard Worker 45*6774467aSAndroid Build Coastguard Worker # try to download the sources jar 46*6774467aSAndroid Build Coastguard Worker downloadArtifact "$groupId" "$artifactId" "$version" "sources" "jar" || true 47*6774467aSAndroid Build Coastguard Worker 48*6774467aSAndroid Build Coastguard Worker # go to next artifact 49*6774467aSAndroid Build Coastguard Worker shift 50*6774467aSAndroid Build Coastguard Worker done 51*6774467aSAndroid Build Coastguard Worker echo done downloading dependencies 52*6774467aSAndroid Build Coastguard Worker} 53*6774467aSAndroid Build Coastguard Worker 54*6774467aSAndroid Build Coastguard Worker# usage: downloadArtifact "$group" "$artifact" "$version" "$classifier" "$extension" 55*6774467aSAndroid Build Coastguard Workerfunction downloadArtifact() { 56*6774467aSAndroid Build Coastguard Worker pomPath="$PWD/pom.xml" 57*6774467aSAndroid Build Coastguard Worker echo creating $pomPath 58*6774467aSAndroid Build Coastguard Worker pomPrefix='<?xml version="1.0" encoding="UTF-8"?> 59*6774467aSAndroid Build Coastguard Worker<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 60*6774467aSAndroid Build Coastguard Worker <modelVersion>4.0.0</modelVersion> 61*6774467aSAndroid Build Coastguard Worker <groupId>com.google.android.build</groupId> 62*6774467aSAndroid Build Coastguard Worker <artifactId>m2repository</artifactId> 63*6774467aSAndroid Build Coastguard Worker <version>1.0</version> 64*6774467aSAndroid Build Coastguard Worker <repositories> 65*6774467aSAndroid Build Coastguard Worker <repository> 66*6774467aSAndroid Build Coastguard Worker <id>google</id> 67*6774467aSAndroid Build Coastguard Worker <name>Google</name> 68*6774467aSAndroid Build Coastguard Worker <url>https://maven.google.com</url> 69*6774467aSAndroid Build Coastguard Worker </repository> 70*6774467aSAndroid Build Coastguard Worker <repository> 71*6774467aSAndroid Build Coastguard Worker <id>jcenter</id> 72*6774467aSAndroid Build Coastguard Worker <name>JCenter</name> 73*6774467aSAndroid Build Coastguard Worker <url>https://jcenter.bintray.com</url> 74*6774467aSAndroid Build Coastguard Worker </repository> 75*6774467aSAndroid Build Coastguard Worker </repositories> 76*6774467aSAndroid Build Coastguard Worker <dependencies> 77*6774467aSAndroid Build Coastguard Worker' 78*6774467aSAndroid Build Coastguard Worker 79*6774467aSAndroid Build Coastguard Worker pomSuffix=' 80*6774467aSAndroid Build Coastguard Worker </dependencies> 81*6774467aSAndroid Build Coastguard Worker <build> 82*6774467aSAndroid Build Coastguard Worker <plugins> 83*6774467aSAndroid Build Coastguard Worker <plugin> 84*6774467aSAndroid Build Coastguard Worker <groupId>org.apache.maven.plugins</groupId> 85*6774467aSAndroid Build Coastguard Worker <artifactId>maven-dependency-plugin</artifactId> 86*6774467aSAndroid Build Coastguard Worker <version>2.8</version> 87*6774467aSAndroid Build Coastguard Worker <executions> 88*6774467aSAndroid Build Coastguard Worker <execution> 89*6774467aSAndroid Build Coastguard Worker <id>default-cli</id> 90*6774467aSAndroid Build Coastguard Worker <configuration> 91*6774467aSAndroid Build Coastguard Worker <includeScope>runtime</includeScope> 92*6774467aSAndroid Build Coastguard Worker <addParentPoms>true</addParentPoms> 93*6774467aSAndroid Build Coastguard Worker <copyPom>true</copyPom> 94*6774467aSAndroid Build Coastguard Worker <useRepositoryLayout>true</useRepositoryLayout> 95*6774467aSAndroid Build Coastguard Worker <outputDirectory>m2repository</outputDirectory> 96*6774467aSAndroid Build Coastguard Worker </configuration> 97*6774467aSAndroid Build Coastguard Worker </execution> 98*6774467aSAndroid Build Coastguard Worker </executions> 99*6774467aSAndroid Build Coastguard Worker </plugin> 100*6774467aSAndroid Build Coastguard Worker </plugins> 101*6774467aSAndroid Build Coastguard Worker </build> 102*6774467aSAndroid Build Coastguard Worker</project> 103*6774467aSAndroid Build Coastguard Worker' 104*6774467aSAndroid Build Coastguard Worker 105*6774467aSAndroid Build Coastguard Worker 106*6774467aSAndroid Build Coastguard Worker groupId="$1" 107*6774467aSAndroid Build Coastguard Worker artifactId="$2" 108*6774467aSAndroid Build Coastguard Worker version="$3" 109*6774467aSAndroid Build Coastguard Worker classifier="$4" 110*6774467aSAndroid Build Coastguard Worker extension="$5" 111*6774467aSAndroid Build Coastguard Worker pomDependencies="" 112*6774467aSAndroid Build Coastguard Worker 113*6774467aSAndroid Build Coastguard Worker 114*6774467aSAndroid Build Coastguard Worker dependencyText=$(echo -e "\n <dependency>\n <groupId>${groupId}</groupId>\n <artifactId>${artifactId}</artifactId>\n <version>${version}</version>") 115*6774467aSAndroid Build Coastguard Worker [ $classifier ] && dependencyText+=$(echo -e "\n <classifier>${classifier}</classifier>") 116*6774467aSAndroid Build Coastguard Worker [ $extension ] && dependencyText+=$(echo -e "\n <type>${extension}</type>") 117*6774467aSAndroid Build Coastguard Worker dependencyText+=$(echo -e "\n </dependency>") 118*6774467aSAndroid Build Coastguard Worker 119*6774467aSAndroid Build Coastguard Worker 120*6774467aSAndroid Build Coastguard Worker pomDependencies="${pomDependencies}${dependencyText}" 121*6774467aSAndroid Build Coastguard Worker 122*6774467aSAndroid Build Coastguard Worker echo "${pomPrefix}${pomDependencies}${pomSuffix}" > $pomPath 123*6774467aSAndroid Build Coastguard Worker echo done creating $pomPath 124*6774467aSAndroid Build Coastguard Worker 125*6774467aSAndroid Build Coastguard Worker echo downloading one dependency into $inputRepo 126*6774467aSAndroid Build Coastguard Worker mvn -f "$pomPath" dependency:copy-dependencies 127*6774467aSAndroid Build Coastguard Worker echo done downloading one dependency into $inputRepo 128*6774467aSAndroid Build Coastguard Worker} 129*6774467aSAndroid Build Coastguard Worker 130*6774467aSAndroid Build Coastguard Worker# generates an appropriately formatted repository for merging into existing repositories, 131*6774467aSAndroid Build Coastguard Worker# by computing artifact metadata 132*6774467aSAndroid Build Coastguard Workerfunction stageRepo() { 133*6774467aSAndroid Build Coastguard Worker echo staging to $stageRepo 134*6774467aSAndroid Build Coastguard Worker rm -rf $stageRepo 135*6774467aSAndroid Build Coastguard Worker 136*6774467aSAndroid Build Coastguard Worker for f in $(find $inputRepo -type f | grep -v '\.sha1$' | grep -v '\.md5'); do 137*6774467aSAndroid Build Coastguard Worker md5=$(md5sum $f | sed 's/ .*//') 138*6774467aSAndroid Build Coastguard Worker sha1=$(sha1sum $f | sed 's/ .*//') 139*6774467aSAndroid Build Coastguard Worker relPath=$(echo $f | sed "s|$inputRepo/||") 140*6774467aSAndroid Build Coastguard Worker relDir=$(dirname $relPath) 141*6774467aSAndroid Build Coastguard Worker 142*6774467aSAndroid Build Coastguard Worker fileName=$(basename $relPath) 143*6774467aSAndroid Build Coastguard Worker writeChecksums="true" 144*6774467aSAndroid Build Coastguard Worker 145*6774467aSAndroid Build Coastguard Worker destDir="$stageRepo/$relDir" 146*6774467aSAndroid Build Coastguard Worker destFile="$stageRepo/$relPath" 147*6774467aSAndroid Build Coastguard Worker if [ "$fileName" == "maven-metadata-local.xml" ]; then 148*6774467aSAndroid Build Coastguard Worker writeChecksums="false" 149*6774467aSAndroid Build Coastguard Worker destFile="$destDir/maven-metadata.xml" 150*6774467aSAndroid Build Coastguard Worker fi 151*6774467aSAndroid Build Coastguard Worker 152*6774467aSAndroid Build Coastguard Worker mkdir -p $destDir 153*6774467aSAndroid Build Coastguard Worker if [ "$writeChecksums" == "true" ]; then 154*6774467aSAndroid Build Coastguard Worker echo -n $md5 > "${destFile}.md5" 155*6774467aSAndroid Build Coastguard Worker echo -n $sha1 > "${destFile}.sha1" 156*6774467aSAndroid Build Coastguard Worker fi 157*6774467aSAndroid Build Coastguard Worker cp $f $destFile 158*6774467aSAndroid Build Coastguard Worker done 159*6774467aSAndroid Build Coastguard Worker 160*6774467aSAndroid Build Coastguard Worker echo done staging to $stageRepo 161*6774467aSAndroid Build Coastguard Worker} 162*6774467aSAndroid Build Coastguard Worker 163*6774467aSAndroid Build Coastguard Workerfunction announceCopy() { 164*6774467aSAndroid Build Coastguard Worker input=$1 165*6774467aSAndroid Build Coastguard Worker output=$2 166*6774467aSAndroid Build Coastguard Worker if stat $input > /dev/null 2>/dev/null; then 167*6774467aSAndroid Build Coastguard Worker echo copying "$input" to "$output" 168*6774467aSAndroid Build Coastguard Worker cp -rT $input $output 169*6774467aSAndroid Build Coastguard Worker fi 170*6774467aSAndroid Build Coastguard Worker} 171*6774467aSAndroid Build Coastguard Worker 172*6774467aSAndroid Build Coastguard Workerfunction exportArtifact() { 173*6774467aSAndroid Build Coastguard Worker echo exporting 174*6774467aSAndroid Build Coastguard Worker announceCopy $stageRepo/com/android $destAndroidRepo/com/android 175*6774467aSAndroid Build Coastguard Worker rm -rf $stageRepo/com/android 176*6774467aSAndroid Build Coastguard Worker 177*6774467aSAndroid Build Coastguard Worker announceCopy $stageRepo/androidx $destAndroidRepo/androidx 178*6774467aSAndroid Build Coastguard Worker rm -rf $stageRepo/androidx 179*6774467aSAndroid Build Coastguard Worker 180*6774467aSAndroid Build Coastguard Worker announceCopy $stageRepo $destThirdPartyRepo 181*6774467aSAndroid Build Coastguard Worker echo done exporting 182*6774467aSAndroid Build Coastguard Worker} 183*6774467aSAndroid Build Coastguard Worker 184*6774467aSAndroid Build Coastguard Worker 185*6774467aSAndroid Build Coastguard Workerfunction main() { 186*6774467aSAndroid Build Coastguard Worker downloadArtifacts "$@" 187*6774467aSAndroid Build Coastguard Worker stageRepo 188*6774467aSAndroid Build Coastguard Worker exportArtifact 189*6774467aSAndroid Build Coastguard Worker} 190*6774467aSAndroid Build Coastguard Worker 191*6774467aSAndroid Build Coastguard Workermain "$@" 192