192 lines
5.4 KiB
Bash
Executable File
192 lines
5.4 KiB
Bash
Executable File
set -e
|
|
|
|
|
|
destRepo="$(cd $(dirname $0)/../.. && pwd)"
|
|
tempDir="/tmp/import-temp-work"
|
|
rm -rf $tempDir
|
|
mkdir -p $tempDir
|
|
cd $tempDir
|
|
|
|
function usage() {
|
|
echo "Usage: $0 group:artifact:version[:classifier][@extension] [group:artifact:version[:classifier][@extension]...]
|
|
|
|
This script downloads the specified artifacts copies them into the appropriate subdirectory of $destRepo/prebuilts/"
|
|
exit 1
|
|
}
|
|
|
|
|
|
|
|
|
|
inputRepo=m2repository
|
|
stageRepo=m2staged
|
|
destAndroidRepo=$destRepo/prebuilts/gradle-plugin
|
|
destThirdPartyRepo=$destRepo/prebuilts/tools/common/m2/repository
|
|
|
|
|
|
# usage: downloadArtifacts "$group:$artifact:$version[:classifier][@extension]..."
|
|
function downloadArtifacts() {
|
|
if [ "$1" == "" ]; then
|
|
usage
|
|
fi
|
|
echo downloading dependencies into $inputRepo
|
|
rm -rf $inputRepo
|
|
while [ "$1" != "" ]; do
|
|
echo importing $1
|
|
IFS=@ read -r dependency extension <<< "$1"
|
|
IFS=: read -ra FIELDS <<< "${dependency}"
|
|
groupId="${FIELDS[0]}"
|
|
artifactId="${FIELDS[1]}"
|
|
version="${FIELDS[2]}"
|
|
classifier="${FIELDS[3]}"
|
|
|
|
# download the actual artifact
|
|
downloadArtifact "$groupId" "$artifactId" "$version" "$classifier" "$extension"
|
|
|
|
# try to download the sources jar
|
|
downloadArtifact "$groupId" "$artifactId" "$version" "sources" "jar" || true
|
|
|
|
# go to next artifact
|
|
shift
|
|
done
|
|
echo done downloading dependencies
|
|
}
|
|
|
|
# usage: downloadArtifact "$group" "$artifact" "$version" "$classifier" "$extension"
|
|
function downloadArtifact() {
|
|
pomPath="$PWD/pom.xml"
|
|
echo creating $pomPath
|
|
pomPrefix='<?xml version="1.0" encoding="UTF-8"?>
|
|
<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">
|
|
<modelVersion>4.0.0</modelVersion>
|
|
<groupId>com.google.android.build</groupId>
|
|
<artifactId>m2repository</artifactId>
|
|
<version>1.0</version>
|
|
<repositories>
|
|
<repository>
|
|
<id>google</id>
|
|
<name>Google</name>
|
|
<url>https://maven.google.com</url>
|
|
</repository>
|
|
<repository>
|
|
<id>jcenter</id>
|
|
<name>JCenter</name>
|
|
<url>https://jcenter.bintray.com</url>
|
|
</repository>
|
|
</repositories>
|
|
<dependencies>
|
|
'
|
|
|
|
pomSuffix='
|
|
</dependencies>
|
|
<build>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-dependency-plugin</artifactId>
|
|
<version>2.8</version>
|
|
<executions>
|
|
<execution>
|
|
<id>default-cli</id>
|
|
<configuration>
|
|
<includeScope>runtime</includeScope>
|
|
<addParentPoms>true</addParentPoms>
|
|
<copyPom>true</copyPom>
|
|
<useRepositoryLayout>true</useRepositoryLayout>
|
|
<outputDirectory>m2repository</outputDirectory>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</project>
|
|
'
|
|
|
|
|
|
groupId="$1"
|
|
artifactId="$2"
|
|
version="$3"
|
|
classifier="$4"
|
|
extension="$5"
|
|
pomDependencies=""
|
|
|
|
|
|
dependencyText=$(echo -e "\n <dependency>\n <groupId>${groupId}</groupId>\n <artifactId>${artifactId}</artifactId>\n <version>${version}</version>")
|
|
[ $classifier ] && dependencyText+=$(echo -e "\n <classifier>${classifier}</classifier>")
|
|
[ $extension ] && dependencyText+=$(echo -e "\n <type>${extension}</type>")
|
|
dependencyText+=$(echo -e "\n </dependency>")
|
|
|
|
|
|
pomDependencies="${pomDependencies}${dependencyText}"
|
|
|
|
echo "${pomPrefix}${pomDependencies}${pomSuffix}" > $pomPath
|
|
echo done creating $pomPath
|
|
|
|
echo downloading one dependency into $inputRepo
|
|
mvn -f "$pomPath" dependency:copy-dependencies
|
|
echo done downloading one dependency into $inputRepo
|
|
}
|
|
|
|
# generates an appropriately formatted repository for merging into existing repositories,
|
|
# by computing artifact metadata
|
|
function stageRepo() {
|
|
echo staging to $stageRepo
|
|
rm -rf $stageRepo
|
|
|
|
for f in $(find $inputRepo -type f | grep -v '\.sha1$' | grep -v '\.md5'); do
|
|
md5=$(md5sum $f | sed 's/ .*//')
|
|
sha1=$(sha1sum $f | sed 's/ .*//')
|
|
relPath=$(echo $f | sed "s|$inputRepo/||")
|
|
relDir=$(dirname $relPath)
|
|
|
|
fileName=$(basename $relPath)
|
|
writeChecksums="true"
|
|
|
|
destDir="$stageRepo/$relDir"
|
|
destFile="$stageRepo/$relPath"
|
|
if [ "$fileName" == "maven-metadata-local.xml" ]; then
|
|
writeChecksums="false"
|
|
destFile="$destDir/maven-metadata.xml"
|
|
fi
|
|
|
|
mkdir -p $destDir
|
|
if [ "$writeChecksums" == "true" ]; then
|
|
echo -n $md5 > "${destFile}.md5"
|
|
echo -n $sha1 > "${destFile}.sha1"
|
|
fi
|
|
cp $f $destFile
|
|
done
|
|
|
|
echo done staging to $stageRepo
|
|
}
|
|
|
|
function announceCopy() {
|
|
input=$1
|
|
output=$2
|
|
if stat $input > /dev/null 2>/dev/null; then
|
|
echo copying "$input" to "$output"
|
|
cp -rT $input $output
|
|
fi
|
|
}
|
|
|
|
function exportArtifact() {
|
|
echo exporting
|
|
announceCopy $stageRepo/com/android $destAndroidRepo/com/android
|
|
rm -rf $stageRepo/com/android
|
|
|
|
announceCopy $stageRepo/androidx $destAndroidRepo/androidx
|
|
rm -rf $stageRepo/androidx
|
|
|
|
announceCopy $stageRepo $destThirdPartyRepo
|
|
echo done exporting
|
|
}
|
|
|
|
|
|
function main() {
|
|
downloadArtifacts "$@"
|
|
stageRepo
|
|
exportArtifact
|
|
}
|
|
|
|
main "$@"
|