blob: 99c9fe795515392a0d8ddfe96fbc9feb495a4fee [file] [log] [blame]
Jeff Gaston20c9bbc2018-03-07 15:25:43 -05001set -e
2
3
4destRepo="$(cd $(dirname $0)/../.. && pwd)"
5tempDir="/tmp/import-temp-work"
6rm -rf $tempDir
7mkdir -p $tempDir
8cd $tempDir
9
10function usage() {
Jeff Gastonde3dc2c2018-03-26 17:39:55 -040011 echo "Usage: $0 group:artifact:version [group:artifact:version...]
Jeff Gaston20c9bbc2018-03-07 15:25:43 -050012
13This script downloads the specified artifacts copies them into the appropriate subdirectory of $destRepo/prebuilts/"
14 exit 1
15}
16
17
18
19
20inputRepo=m2repository
21stageRepo=m2staged
22destAndroidRepo=$destRepo/prebuilts/gradle-plugin
23destThirdPartyRepo=$destRepo/prebuilts/tools/common/m2/repository
24
25function createPom() {
26 pomPath="$PWD/pom.xml"
27 echo creating $pomPath
28 pomPrefix='<?xml version="1.0" encoding="UTF-8"?>
29<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">
30 <modelVersion>4.0.0</modelVersion>
31 <groupId>com.google.android.build</groupId>
32 <artifactId>m2repository</artifactId>
33 <version>1.0</version>
Aurimas Liutikas82a739e2018-04-03 10:39:30 -070034 <repositories>
35 <repository>
36 <id>google</id>
37 <name>Google</name>
38 <url>https://maven.google.com</url>
39 </repository>
40 </repositories>
Jeff Gaston20c9bbc2018-03-07 15:25:43 -050041 <dependencies>
42'
43
44 pomSuffix='
45 </dependencies>
46 <build>
47 <plugins>
48 <plugin>
49 <groupId>org.apache.maven.plugins</groupId>
50 <artifactId>maven-dependency-plugin</artifactId>
51 <version>2.8</version>
52 <executions>
53 <execution>
54 <id>default-cli</id>
55 <configuration>
56 <includeScope>runtime</includeScope>
57 <addParentPoms>true</addParentPoms>
58 <copyPom>true</copyPom>
59 <useRepositoryLayout>true</useRepositoryLayout>
60 <outputDirectory>m2repository</outputDirectory>
61 </configuration>
62 </execution>
63 </executions>
64 </plugin>
65 </plugins>
66 </build>
67</project>
68'
69
70 pomDependencies=""
71
72 while [ "$1" != "" ]; do
73 echo importing $1
74 dependencyText="$(echo $1 | sed 's|\([^:]*\):\([^:]*\):\([^:]*\)|\n <dependency>\n <groupId>\1</groupId>\n <artifactId>\2</artifactId>\n <version>\3</version>\n </dependency>|')"
75 pomDependencies="${pomDependencies}${dependencyText}"
76 shift
77 done
78
79 if [ "${pomDependencies}" == "" ]; then
80 usage
81 fi
82
83 echo "${pomPrefix}${pomDependencies}${pomSuffix}" > $pomPath
84 echo done creating $pomPath
85}
86
87
88function downloadDependencies() {
89 echo downloading and/or copying dependencies to $inputRepo
90 rm -rf $inputRepo
91 mvn dependency:copy-dependencies
92 #mvn dependency:copy-dependencies -Dclassifier=javadoc
93 mvn dependency:copy-dependencies -Dclassifier=sources
94 echo done placing dependencies in $inputRepo
95}
96
97# generates an appropriately formatted repository for merging into existing repositories,
98# by computing artifact metadata
99function stageRepo() {
100 echo staging to $stageRepo
101 rm -rf $stageRepo
102
103 for f in $(find $inputRepo -type f | grep -v '\.sha1$' | grep -v '\.md5'); do
104 md5=$(md5sum $f | sed 's/ .*//')
105 sha1=$(sha1sum $f | sed 's/ .*//')
106 relPath=$(echo $f | sed "s|$inputRepo/||")
107 relDir=$(dirname $relPath)
108
109 fileName=$(basename $relPath)
110 writeChecksums="true"
111
112 destDir="$stageRepo/$relDir"
113 destFile="$stageRepo/$relPath"
114 if [ "$fileName" == "maven-metadata-local.xml" ]; then
115 writeChecksums="false"
116 destFile="$destDir/maven-metadata.xml"
117 fi
118
119 mkdir -p $destDir
120 if [ "$writeChecksums" == "true" ]; then
121 echo -n $md5 > "${destFile}.md5"
122 echo -n $sha1 > "${destFile}.sha1"
123 fi
124 cp $f $destFile
125 done
126
127 echo done staging to $stageRepo
128}
129
130function announceCopy() {
131 input=$1
132 output=$2
Jeff Gaston8d9231c2018-03-26 19:53:27 -0400133 if stat $input > /dev/null 2>/dev/null; then
134 echo copying "$input" to "$output"
135 cp -rT $input $output
136 fi
Jeff Gaston20c9bbc2018-03-07 15:25:43 -0500137}
138
139function export() {
140 echo exporting
141 announceCopy $stageRepo/com/android $destAndroidRepo/com/android
142 rm -rf $stageRepo/com/android
143 announceCopy $stageRepo $destThirdPartyRepo
144 echo done exporting
145}
146
147
148function main() {
149 createPom "$@"
150 downloadDependencies
151 stageRepo
152 export
153}
154
155main "$@"