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=' 4.0.0 com.google.android.build m2repository 1.0 google Google https://maven.google.com jcenter JCenter https://jcenter.bintray.com ' pomSuffix=' org.apache.maven.plugins maven-dependency-plugin 2.8 default-cli runtime true true true m2repository ' groupId="$1" artifactId="$2" version="$3" classifier="$4" extension="$5" pomDependencies="" dependencyText=$(echo -e "\n \n ${groupId}\n ${artifactId}\n ${version}") [ $classifier ] && dependencyText+=$(echo -e "\n ${classifier}") [ $extension ] && dependencyText+=$(echo -e "\n ${extension}") dependencyText+=$(echo -e "\n ") 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 "$@"