1
1
package com.jfrog.bintray.gradle.tasks
2
2
3
3
import com.jfrog.bintray.gradle.Utils
4
+ import com.jfrog.bintray.gradle.tasks.entities.Repository
5
+ import com.jfrog.bintray.gradle.tasks.entities.Package
6
+ import com.jfrog.bintray.gradle.tasks.entities.Version
4
7
import org.gradle.api.DefaultTask
5
8
import org.gradle.api.GradleException
6
9
import org.gradle.api.tasks.TaskAction
@@ -15,6 +18,7 @@ import static groovyx.net.http.Method.POST
15
18
*/
16
19
class BintrayPublishTask extends DefaultTask {
17
20
static final String TASK_NAME = " bintrayPublish"
21
+ private HashMap<String , Repository > repositories = new HashMap<> ()
18
22
19
23
@TaskAction
20
24
void taskAction () throws IOException {
@@ -25,14 +29,36 @@ class BintrayPublishTask extends DefaultTask {
25
29
HashSet<BintrayUploadTask > tasks = project. getTasksByName(BintrayUploadTask . TASK_NAME , true )
26
30
for (BintrayUploadTask task : tasks) {
27
31
if (task. getEnabled() && task. getDidWork()) {
28
- if (task. getSignVersion()) {
29
- gpgSignVersion(task. repoName, task. packageName, task. versionName, task)
32
+ Package pkg = new Package (task. packageName)
33
+ Repository repository = new Repository (task. repoName)
34
+ Repository existingRepo = repositories. putIfAbsent(task. repoName, repository)
35
+ if (! existingRepo) {
36
+ existingRepo = repository
30
37
}
31
- if (task. publish) {
32
- publishVersion(task. repoName, task. packageName, task. versionName, task)
38
+
39
+ Package existingPackage = existingRepo. packages. putIfAbsent(task. packageName, pkg)
40
+ if (! existingPackage) {
41
+ existingPackage = pkg
42
+ }
43
+
44
+ Version v = new Version (
45
+ task. versionName, task. signVersion, task. gpgPassphrase, task. publish, task. shouldSyncToMavenCentral())
46
+ Version existingVersion = existingPackage. getVersionIfExists(v)
47
+
48
+ if (existingVersion == null ) {
49
+ existingPackage. addVersionIfAbsent(v)
50
+ existingVersion = new Version (v. name, false , v. gpgPassphrase, false , false )
33
51
}
34
- if (task. shouldSyncToMavenCentral()) {
35
- mavenCentralSync(task. repoName, task. packageName, task. versionName, task)
52
+ if (existingVersion. shouldGpgSign(v. gpgSign)) {
53
+ gpgSignVersion(existingRepo. name, existingPackage. name, existingVersion. name, task)
54
+ }
55
+
56
+ if (existingVersion. shouldPerformPublish(v. publish)) {
57
+ publishVersion(existingRepo. name, existingPackage. name, existingVersion. name, task)
58
+ }
59
+
60
+ if (existingVersion. shouldPerformMavenSync(v. mavenCentralSync)) {
61
+ mavenCentralSync(existingRepo. name, existingPackage. name, existingVersion. name, task)
36
62
}
37
63
}
38
64
}
0 commit comments