From b2c08092f8a5fb1512b70ce4d435298d0215e1fc Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Tue, 25 Apr 2017 14:11:03 +0200 Subject: [PATCH 1/2] check if the release tag already exists before creating a new one --- .../groovy/co/riiid/gradle/ReleaseTask.groovy | 53 ++++++++++++++++--- 1 file changed, 45 insertions(+), 8 deletions(-) diff --git a/src/main/groovy/co/riiid/gradle/ReleaseTask.groovy b/src/main/groovy/co/riiid/gradle/ReleaseTask.groovy index c3f8da8..fceee29 100644 --- a/src/main/groovy/co/riiid/gradle/ReleaseTask.groovy +++ b/src/main/groovy/co/riiid/gradle/ReleaseTask.groovy @@ -19,7 +19,12 @@ class ReleaseTask extends DefaultTask { def http = new HttpBuilder(baseUrl) - def path = "/repos/" + + def getReleasePath = "/repos/" + + "${project.github.owner}/" + + "${project.github.repo}/releases/tags/" + + "${project.github.getTagName()}" + + def createReleasePath = "/repos/" + "${project.github.owner}/" + "${project.github.repo}/releases" @@ -32,6 +37,38 @@ class ReleaseTask extends DefaultTask { draft : project.github.isDraft() ] + http.request(Method.GET) { + uri.path += getReleasePath + requestContentType = ContentType.JSON + + headers.'User-Agent' = HEADER_USER_AGENT + headers.'Authorization' = "token ${project.github.token}" + headers.'Accept' = accept + + def getLogMessage = "GET ${uri.path}\n" + + " > User-Agent: ${headers['User-Agent']}\n" + + " > Authorization: (not shown)\n" + + " > Accept: ${headers.Accept}\n" + logger.debug "$getLogMessage" + + response.success = { resp, json -> + logger.debug "< $resp.statusLine" + logger.debug 'Response headers: \n' + resp.headers.collect { "< $it" }.join('\n') + logger.error "Error in $getLogMessage" + def errorMessage = json ? json.message : resp.statusLine + def ref = json ? "See $json.documentation_url" : '' + def errorDetails = json && json.errors ? "Details: " + json.errors.collect { it }.join('\n') : '' + throw new GradleScriptException("$errorMessage. $ref. $errorDetails", null) + } + + response.failure = { resp, json -> + logger.debug 'Response headers: \n' + resp.headers.collect { "< $it" }.join('\n') + createRelease(http, createReleasePath, postBody, accept) + } + } + } + + public createRelease(HttpBuilder http, path, postBody, accept) { http.request(Method.POST) { uri.path += path requestContentType = ContentType.JSON @@ -42,10 +79,10 @@ class ReleaseTask extends DefaultTask { headers.'Accept' = accept def postLogMessage = "POST ${uri.path}\n" + - " > User-Agent: ${headers['User-Agent']}\n" + - " > Authorization: (not shown)\n" + - " > Accept: ${headers.Accept}\n" + - " > body: $body\n" + " > User-Agent: ${headers['User-Agent']}\n" + + " > Authorization: (not shown)\n" + + " > Accept: ${headers.Accept}\n" + + " > body: $body\n" logger.debug "$postLogMessage" response.success = { resp, json -> @@ -59,9 +96,9 @@ class ReleaseTask extends DefaultTask { response.failure = { resp, json -> logger.error "Error in $postLogMessage" logger.debug 'Response headers: \n' + resp.headers.collect { "< $it" }.join('\n') - def errorMessage = json?json.message:resp.statusLine - def ref = json?"See $json.documentation_url":'' - def errorDetails = json && json.errors? "Details: " + json.errors.collect { it }.join('\n'):'' + def errorMessage = json ? json.message : resp.statusLine + def ref = json ? "See $json.documentation_url" : '' + def errorDetails = json && json.errors ? "Details: " + json.errors.collect { it }.join('\n') : '' throw new GradleScriptException("$errorMessage. $ref. $errorDetails", null) } } From ab00c48b12f0e06ae09aecd70076ec34b02ad1a0 Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Tue, 25 Apr 2017 14:26:37 +0200 Subject: [PATCH 2/2] add jitpack to the gradle build config --- build.gradle | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build.gradle b/build.gradle index 372ae96..d34ed4f 100644 --- a/build.gradle +++ b/build.gradle @@ -97,6 +97,9 @@ version GradleGithubPluginVersion repositories { jcenter() + maven { + url "https://jitpack.io" + } } dependencies { @@ -104,5 +107,6 @@ dependencies { compile localGroovy() compile 'org.codehaus.groovy.modules.http-builder:http-builder:0.7.1' compile 'org.zeroturnaround:zt-zip:1.8' + compile 'com.github.jitpack:gradle-simple:1.0' testCompile group: 'junit', name: 'junit', version: '4.11' }