summaryrefslogtreecommitdiff
path: root/import-maven-artifacts.sh
blob: b2f81011d5dc69633f77bcd8fbe91ac8639e6f5d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
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 [group:artifact:version...]

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

function createPom() {
  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>
  <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>
'

  pomDependencies=""

  while [ "$1" != "" ]; do
    echo importing $1
    dependencyText="$(echo $1 | sed 's|\([^:]*\):\([^:]*\):\([^:]*\)|\n    <dependency>\n      <groupId>\1</groupId>\n      <artifactId>\2</artifactId>\n      <version>\3</version>\n    </dependency>|')"
    pomDependencies="${pomDependencies}${dependencyText}"
    shift
  done

  if [ "${pomDependencies}" == "" ]; then
    usage
  fi

  echo "${pomPrefix}${pomDependencies}${pomSuffix}" > $pomPath
  echo done creating $pomPath
}


function downloadDependencies() {
  echo downloading and/or copying dependencies to $inputRepo
  rm -rf $inputRepo
  mvn dependency:copy-dependencies
  #mvn dependency:copy-dependencies -Dclassifier=javadoc
  mvn dependency:copy-dependencies -Dclassifier=sources
  echo done placing dependencies in $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
  echo copying "$input" to "$output"
  cp -rT $input $output
}

function export() {
  echo exporting
  announceCopy $stageRepo/com/android $destAndroidRepo/com/android
  rm -rf $stageRepo/com/android
  announceCopy $stageRepo $destThirdPartyRepo
  echo done exporting
}


function main() {
  createPom "$@"
  downloadDependencies
  stageRepo
  export
}

main "$@"