From 72d2c74a0a7a1ee4bd8530da981e974767c1b509 Mon Sep 17 00:00:00 2001 From: John French Date: Fri, 22 Jun 2018 11:07:13 +0100 Subject: [PATCH] Initial setup based on gradle-plugin-bootstrap --- .gradle/4.4/fileChanges/last-build.bin | Bin 0 -> 1 bytes .gradle/4.4/fileHashes/fileHashes.bin | Bin 0 -> 24397 bytes .gradle/4.4/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes .../4.4/fileHashes/resourceHashesCache.bin | Bin 0 -> 18701 bytes .gradle/4.4/taskHistory/taskHistory.bin | Bin 0 -> 19622 bytes .gradle/4.4/taskHistory/taskHistory.lock | Bin 0 -> 17 bytes .gradle/4.5.1/fileChanges/last-build.bin | Bin 0 -> 1 bytes .../fileContent/annotation-processors.bin | Bin 0 -> 18605 bytes .gradle/4.5.1/fileContent/fileContent.lock | Bin 0 -> 17 bytes .gradle/4.5.1/fileHashes/fileHashes.bin | Bin 0 -> 22197 bytes .gradle/4.5.1/fileHashes/fileHashes.lock | Bin 0 -> 17 bytes .../4.5.1/fileHashes/resourceHashesCache.bin | Bin 0 -> 19007 bytes .gradle/4.5.1/taskHistory/taskHistory.bin | Bin 0 -> 45227 bytes .gradle/4.5.1/taskHistory/taskHistory.lock | Bin 0 -> 17 bytes .../buildOutputCleanup.lock | Bin 0 -> 17 bytes .gradle/buildOutputCleanup/cache.properties | 2 + .gradle/buildOutputCleanup/outputFiles.bin | Bin 0 -> 19001 bytes .gradle/vcsWorkingDirs/gc.properties | 0 .idea/compiler.xml | 11 + .idea/gradle.xml | 19 + .idea/misc.xml | 14 + .idea/vcs.xml | 6 + .idea/workspace.xml | 1139 +++++++++++++++++ build.gradle | 151 +++ .../com.praqma.demo.DemoPlugin.properties | 1 + .../pom-default.xml | 15 + .../publications/pluginMaven/pom-default.xml | 22 + .../pluginPublication/pom-default.xml | 22 + .../com.praqma.demo.DemoPlugin.properties | 1 + .../io.swagger.swaggerhub.plugin.properties | 1 + build/tmp/jar/MANIFEST.MF | 2 + gradle.properties | 10 + gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 172 +++ gradlew.bat | 84 ++ .../io.swagger.swaggerhub.plugin.properties | 1 + settings.gradle | 1 + .../groovy/com/praqma/demo/DemoPlugin.groovy | 22 + .../demo/greeting/GreetingExtension.groovy | 11 + .../demo/greeting/GreetingModule.groovy | 56 + .../praqma/demo/greeting/GreetingTask.groovy | 28 + .../github/jsfrench/swaggerhub/Greeting.java | 20 + .../jsfrench/swaggerhub/SwaggerHubClient.java | 113 ++ .../swaggerhub/SwaggerHubDownload.java | 56 + .../jsfrench/swaggerhub/SwaggerHubPlugin.java | 13 + .../swaggerhub/SwaggerHubRequest.java | 79 ++ .../jsfrench/swaggerhub/SwaggerHubUpload.java | 68 + .../io.swagger.swaggerhub.plugin.properties | 1 + .../jsfrench/swaggerhub/InitialTestClass.java | 21 + swaggerhub-gradle-plugin.ipr | 104 ++ swaggerhub-gradle-plugin.iws | 207 +++ 51 files changed, 2479 insertions(+) create mode 100644 .gradle/4.4/fileChanges/last-build.bin create mode 100644 .gradle/4.4/fileHashes/fileHashes.bin create mode 100644 .gradle/4.4/fileHashes/fileHashes.lock create mode 100644 .gradle/4.4/fileHashes/resourceHashesCache.bin create mode 100644 .gradle/4.4/taskHistory/taskHistory.bin create mode 100644 .gradle/4.4/taskHistory/taskHistory.lock create mode 100644 .gradle/4.5.1/fileChanges/last-build.bin create mode 100644 .gradle/4.5.1/fileContent/annotation-processors.bin create mode 100644 .gradle/4.5.1/fileContent/fileContent.lock create mode 100644 .gradle/4.5.1/fileHashes/fileHashes.bin create mode 100644 .gradle/4.5.1/fileHashes/fileHashes.lock create mode 100644 .gradle/4.5.1/fileHashes/resourceHashesCache.bin create mode 100644 .gradle/4.5.1/taskHistory/taskHistory.bin create mode 100644 .gradle/4.5.1/taskHistory/taskHistory.lock create mode 100644 .gradle/buildOutputCleanup/buildOutputCleanup.lock create mode 100644 .gradle/buildOutputCleanup/cache.properties create mode 100644 .gradle/buildOutputCleanup/outputFiles.bin create mode 100644 .gradle/vcsWorkingDirs/gc.properties create mode 100644 .idea/compiler.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 .idea/workspace.xml create mode 100644 build.gradle create mode 100644 build/pluginDescriptors/com.praqma.demo.DemoPlugin.properties create mode 100644 build/publications/demoPluginPluginMarkerMaven/pom-default.xml create mode 100644 build/publications/pluginMaven/pom-default.xml create mode 100644 build/publications/pluginPublication/pom-default.xml create mode 100644 build/resources/main/META-INF/gradle-plugins/com.praqma.demo.DemoPlugin.properties create mode 100644 build/resources/main/META-INF/gradle-plugins/io.swagger.swaggerhub.plugin.properties create mode 100644 build/tmp/jar/MANIFEST.MF create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 out/production/classes/META-INF/gradle-plugins/io.swagger.swaggerhub.plugin.properties create mode 100644 settings.gradle create mode 100644 src/main/groovy/com/praqma/demo/DemoPlugin.groovy create mode 100644 src/main/groovy/com/praqma/demo/greeting/GreetingExtension.groovy create mode 100644 src/main/groovy/com/praqma/demo/greeting/GreetingModule.groovy create mode 100644 src/main/groovy/com/praqma/demo/greeting/GreetingTask.groovy create mode 100644 src/main/java/io/github/jsfrench/swaggerhub/Greeting.java create mode 100644 src/main/java/io/github/jsfrench/swaggerhub/SwaggerHubClient.java create mode 100644 src/main/java/io/github/jsfrench/swaggerhub/SwaggerHubDownload.java create mode 100644 src/main/java/io/github/jsfrench/swaggerhub/SwaggerHubPlugin.java create mode 100644 src/main/java/io/github/jsfrench/swaggerhub/SwaggerHubRequest.java create mode 100644 src/main/java/io/github/jsfrench/swaggerhub/SwaggerHubUpload.java create mode 100644 src/main/resources/META-INF/gradle-plugins/io.swagger.swaggerhub.plugin.properties create mode 100644 src/test/java/io/github/jsfrench/swaggerhub/InitialTestClass.java create mode 100644 swaggerhub-gradle-plugin.ipr create mode 100644 swaggerhub-gradle-plugin.iws diff --git a/.gradle/4.4/fileChanges/last-build.bin b/.gradle/4.4/fileChanges/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/.gradle/4.4/fileHashes/fileHashes.bin b/.gradle/4.4/fileHashes/fileHashes.bin new file mode 100644 index 0000000000000000000000000000000000000000..739f5d5b0fb7f10a5e3c1b333a32b42d53fae351 GIT binary patch literal 24397 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 L{yL%bPsM)$d`Jmg literal 0 HcmV?d00001 diff --git a/.gradle/4.4/fileHashes/fileHashes.lock b/.gradle/4.4/fileHashes/fileHashes.lock new file mode 100644 index 0000000000000000000000000000000000000000..bda7d790d468924c84eba8f4affc76414d3f9217 GIT binary patch literal 17 VcmZRUIr27hf$pEl3}C=G2>>|J1t|ak literal 0 HcmV?d00001 diff --git a/.gradle/4.4/fileHashes/resourceHashesCache.bin b/.gradle/4.4/fileHashes/resourceHashesCache.bin new file mode 100644 index 0000000000000000000000000000000000000000..6a5a20c97716f36f04f767d179f9fe5f72a9459a GIT binary patch literal 18701 zcmeI%NlQXe7{>9N&|O4>Ees_JBx)5XCgG+DTo}bE3j!-;-&~HN`s(Qt<(^z z4^R+Ay9O6+j6iUa5Dm~oMFRxcHSfj3K0*8soO9pvoRzAwCOiRYV#vpd9r^~>7PP={ADEw;rg-Ps)%x*pM17BpNnMn~F> q?mzDE=nLP^o=$f+y%m&1ca9 zNp4(O&JMg=Xj*c%@4LCPMGTAla?kYZS>aLbrwf~}epzWhFNhBvW+>5;Da5rDpLlss zi3zij>`;no4kJF*MVa02Z(e-UR~$UtnmsdD-}vVvtl5F__V{I$s+2ZO6Q-F~k+u_$ z);(BH{`*hyJsWnPKi1ur>Pin~deYrP9Vd^c literal 0 HcmV?d00001 diff --git a/.gradle/4.5.1/fileChanges/last-build.bin b/.gradle/4.5.1/fileChanges/last-build.bin new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/.gradle/4.5.1/fileContent/annotation-processors.bin b/.gradle/4.5.1/fileContent/annotation-processors.bin new file mode 100644 index 0000000000000000000000000000000000000000..63776df1dba22721b3ac32132e23517be4bf6a37 GIT binary patch literal 18605 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 X#cy0O-Y3+Bzkk)eW1NO)6>j_kRlhp4 literal 0 HcmV?d00001 diff --git a/.gradle/4.5.1/fileHashes/fileHashes.lock b/.gradle/4.5.1/fileHashes/fileHashes.lock new file mode 100644 index 0000000000000000000000000000000000000000..6cfcf33e7f04ee1dc700a9b0f37bbdca3120c0db GIT binary patch literal 17 UcmZR!Eiu}@ZQDvq1_(F?05GBivH$=8 literal 0 HcmV?d00001 diff --git a/.gradle/4.5.1/fileHashes/resourceHashesCache.bin b/.gradle/4.5.1/fileHashes/resourceHashesCache.bin new file mode 100644 index 0000000000000000000000000000000000000000..0eb76436ce2540b2bca57e0231dbbfee6a177b9a GIT binary patch literal 19007 zcmeI(ZAcSg00;2X)mX9RBouo@Hd~&Rj`GwqJa^*;nE+h6q-y zmY3RW_*g7N7ChFb=d0Yzp#07X#|WCR2hMTcsX-AOsKs2myouLI5Fv5I_hZ1P}rU z0fYcT03m=7KnNfN5CRARgaASSA#jr;Fbe4JERW�Xp$Zw{i@N>k41GY*}{OAFuXX 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 literal 0 HcmV?d00001 diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..97980f2 --- /dev/null +++ b/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Thu Jun 21 16:37:18 IST 2018 +gradle.version=4.5.1 diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin new file mode 100644 index 0000000000000000000000000000000000000000..7d8cf924cc098c3db3b4d51890fdcd9a72bcd463 GIT binary patch literal 19001 zcmeI&T}V@L7{~E{8qSw#uak-HLP3%;ONHqml|ax9QOiw2PvW&{z$Z?Ln&ch8=k^SRwJg-{;f zqlY+nC=O0>1_1~_00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P-n{B4BXcNU(G>%6LEb z$+0>iF3MdeQC+*2CL`qco20k1d-(SQi(}PXyri#{y7nFS+3V`j45Mj``Z?~e(#Jz4 z9>)IOE`&CM`*L^Z(e-NCX=z?}hWnS^jqmCiXAkYMao=2B(4Vm$G47?I9m&gueR(vW=IOUfa^yqBE!1ncS3JvltsD&dDRrGc_v+6!hjq0- zg!WHyule+Rx_o;fpY{xMZ-|Lg*E_Ey(|iGUeig#cBE5$r1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafxc__| + + + + + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..5a53fe4 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..4b661a5 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..18444a5 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,1139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1529591189043 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No facets are configured + + + + + + + + groovy-2.5.0 + + + + + + + + 1.8 + + + + + + + + swaggerhub-gradle-plugin + + + + + + + + 1.8 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..10b60ee --- /dev/null +++ b/build.gradle @@ -0,0 +1,151 @@ +// * * * * * * * * * * * * +// Plugins +// * * * * * * * * * * * * + +plugins { + id 'groovy' + id 'java-gradle-plugin' + + // Publishing publicly + id 'com.gradle.plugin-publish' version '0.9.10' + + // Publishing to Artifactory + id 'maven-publish' +} + +// * * * * * * * * * * * * +// Dependencies +// * * * * * * * * * * * * + +repositories { + jcenter() +} + +dependencies { + compile gradleApi() + compile group: 'com.squareup.okhttp', name: 'okhttp', version:'2.7.5' + compile group: 'org.apache.commons', name: 'commons-lang3', version:'3.7' + testCompile group: 'com.github.tomakehurst', name: 'wiremock', version:'2.14.0' + testCompile gradleTestKit() + testCompile 'junit:junit:4+' + testCompile group: 'io.swagger', name: 'swagger-parser', version:'1.0.34' + +} + +// * * * * * * * * * * * * +// Project configuration +// * * * * * * * * * * * * + +project.description = 'Gradle Plugin for SwaggerHub' +project.group = 'io.github.jsfrench' +project.version = '1.0.0-SNAPSHOT' + +project.ext.name = 'swaggerhub' +project.ext.pluginId = 'com.praqma.demo.DemoPlugin' +project.ext.scm = 'scm:git@github.com:jsfrench/swaggerhub-gradle-plugin.git' +project.ext.url = 'https://github.com/jsfrench/swaggerhub-gradle-plugin' + +// Configuration for: java-gradle-plugin +gradlePlugin { + plugins { + demoPlugin { + id = project.pluginId + implementationClass = 'com.praqma.demo.DemoPlugin' + } + } +} + +// Configuration for: java-gradle-plugin +//gradlePlugin { +// plugins { +// demoPlugin { +// id = project.pluginId +// implementationClass = 'io.github.jsfrench.swaggerhub.SwaggerHubPlugin' +// } +// } +//} + +// * * * * * * * * * * * * +// Publishing +// * * * * * * * * * * * * + +// Consult the accompanied blog post for information on publishing the plugin. +// https://www.praqma.com/stories/gradle-plugin-bootstrap/ + +// Publishing to plugins.gradle.org +// -------------------------------- + +// Configuration for: com.gradle.plugin-publish +pluginBundle { + website = project.url + vcsUrl = project.scm + tags = ['demo', 'example', 'quickstart'] + + plugins { + demoPlugin { + displayName = 'Demo Custom Gradle Plugin ' + description = project.description + id = project.pluginId + } + } +} + +// Publishing to Artifactory +// ------------------------- + +// Configures the publication to push, and the repository to push to +publishing { + publications { + pluginPublication (MavenPublication) { + from components.java + groupId project.group + artifactId project.name + version project.version + } + } + repositories { + maven { + url project.rtfUrl + credentials { + username project.rtfUser + password project.rtfSecret + } + } + } +} + + +// ##### ORIGINAL ####### +//apply plugin: 'idea' +//apply plugin: 'java' +//apply plugin: 'maven-publish' +//apply plugin: 'io.swagger.swaggerhub.plugin.SwaggerHubPlugin' +// +//group = 'io.github.jsfrench' +//version = '1.0.0-SNAPSHOT' + +//description = """SwaggerHub Gradle Plugin""" + +//sourceCompatibility = 1.8 +//targetCompatibility = 1.8 +//tasks.withType(JavaCompile) { +// options.encoding = 'UTF-8' +//} +// +//configurations.all { +//} +//repositories { +// mavenCentral() +//} + + + +//// https://docs.gradle.org/current/userguide/java_gradle_plugin.html#plugins-tutorials +//gradlePlugin { +// plugins { +// simplePlugin { +// id = 'org.gradle.sample.simple-plugin' +// implementationClass = 'org.gradle.sample.SimplePlugin' +// } +// } +//} \ No newline at end of file diff --git a/build/pluginDescriptors/com.praqma.demo.DemoPlugin.properties b/build/pluginDescriptors/com.praqma.demo.DemoPlugin.properties new file mode 100644 index 0000000..a3adfc0 --- /dev/null +++ b/build/pluginDescriptors/com.praqma.demo.DemoPlugin.properties @@ -0,0 +1 @@ +implementation-class=com.praqma.demo.DemoPlugin diff --git a/build/publications/demoPluginPluginMarkerMaven/pom-default.xml b/build/publications/demoPluginPluginMarkerMaven/pom-default.xml new file mode 100644 index 0000000..4bd53e6 --- /dev/null +++ b/build/publications/demoPluginPluginMarkerMaven/pom-default.xml @@ -0,0 +1,15 @@ + + + 4.0.0 + com.praqma.demo.DemoPlugin + com.praqma.demo.DemoPlugin.gradle.plugin + 1.0.0-SNAPSHOT + pom + + + io.github.jsfrench + demo + 1.0.0-SNAPSHOT + + + diff --git a/build/publications/pluginMaven/pom-default.xml b/build/publications/pluginMaven/pom-default.xml new file mode 100644 index 0000000..82f21ba --- /dev/null +++ b/build/publications/pluginMaven/pom-default.xml @@ -0,0 +1,22 @@ + + + 4.0.0 + io.github.jsfrench + demo + 1.0.0-SNAPSHOT + + + com.squareup.okhttp + okhttp + 2.7.5 + compile + + + org.apache.commons + commons-lang3 + 3.7 + compile + + + diff --git a/build/publications/pluginPublication/pom-default.xml b/build/publications/pluginPublication/pom-default.xml new file mode 100644 index 0000000..82f21ba --- /dev/null +++ b/build/publications/pluginPublication/pom-default.xml @@ -0,0 +1,22 @@ + + + 4.0.0 + io.github.jsfrench + demo + 1.0.0-SNAPSHOT + + + com.squareup.okhttp + okhttp + 2.7.5 + compile + + + org.apache.commons + commons-lang3 + 3.7 + compile + + + diff --git a/build/resources/main/META-INF/gradle-plugins/com.praqma.demo.DemoPlugin.properties b/build/resources/main/META-INF/gradle-plugins/com.praqma.demo.DemoPlugin.properties new file mode 100644 index 0000000..a3adfc0 --- /dev/null +++ b/build/resources/main/META-INF/gradle-plugins/com.praqma.demo.DemoPlugin.properties @@ -0,0 +1 @@ +implementation-class=com.praqma.demo.DemoPlugin diff --git a/build/resources/main/META-INF/gradle-plugins/io.swagger.swaggerhub.plugin.properties b/build/resources/main/META-INF/gradle-plugins/io.swagger.swaggerhub.plugin.properties new file mode 100644 index 0000000..957d224 --- /dev/null +++ b/build/resources/main/META-INF/gradle-plugins/io.swagger.swaggerhub.plugin.properties @@ -0,0 +1 @@ +implementation-class=io.github.jsfrench.swaggerhub.SwaggerHubUpload diff --git a/build/tmp/jar/MANIFEST.MF b/build/tmp/jar/MANIFEST.MF new file mode 100644 index 0000000..58630c0 --- /dev/null +++ b/build/tmp/jar/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..f898e0f --- /dev/null +++ b/gradle.properties @@ -0,0 +1,10 @@ +# Artifactory server and repository +# --------------------------------- +rtfUrl=http\://devops.acmeindustries.com\:8080/artifactory/plugins-release + +# Artifactory credential placeholders +# ----------------------------------- +# Please do not store credentials in the version controlled build.gradle file +# Inject them as environment variables or add them in your user Gradle properties (~/.gradle/gradle.properties) +rtfUser= +rtfSecret= \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..b426bfe --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Thu Jun 21 16:50:21 IST 2018 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..cccdd3d --- /dev/null +++ b/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..e95643d --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/out/production/classes/META-INF/gradle-plugins/io.swagger.swaggerhub.plugin.properties b/out/production/classes/META-INF/gradle-plugins/io.swagger.swaggerhub.plugin.properties new file mode 100644 index 0000000..957d224 --- /dev/null +++ b/out/production/classes/META-INF/gradle-plugins/io.swagger.swaggerhub.plugin.properties @@ -0,0 +1 @@ +implementation-class=io.github.jsfrench.swaggerhub.SwaggerHubUpload diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..0a383dd --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'demo' diff --git a/src/main/groovy/com/praqma/demo/DemoPlugin.groovy b/src/main/groovy/com/praqma/demo/DemoPlugin.groovy new file mode 100644 index 0000000..569652a --- /dev/null +++ b/src/main/groovy/com/praqma/demo/DemoPlugin.groovy @@ -0,0 +1,22 @@ +package com.praqma.demo + +import com.praqma.demo.greeting.GreetingModule +import org.gradle.api.Plugin +import org.gradle.api.Project + +/** + * The plugin's entry point. + * Reference: + * https://docs.gradle.org/4.6/userguide/custom_plugins.html#sec:writing_a_simple_plugin + */ +public class DemoPlugin implements Plugin{ + + /** + * Applies this plugin to the given Gradle project + * @param project The Gradle project + */ + void apply(Project project) { + // Apply all functionality from the GreetingModule + GreetingModule.load(project) + } +} diff --git a/src/main/groovy/com/praqma/demo/greeting/GreetingExtension.groovy b/src/main/groovy/com/praqma/demo/greeting/GreetingExtension.groovy new file mode 100644 index 0000000..7a022a1 --- /dev/null +++ b/src/main/groovy/com/praqma/demo/greeting/GreetingExtension.groovy @@ -0,0 +1,11 @@ +package com.praqma.demo.greeting + +/** + * An extension object for the Greeting module + * + * Reference: + * https://docs.gradle.org/4.6/userguide/custom_plugins.html#sec:getting_input_from_the_build + */ +class GreetingExtension { + String alternativeGreeting +} diff --git a/src/main/groovy/com/praqma/demo/greeting/GreetingModule.groovy b/src/main/groovy/com/praqma/demo/greeting/GreetingModule.groovy new file mode 100644 index 0000000..b4947b0 --- /dev/null +++ b/src/main/groovy/com/praqma/demo/greeting/GreetingModule.groovy @@ -0,0 +1,56 @@ +package com.praqma.demo.greeting + +import org.gradle.api.Project + +/** + * The "module" isn't anything Gradle specific. + * It's just a way of grouping tasks and configuration that share a certain theme. + * The module's "load" method is called in the plugin's entry point at {@link com.praqma.demo.DemoPlugin} + */ +class GreetingModule { + static void load(Project project) { + /* + * Register a 'greeting' extension, with the properties defined in GreetingExtension + * Reference: + * https://docs.gradle.org/4.6/userguide/custom_plugins.html#sec:getting_input_from_the_build + */ + project.extensions.create("greeting", GreetingExtension) + + /* + * Clever trick so users don't have to reference a custom task class by its fully qualified name. + * Reference: + * https://discuss.gradle.org/t/how-to-create-custom-gradle-task-type-and-not-have-to-specify-full-path-to-type-in-build-gradle/6059/4 + */ + project.ext.GreetingTask = GreetingTask + + /* + * A task that uses an extension for configuration. + * Reference: + * https://docs.gradle.org/4.6/userguide/custom_plugins.html#sec:getting_input_from_the_build + */ + project.task('helloWorld') { + group = "Greeting" + description = "Greets the world. Greeting configured in the 'greeting' extension." + + doLast { + String greeting = project.extensions.greeting.alternativeGreeting ?: "Hello" + println "$greeting, world!" + } + } + + /* + * A task using a project property for configuration. + * Reference: + * https://docs.gradle.org/4.6/userguide/build_environment.html#sec:gradle_configuration_properties + */ + project.task('helloTarget') { + group = "Greeting" + description = "Greets the user. Target configured through properties." + + doLast { + String target = project.findProperty("target") ?: "default-user" + println "Hello, $target!" + } + } + } +} diff --git a/src/main/groovy/com/praqma/demo/greeting/GreetingTask.groovy b/src/main/groovy/com/praqma/demo/greeting/GreetingTask.groovy new file mode 100644 index 0000000..3462e78 --- /dev/null +++ b/src/main/groovy/com/praqma/demo/greeting/GreetingTask.groovy @@ -0,0 +1,28 @@ +package com.praqma.demo.greeting + +import org.gradle.api.DefaultTask +import org.gradle.api.GradleException +import org.gradle.api.tasks.Internal +import org.gradle.api.tasks.TaskAction + +/** + * A custom task type, allows projects to create tasks of type 'GreetingTask' + * Reference: + * https://docs.gradle.org/4.6/userguide/more_about_tasks.html#sec:task_input_output_annotations + */ +class GreetingTask extends DefaultTask { + @Internal + String message = "Hello" + + @Internal + String target = "World" + + @TaskAction + void greet() { + if (message.toLowerCase(Locale.ROOT).contains("bye")) { + throw new GradleException("I can't let you do that, Starfox.") + } + + println "${message}, ${target}!" + } +} diff --git a/src/main/java/io/github/jsfrench/swaggerhub/Greeting.java b/src/main/java/io/github/jsfrench/swaggerhub/Greeting.java new file mode 100644 index 0000000..3a5f9c0 --- /dev/null +++ b/src/main/java/io/github/jsfrench/swaggerhub/Greeting.java @@ -0,0 +1,20 @@ +package io.github.jsfrench.swaggerhub; + +import org.gradle.api.DefaultTask; +import org.gradle.api.tasks.TaskAction; + +public class Greeting extends DefaultTask { + private String message; + private String recipient; + + public String getMessage() { return message; } + public void setMessage(String message) { this.message = message; } + + public String getRecipient() { return recipient; } + public void setRecipient(String recipient) { this.recipient = recipient; } + + @TaskAction + void sayGreeting() { + System.out.printf("%s, %s!\n", getMessage(), getRecipient()); + } +} diff --git a/src/main/java/io/github/jsfrench/swaggerhub/SwaggerHubClient.java b/src/main/java/io/github/jsfrench/swaggerhub/SwaggerHubClient.java new file mode 100644 index 0000000..1a5e31b --- /dev/null +++ b/src/main/java/io/github/jsfrench/swaggerhub/SwaggerHubClient.java @@ -0,0 +1,113 @@ +package io.github.jsfrench.swaggerhub; + +import com.squareup.okhttp.HttpUrl; +import com.squareup.okhttp.MediaType; +import com.squareup.okhttp.OkHttpClient; +import com.squareup.okhttp.Request; +import com.squareup.okhttp.RequestBody; +import com.squareup.okhttp.Response; + +import java.io.IOException; + +public class SwaggerHubClient { + private final OkHttpClient client; + private final String host; + private final int port; + private final String token; + private final String protocol; + private static final String APIS = "apis"; + + + public SwaggerHubClient(String host, int port, String protocol, String token) { + client = new OkHttpClient(); + this.host = host; + this.port = port; + this.protocol = protocol; + this.token = token; + } + + public String getDefinition(SwaggerHubRequest swaggerHubRequest) throws Exception { + HttpUrl httpUrl = getDownloadUrl(swaggerHubRequest); + MediaType mediaType = MediaType.parse("application/" + swaggerHubRequest.getFormat()); + + Request requestBuilder = buildGetRequest(httpUrl, mediaType); + + final String jsonResponse; + try { + final Response response = client.newCall(requestBuilder).execute(); + if (!response.isSuccessful()) { + throw new Exception( + String.format("Failed to download definition: %s", response.body().string()) + ); + } else { + jsonResponse = response.body().string(); + } + } catch (IOException e) { + throw new Exception("Failed to download definition", e); + } + return jsonResponse; + } + + private Request buildGetRequest(HttpUrl httpUrl, MediaType mediaType) { + Request.Builder requestBuilder = new Request.Builder() + .url(httpUrl) + .addHeader("Accept", mediaType.toString()) + .addHeader("User-Agent", "swaggerhub-maven-plugin"); + if (token != null) { + requestBuilder.addHeader("Authorization", token); + } + return requestBuilder.build(); + } + + public void saveDefinition(SwaggerHubRequest swaggerHubRequest) throws Exception { + HttpUrl httpUrl = getUploadUrl(swaggerHubRequest); + MediaType mediaType = MediaType.parse("application/" + swaggerHubRequest.getFormat()); + + final Request httpRequest = buildPostRequest(httpUrl, mediaType, swaggerHubRequest.getSwagger()); + + try { + Response response = client.newCall(httpRequest).execute(); + if (!response.isSuccessful()) { + throw new Exception( + String.format("Failed to upload definition: %s", response.body().string()) + ); + } + } catch (IOException e) { + throw new Exception("Failed to upload definition", e); + } + return; + } + + private Request buildPostRequest(HttpUrl httpUrl, MediaType mediaType, String content) { + return new Request.Builder() + .url(httpUrl) + .addHeader("Content-Type", mediaType.toString()) + .addHeader("Authorization", token) + .addHeader("User-Agent", "swaggerhub-maven-plugin") + .post(RequestBody.create(mediaType, content)) + .build(); + } + + private HttpUrl getDownloadUrl(SwaggerHubRequest swaggerHubRequest) { + return getBaseUrl(swaggerHubRequest.getOwner(), swaggerHubRequest.getApi()) + .addEncodedPathSegment(swaggerHubRequest.getVersion()) + .build(); + } + + private HttpUrl getUploadUrl(SwaggerHubRequest swaggerHubRequest) { + return getBaseUrl(swaggerHubRequest.getOwner(), swaggerHubRequest.getApi()) + .addEncodedQueryParameter("version", swaggerHubRequest.getVersion()) + .addEncodedQueryParameter("isPrivate", Boolean.toString(swaggerHubRequest.isPrivate())) + .build(); + } + + private HttpUrl.Builder getBaseUrl(String owner, String api) { + return new HttpUrl.Builder() + .scheme(protocol) + .host(host) + .port(port) + .addPathSegment(APIS) + .addEncodedPathSegment(owner) + .addEncodedPathSegment(api); + } +} diff --git a/src/main/java/io/github/jsfrench/swaggerhub/SwaggerHubDownload.java b/src/main/java/io/github/jsfrench/swaggerhub/SwaggerHubDownload.java new file mode 100644 index 0000000..662eaf8 --- /dev/null +++ b/src/main/java/io/github/jsfrench/swaggerhub/SwaggerHubDownload.java @@ -0,0 +1,56 @@ +package io.github.jsfrench.swaggerhub; + + +import org.gradle.api.Plugin; +import org.gradle.api.Project; + +import java.io.File; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Paths; + + +/** + * Downloads API definition from SwaggerHub + */ +//@Mojo(name = "download") +public class SwaggerHubDownload implements Plugin { + private String owner; + private String api; + private String version; + private String format; + private String host; + private int port; + private String protocol; + private String token; + private String outputFile; + + @Override + public void apply(Project project) { + SwaggerHubClient swaggerHubClient = new SwaggerHubClient(host, port, protocol, token); +// getLog().info("Downloading from " + host +// + ": api-" + api +// + ", owner-" + owner +// + ", version-" + version +// + ", format-" + format +// + ", outputFile-" + outputFile); + + SwaggerHubRequest swaggerHubRequest = new SwaggerHubRequest.Builder(api, owner, version) + .format(format) + .build(); + + try { + String swaggerJson = swaggerHubClient.getDefinition(swaggerHubRequest); + File file = new File(outputFile); + + final File parentFile = file.getParentFile(); + if (parentFile != null) { + parentFile.mkdirs(); + } + Files.write(Paths.get(outputFile), swaggerJson.getBytes(Charset.forName("UTF-8"))); + } catch (Exception e) { +// throw new Exception("Failed to download API definition", e); + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/src/main/java/io/github/jsfrench/swaggerhub/SwaggerHubPlugin.java b/src/main/java/io/github/jsfrench/swaggerhub/SwaggerHubPlugin.java new file mode 100644 index 0000000..ccee4c2 --- /dev/null +++ b/src/main/java/io/github/jsfrench/swaggerhub/SwaggerHubPlugin.java @@ -0,0 +1,13 @@ +package io.github.jsfrench.swaggerhub; + +import org.gradle.api.Plugin; +import org.gradle.api.Project; + +public class SwaggerHubPlugin implements Plugin { + public void apply(Project project) { +// project.getTasks().create("hello", Greeting.class, (task) -> { +// task.setMessage("Hello"); +// task.setRecipient("World"); +// }); + } +} \ No newline at end of file diff --git a/src/main/java/io/github/jsfrench/swaggerhub/SwaggerHubRequest.java b/src/main/java/io/github/jsfrench/swaggerhub/SwaggerHubRequest.java new file mode 100644 index 0000000..63a4ec4 --- /dev/null +++ b/src/main/java/io/github/jsfrench/swaggerhub/SwaggerHubRequest.java @@ -0,0 +1,79 @@ +package io.github.jsfrench.swaggerhub; + + +public class SwaggerHubRequest { + private final String api; + private final String owner; + private final String version; + private final String format; + private final String swagger; + private final boolean isPrivate; + + public String getApi() { + return api; + } + + public String getOwner() { + return owner; + } + + public String getVersion() { + return version; + } + + public String getFormat() { + return format; + } + + public String getSwagger() { + return swagger; + } + + public boolean isPrivate() { + return isPrivate; + } + + private SwaggerHubRequest(Builder builder) { + this.api = builder.api; + this.owner = builder.owner; + this.version = builder.version; + this.format = builder.format; + this.swagger = builder.swagger; + this.isPrivate = builder.isPrivate; + } + + public static class Builder { + private final String api; + private final String owner; + private final String version; + private String format; + private String swagger; + private boolean isPrivate; + + public Builder(String api, String owner, String version) { + this.api = api; + this.owner = owner; + this.version = version; + } + + public Builder format(String format) { + this.format = format; + return this; + } + + public Builder swagger(String swagger) { + this.swagger = swagger; + return this; + } + + public Builder isPrivate(boolean isPrivate) { + this.isPrivate = isPrivate; + return this; + } + + public SwaggerHubRequest build() { + return new SwaggerHubRequest(this); + } + + } +} diff --git a/src/main/java/io/github/jsfrench/swaggerhub/SwaggerHubUpload.java b/src/main/java/io/github/jsfrench/swaggerhub/SwaggerHubUpload.java new file mode 100644 index 0000000..c94a798 --- /dev/null +++ b/src/main/java/io/github/jsfrench/swaggerhub/SwaggerHubUpload.java @@ -0,0 +1,68 @@ +package io.github.jsfrench.swaggerhub; + +import org.gradle.api.Plugin; +import org.gradle.api.Project; + +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Paths; + + +/** + * Uploads API definition to SwaggerHub + */ +public class SwaggerHubUpload implements Plugin { +// @Parameter(property = "upload.owner", required = true) + private String owner; +// @Parameter(property = "upload.api", required = true) + private String api; +// @Parameter(property = "upload.version") + private String version; +// @Parameter(property = "upload.host", defaultValue = "api.swaggerhub.com") + private String host; +// @Parameter(property = "upload.port", defaultValue = "443") + private int port; +// @Parameter(property = "upload.protocol", defaultValue = "https") + private String protocol; +// @Parameter(property = "upload.format", defaultValue = "json") + private String format; +// @Parameter(property = "upload.token") + private String token; +// @Parameter(property = "upload.inputFile", required = true) + private String inputFile; +// @Parameter(property = "upload.isPrivate", defaultValue = "false") + private Boolean isPrivate; + + private SwaggerHubClient swaggerHubClient; + + @Override + public void apply(Project project) { + + project.task("hello") + .doLast(task -> System.out.println("HELLO FROM GRADLE")); + + swaggerHubClient = new SwaggerHubClient(host, port, protocol, token); + +// getLog().info("Uploading to " + host +// + ": api: " + api +// + ", owner: " + owner +// + ", version: " + version +// + ", inputFile: " + inputFile +// + ", format: " + format +// + ", isPrivate: " + isPrivate); + + try { + String content = new String(Files.readAllBytes(Paths.get(inputFile)), Charset.forName("UTF-8")); + + SwaggerHubRequest swaggerHubRequest = new SwaggerHubRequest.Builder(api, owner, version) + .swagger(content) + .format(format) + .isPrivate(isPrivate) + .build(); + + swaggerHubClient.saveDefinition(swaggerHubRequest); + } catch (Exception e) { +// getLog().Exception("Failed to upload API definition", e); + } + } +} \ No newline at end of file diff --git a/src/main/resources/META-INF/gradle-plugins/io.swagger.swaggerhub.plugin.properties b/src/main/resources/META-INF/gradle-plugins/io.swagger.swaggerhub.plugin.properties new file mode 100644 index 0000000..957d224 --- /dev/null +++ b/src/main/resources/META-INF/gradle-plugins/io.swagger.swaggerhub.plugin.properties @@ -0,0 +1 @@ +implementation-class=io.github.jsfrench.swaggerhub.SwaggerHubUpload diff --git a/src/test/java/io/github/jsfrench/swaggerhub/InitialTestClass.java b/src/test/java/io/github/jsfrench/swaggerhub/InitialTestClass.java new file mode 100644 index 0000000..f078811 --- /dev/null +++ b/src/test/java/io/github/jsfrench/swaggerhub/InitialTestClass.java @@ -0,0 +1,21 @@ +package io.github.jsfrench.swaggerhub; + +import org.gradle.api.Project; +import org.gradle.internal.impldep.org.testng.annotations.Test; +import org.gradle.testfixtures.ProjectBuilder; + +import static org.gradle.internal.impldep.org.testng.AssertJUnit.assertNotNull; +import static org.gradle.internal.impldep.org.testng.AssertJUnit.assertTrue; + +public class InitialTestClass { + + @Test + public void uploadTest() { + Project project = ProjectBuilder.builder().build(); + project.getPluginManager().apply("io.swagger.swaggerhub.plugin"); + + assertTrue(project.getPluginManager().hasPlugin("io.swagger.swaggerhub.plugin")); + + assertNotNull(project.getTasks().getByName("hello")); + } +} diff --git a/swaggerhub-gradle-plugin.ipr b/swaggerhub-gradle-plugin.ipr new file mode 100644 index 0000000..b9b1086 --- /dev/null +++ b/swaggerhub-gradle-plugin.ipr @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1.6 + + + + + + + + + + + + + diff --git a/swaggerhub-gradle-plugin.iws b/swaggerhub-gradle-plugin.iws new file mode 100644 index 0000000..d5bc759 --- /dev/null +++ b/swaggerhub-gradle-plugin.iws @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + localhost + 5050 + + + + + + + + + + + + + + +