diff --git a/.gradle/4.4/fileChanges/last-build.bin b/.gradle/4.4/fileChanges/last-build.bin
new file mode 100644
index 0000000..f76dd23
Binary files /dev/null and b/.gradle/4.4/fileChanges/last-build.bin differ
diff --git a/.gradle/4.4/fileHashes/fileHashes.bin b/.gradle/4.4/fileHashes/fileHashes.bin
new file mode 100644
index 0000000..739f5d5
Binary files /dev/null and b/.gradle/4.4/fileHashes/fileHashes.bin differ
diff --git a/.gradle/4.4/fileHashes/fileHashes.lock b/.gradle/4.4/fileHashes/fileHashes.lock
new file mode 100644
index 0000000..bda7d79
Binary files /dev/null and b/.gradle/4.4/fileHashes/fileHashes.lock differ
diff --git a/.gradle/4.4/fileHashes/resourceHashesCache.bin b/.gradle/4.4/fileHashes/resourceHashesCache.bin
new file mode 100644
index 0000000..6a5a20c
Binary files /dev/null and b/.gradle/4.4/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/4.4/taskHistory/taskHistory.bin b/.gradle/4.4/taskHistory/taskHistory.bin
new file mode 100644
index 0000000..a353e20
Binary files /dev/null and b/.gradle/4.4/taskHistory/taskHistory.bin differ
diff --git a/.gradle/4.4/taskHistory/taskHistory.lock b/.gradle/4.4/taskHistory/taskHistory.lock
new file mode 100644
index 0000000..c27cacf
Binary files /dev/null and b/.gradle/4.4/taskHistory/taskHistory.lock differ
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 0000000..f76dd23
Binary files /dev/null and b/.gradle/4.5.1/fileChanges/last-build.bin differ
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 0000000..63776df
Binary files /dev/null and b/.gradle/4.5.1/fileContent/annotation-processors.bin differ
diff --git a/.gradle/4.5.1/fileContent/fileContent.lock b/.gradle/4.5.1/fileContent/fileContent.lock
new file mode 100644
index 0000000..22930c8
Binary files /dev/null and b/.gradle/4.5.1/fileContent/fileContent.lock differ
diff --git a/.gradle/4.5.1/fileHashes/fileHashes.bin b/.gradle/4.5.1/fileHashes/fileHashes.bin
new file mode 100644
index 0000000..68d67ea
Binary files /dev/null and b/.gradle/4.5.1/fileHashes/fileHashes.bin differ
diff --git a/.gradle/4.5.1/fileHashes/fileHashes.lock b/.gradle/4.5.1/fileHashes/fileHashes.lock
new file mode 100644
index 0000000..6cfcf33
Binary files /dev/null and b/.gradle/4.5.1/fileHashes/fileHashes.lock differ
diff --git a/.gradle/4.5.1/fileHashes/resourceHashesCache.bin b/.gradle/4.5.1/fileHashes/resourceHashesCache.bin
new file mode 100644
index 0000000..0eb7643
Binary files /dev/null and b/.gradle/4.5.1/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/4.5.1/taskHistory/taskHistory.bin b/.gradle/4.5.1/taskHistory/taskHistory.bin
new file mode 100644
index 0000000..fb1cae7
Binary files /dev/null and b/.gradle/4.5.1/taskHistory/taskHistory.bin differ
diff --git a/.gradle/4.5.1/taskHistory/taskHistory.lock b/.gradle/4.5.1/taskHistory/taskHistory.lock
new file mode 100644
index 0000000..cbfac9e
Binary files /dev/null and b/.gradle/4.5.1/taskHistory/taskHistory.lock differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
new file mode 100644
index 0000000..144ede6
Binary files /dev/null and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
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 0000000..7d8cf92
Binary files /dev/null and b/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/.gradle/vcsWorkingDirs/gc.properties b/.gradle/vcsWorkingDirs/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..e166d8b
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ 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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ org"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1529591189043
+
+
+ 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+