diff --git a/.gitignore b/.gitignore index a680191b..6d6a56f8 100644 --- a/.gitignore +++ b/.gitignore @@ -11,5 +11,3 @@ libs out .DS_Store lib/kotlin-* -build -.history diff --git a/README.md b/README.md index d5d7cbe0..81d87855 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Kobalt -[](https://teamcity.jetbrains.com/project.html?projectId=OpenSourceProjects_Kobalt&tab=projectOverview) +[](https://teamcity.jetbrains.com/project.html?projectId=OpenSourceProjects_Kobalt&tab=projectOverview) Kobalt is a universal build system. @@ -8,7 +8,7 @@ Kobalt is a universal build system. To build it: ``` -$ ./kobaltw assemble +./kobaltw assemble ``` Please see [the web site](http://beust.com/kobalt/) for the full documentation. diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 3f0053cc..00000000 --- a/build.gradle +++ /dev/null @@ -1,58 +0,0 @@ -allprojects { - group = 'com.beust' - version = '1.1.0' -} - -subprojects { - apply plugin: 'java' - apply plugin: 'maven-publish' - - ext { - bndlib = '3.5.0' - findbugs = '3.0.2' - groovy = '2.4.12' - gson = '2.8.2' - guice = '4.2.2' - inject = '1' - jaxb = '2.3.0' - jcommander = '1.72' - kotlin = '1.2.71' - maven = '3.5.2' - mavenResolver = '1.1.0' - okhttp = '3.9.1' - okio = '1.13.0' - retrofit = '2.3.0' - slf4j = '1.7.3' - spark = '2.6.0' - testng = '6.12' - - junit = '4.12' - junitJupiter = '5.1.0' - junitPlatform = '1.1.0' - } - - repositories { - mavenCentral() - mavenLocal() - jcenter() - maven { - url = 'https://dl.bintray.com/cbeust/maven' - } - - maven { - url = 'https://repo.maven.apache.org/maven2' - } - } - - sourceCompatibility = '1.7' - - task sourcesJar(type: Jar) { - from sourceSets.main.allJava - archiveClassifier = 'sources' - } - - task javadocJar(type: Jar) { - from javadoc - archiveClassifier = 'javadoc' - } -} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 5c2d1cf0..00000000 Binary files a/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 838e6bc8..00000000 --- a/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.3-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew deleted file mode 100755 index b0d6d0ab..00000000 --- a/gradlew +++ /dev/null @@ -1,188 +0,0 @@ -#!/usr/bin/env sh - -# -# Copyright 2015 the original author or authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -## -## 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='"-Xmx64m" "-Xms64m"' - -# 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 deleted file mode 100644 index 9991c503..00000000 --- a/gradlew.bat +++ /dev/null @@ -1,100 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem http://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@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="-Xmx64m" "-Xms64m" - -@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/kobalt/src/Build.kt b/kobalt/src/Build.kt index 0d09844a..904c428c 100644 --- a/kobalt/src/Build.kt +++ b/kobalt/src/Build.kt @@ -21,27 +21,26 @@ import java.util.zip.ZipEntry import java.util.zip.ZipOutputStream val bs = buildScript { - repos("https://dl.bintray.com/cbeust/maven") + repos("http://dl.bintray.com/cbeust/maven") } object Versions { - val kotlin = "1.2.71" - val okhttp = "3.9.1" - val okio = "1.13.0" - val retrofit = "2.3.0" - val gson = "2.8.2" - val guice = "4.2.2" - val maven = "3.5.2" - val mavenResolver = "1.1.0" + val okhttp = "3.2.0" + val okio = "1.6.0" + val retrofit = "2.1.0" + val gson = "2.6.2" + val maven = "3.3.9" + val mavenResolver = "1.0.3" val slf4j = "1.7.3" + val kotlin = "1.1.2" val aether = "1.0.2.v20150114" - val testng = "6.12" - val jcommander = "1.72" + val testng = "6.11" // JUnit 5 val junit = "4.12" - val junitPlatform = "1.1.0" - val junitJupiter = "5.1.0" + val junitPlatform = "1.0.0-M4" + val junitJupiter = "5.0.0-M4" + val junitVintageVersion = "$junit.0-M4" } fun mavenResolver(vararg m: String) @@ -79,7 +78,6 @@ val wrapper = project { bintray { publish = true - sign = true } pom = createPom(name, "Wrapper for Kobalt") @@ -92,42 +90,41 @@ val kobaltPluginApi = project { version = readVersion() directory = "modules/kobalt-plugin-api" description = "A build system in Kotlin" - url = "https://beust.com/kobalt" + url = "http://beust.com/kobalt" pom = createPom(name, "A build system in Kotlin") dependencies { compile( "org.jetbrains.kotlin:kotlin-stdlib:${Versions.kotlin}", - "com.google.inject:guice:${Versions.guice}", - "com.google.inject.extensions:guice-assistedinject:4.1.0", + "com.google.inject:guice:4.0", + "com.google.inject.extensions:guice-assistedinject:4.0", "javax.inject:javax.inject:1", - "com.google.guava:guava:27.0.1-jre", + "com.google.guava:guava:21.0", "org.apache.maven:maven-model:${Versions.maven}", - "io.reactivex:rxjava:1.3.3", + "io.reactivex:rxjava:1.1.5", "com.squareup.okio:okio:${Versions.okio}", "com.google.code.gson:gson:${Versions.gson}", "com.squareup.okhttp3:okhttp:${Versions.okhttp}", "com.squareup.retrofit2:retrofit:${Versions.retrofit}", "com.squareup.retrofit2:converter-gson:${Versions.retrofit}", - "com.beust:jcommander:${Versions.jcommander}", - "org.eclipse.jgit:org.eclipse.jgit:4.9.0.201710071750-r", + "com.beust:jcommander:1.48", + "org.eclipse.jgit:org.eclipse.jgit:4.5.0.201609210915-r", "org.slf4j:slf4j-simple:${Versions.slf4j}", *mavenResolver("api", "spi", "util", "impl", "connector-basic", "transport-http", "transport-file"), "org.apache.maven:maven-aether-provider:3.3.9", "org.testng.testng-remote:testng-remote:1.3.2", "org.testng:testng:${Versions.testng}", + "commons-io:commons-io:2.5", "org.junit.platform:junit-platform-surefire-provider:${Versions.junitPlatform}", "org.junit.platform:junit-platform-runner:${Versions.junitPlatform}", "org.junit.platform:junit-platform-engine:${Versions.junitPlatform}", "org.junit.platform:junit-platform-console:${Versions.junitPlatform}", "org.junit.jupiter:junit-jupiter-engine:${Versions.junitJupiter}", - "org.junit.vintage:junit-vintage-engine:${Versions.junitJupiter}", - "org.apache.commons:commons-compress:1.15", - "commons-io:commons-io:2.6", + "org.junit.vintage:junit-vintage-engine:${Versions.junitVintageVersion}", - // Java 9 - "javax.xml.bind:jaxb-api:2.3.0" + "org.apache.commons:commons-compress:1.13", + "commons-io:commons-io:2.5" ) exclude(*aether("impl", "spi", "util", "api")) } @@ -164,30 +161,24 @@ val kobaltApp = project(kobaltPluginApi, wrapper) { // Used by the main app compile( "org.jetbrains.kotlin:kotlin-stdlib:${Versions.kotlin}", - "com.github.spullara.mustache.java:compiler:0.9.5", + "com.github.spullara.mustache.java:compiler:0.9.1", "javax.inject:javax.inject:1", - "com.google.inject:guice:${Versions.guice}", - "com.google.inject.extensions:guice-assistedinject:${Versions.guice}", - "com.beust:jcommander:${Versions.jcommander}", + "com.google.inject:guice:4.0", + "com.google.inject.extensions:guice-assistedinject:4.0", + "com.beust:jcommander:1.65", "org.apache.maven:maven-model:${Versions.maven}", - "com.google.code.findbugs:jsr305:3.0.2", + "com.google.code.findbugs:jsr305:3.0.1", "com.google.code.gson:gson:${Versions.gson}", "com.squareup.retrofit2:retrofit:${Versions.retrofit}", "com.squareup.retrofit2:converter-gson:${Versions.retrofit}", -// "com.squareup.okhttp3:okhttp-ws:3.4.2", - "biz.aQute.bnd:biz.aQute.bndlib:3.5.0", + "com.squareup.okhttp3:okhttp-ws:${Versions.okhttp}", + "biz.aQute.bnd:bndlib:2.4.0", *mavenResolver("spi"), - "com.squareup.okhttp3:logging-interceptor:3.9.0", + "com.squareup.okhttp3:logging-interceptor:3.2.0", - "com.sparkjava:spark-core:2.6.0", - "org.codehaus.groovy:groovy:2.4.12", - - // Java 9 - "javax.xml.bind:jaxb-api:2.3.0", - "com.sun.xml.bind:jaxb-impl:2.3.0", - "com.sun.xml.bind:jaxb-core:2.3.0", - "com.sun.activation:javax.activation:1.2.0" + "com.sparkjava:spark-core:2.5", + "org.codehaus.groovy:groovy:2.4.8" // "org.eclipse.jetty:jetty-server:${Versions.jetty}", // "org.eclipse.jetty:jetty-servlet:${Versions.jetty}", @@ -203,7 +194,7 @@ val kobaltApp = project(kobaltPluginApi, wrapper) { dependenciesTest { compile("org.jetbrains.kotlin:kotlin-test:${Versions.kotlin}", "org.testng:testng:${Versions.testng}", - "org.assertj:assertj-core:3.8.0", + "org.assertj:assertj-core:3.4.1", *mavenResolver("util") ) } @@ -309,13 +300,13 @@ fun taskCopyVersionForWrapper(project: Project) : TaskResult { fun createPom(projectName: String, projectDescription: String) = Model().apply { name = projectName description = projectDescription - url = "https://beust.com/kobalt" + url = "http://beust.com/kobalt" licenses = listOf(License().apply { name = "Apache-2.0" - url = "https://www.apache.org/licenses/LICENSE-2.0" + url = "http://www.apache.org/licenses/LICENSE-2.0" }) scm = Scm().apply { - url = "https://github.com/cbeust/kobalt" + url = "http://github.com/cbeust/kobalt" connection = "https://github.com/cbeust/kobalt.git" developerConnection = "git@github.com:cbeust/kobalt.git" } @@ -323,4 +314,4 @@ fun createPom(projectName: String, projectDescription: String) = Model().apply { name = "Cedric Beust" email = "cedric@beust.com" }) -} +} \ No newline at end of file diff --git a/kobalt/wrapper/kobalt-wrapper.properties b/kobalt/wrapper/kobalt-wrapper.properties index 0ca8045f..35d6c10b 100644 --- a/kobalt/wrapper/kobalt-wrapper.properties +++ b/kobalt/wrapper/kobalt-wrapper.properties @@ -1 +1 @@ -kobalt.version=1.0.122 \ No newline at end of file +kobalt.version=1.0.83 \ No newline at end of file diff --git a/kobaltw-test b/kobaltw-test deleted file mode 100755 index 2693c3aa..00000000 --- a/kobaltw-test +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env sh -JAR=$(ls -1 -t kobaltBuild/libs/*.jar | grep -Ev "(sources|javadoc)" | head -1) -TEMPDIR=$(mktemp -d) -cp -pf "$JAR" "$TEMPDIR" -TEMPJAR=$TEMPDIR/$(basename "$JAR") -export KOBALT_JAR=$TEMPJAR -java -jar "$TEMPJAR" "$@" -rm -rf "$TEMPDIR" \ No newline at end of file diff --git a/modules/kobalt-plugin-api/build.gradle b/modules/kobalt-plugin-api/build.gradle deleted file mode 100644 index 56085220..00000000 --- a/modules/kobalt-plugin-api/build.gradle +++ /dev/null @@ -1,85 +0,0 @@ -plugins { - id 'org.jetbrains.kotlin.jvm' version '1.2.71' - id 'com.github.johnrengelman.shadow' version '5.0.0' -} - -dependencies { - implementation "biz.aQute.bnd:biz.aQute.bndlib:$bndlib" - implementation "com.google.code.findbugs:jsr305:$findbugs" - implementation "com.sparkjava:spark-core:$spark" - implementation "com.squareup.okhttp3:logging-interceptor:$okhttp" - implementation 'commons-io:commons-io:2.6' - implementation 'io.reactivex:rxjava:1.3.3' - implementation "javax.inject:javax.inject:$inject" - implementation "javax.xml.bind:jaxb-api:$jaxb" - implementation 'org.apache.commons:commons-compress:1.15' - implementation 'org.apache.maven:maven-aether-provider:3.3.9' - implementation "org.apache.maven.resolver:maven-resolver-api:$mavenResolver" - implementation "org.apache.maven.resolver:maven-resolver-connector-basic:$mavenResolver" - implementation "org.apache.maven.resolver:maven-resolver-impl:$mavenResolver" - implementation "org.apache.maven.resolver:maven-resolver-spi:$mavenResolver" - implementation "org.apache.maven.resolver:maven-resolver-transport-file:$mavenResolver" - implementation "org.apache.maven.resolver:maven-resolver-transport-http:$mavenResolver" - implementation "org.apache.maven.resolver:maven-resolver-util:$mavenResolver" - implementation "org.codehaus.groovy:groovy:$groovy" - implementation 'org.eclipse.jgit:org.eclipse.jgit:4.9.0.201710071750-r' - implementation "org.junit.jupiter:junit-jupiter-engine:$junitJupiter" - implementation "org.junit.platform:junit-platform-console:$junitPlatform" - implementation "org.junit.platform:junit-platform-engine:$junitPlatform" - implementation "org.junit.platform:junit-platform-runner:$junitPlatform" - implementation "org.junit.platform:junit-platform-surefire-provider:$junitPlatform" - implementation "org.junit.vintage:junit-vintage-engine:$junitJupiter" - implementation "org.slf4j:slf4j-simple:$slf4j" - implementation "org.testng:testng:$testng" - implementation 'org.testng.testng-remote:testng-remote:1.3.2' - implementation "com.beust:jcommander:$jcommander" - implementation "com.google.code.gson:gson:$gson" - implementation "com.google.inject:guice:$guice" - implementation "com.google.inject.extensions:guice-assistedinject:$guice" - implementation "com.squareup.okio:okio:$okio" - implementation "com.squareup.retrofit2:converter-gson:$retrofit" - implementation "com.squareup.retrofit2:retrofit:$retrofit" - implementation "org.apache.maven:maven-model:$maven" - implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin" -} - -shadowJar { - classifier = null -} - -test { - useTestNG() -} - -publishing { - publications { - shadow(MavenPublication) { publication -> - project.shadow.component(publication) - artifact sourcesJar - artifact javadocJar - - pom { - name = project.name - description = 'A build system in Kotlin' - url = 'https://beust.com/kobalt' - licenses { - license { - name = 'Apache-2.0' - url = 'https://www.apache.org/licenses/LICENSE-2.0' - } - } - developers { - developer { - name = 'Cedric Beust' - email = 'cedric@beust.com' - } - } - scm { - connection = 'scm:https://github.com/cbeust/kobalt.git' - developerConnection = 'scm:git@github.com:cbeust/kobalt.git' - url = 'https://github.com/cbeust/kobalt' - } - } - } - } -} diff --git a/modules/kobalt-plugin-api/pom.xml b/modules/kobalt-plugin-api/pom.xml deleted file mode 100644 index f9026387..00000000 --- a/modules/kobalt-plugin-api/pom.xml +++ /dev/null @@ -1,279 +0,0 @@ - - 4.0.0 - - com.beust - kobalt-pom - 1.1.0 - ../.. - - - kobalt-plugin-api - jar - 1.1.0 - - - - org.jetbrains.kotlin - kotlin-stdlib - ${kotlin.version} - - - org.apache.maven - maven-aether-provider - 3.3.9 - - - org.eclipse.aether - impl - - - org.eclipse.aether - spi - - - org.eclipse.aether - util - - - org.eclipse.aether - api - - - - - org.apache.maven.resolver - maven-resolver-api - ${mavenresolver.version} - - - org.apache.maven.resolver - maven-resolver-spi - ${mavenresolver.version} - - - org.apache.maven.resolver - maven-resolver-util - ${mavenresolver.version} - - - org.apache.maven.resolver - maven-resolver-impl - ${mavenresolver.version} - - - org.apache.maven.resolver - maven-resolver-connector-basic - ${mavenresolver.version} - - - org.apache.maven.resolver - maven-resolver-transport-http - ${mavenresolver.version} - - - org.apache.maven.resolver - maven-resolver-transport-file - ${mavenresolver.version} - - - io.reactivex - rxjava - 1.3.3 - - - com.squareup.okio - okio - ${okio.version} - - - javax.inject - javax.inject - 1 - compile - - - com.google.inject - guice - 4.2.2 - - - com.google.inject.extensions - guice-assistedinject - 4.2.2 - - - com.beust - jcommander - 1.72 - - - org.apache.maven - maven-model - 3.5.2 - - - com.google.code.findbugs - jsr305 - 3.0.2 - - - com.google.code.gson - gson - 2.8.2 - - - com.squareup.retrofit2 - retrofit - 2.3.0 - - - com.squareup.retrofit2 - converter-gson - 2.3.0 - - - biz.aQute.bnd - biz.aQute.bndlib - 3.5.0 - - - com.squareup.okhttp3 - logging-interceptor - ${okhttp3.version} - - - com.sparkjava - spark-core - 2.6.0 - - - org.codehaus.groovy - groovy - 2.4.12 - - - org.apache.commons - commons-compress - 1.15 - - - commons-io - commons-io - 2.6 - - - org.junit.platform - junit-platform-surefire-provider - ${junit.version} - - - org.junit.platform - junit-platform-runner - ${junit.version} - - - org.junit.platform - junit-platform-engine - ${junit.version} - - - org.junit.platform - junit-platform-console - ${junit.version} - - - org.junit.jupiter - junit-jupiter-engine - ${junitJupiter.version} - - - org.junit.vintage - junit-vintage-engine - ${junitJupiter.version} - - - org.testng.testng-remote - testng-remote - 1.3.2 - - - org.testng - testng - ${testng.version} - - - org.eclipse.jgit - org.eclipse.jgit - 4.9.0.201710071750-r - - - org.slf4j - slf4j-simple - ${slf4j.version} - - - - javax.xml.bind - jaxb-api - 2.3.0 - - - - - - - org.jetbrains.kotlin - kotlin-maven-plugin - ${kotlin.version} - - - compile - compile - - - ${project.basedir}/src/main/kotlin - - - - - test-compile - test-compile - - - ${project.basedir}/src/test/kotlin - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.5.1 - - - - default-compile - none - - - - default-testCompile - none - - - java-compile - compile - compile - - - java-test-compile - test-compile - testCompile - - - - - - \ No newline at end of file diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Args.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Args.kt index 372f1ba1..b8cdc2fe 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Args.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Args.kt @@ -61,9 +61,6 @@ class Args { @Parameter(names = arrayOf("--noIncremental"), description = "Turn off incremental builds") var noIncremental: Boolean = false - @Parameter(names = arrayOf("--offline"), description = "Don't try to download dependencies even if there is no cached version") - var offline: Boolean = false - @Parameter(names = arrayOf("--plugins"), description = "Comma-separated list of plug-in Maven id's") var pluginIds: String? = null @@ -104,8 +101,5 @@ class Args { @Parameter(names = arrayOf("--update"), description = "Update to the latest version of Kobalt") var update: Boolean = false - - @Parameter(names = arrayOf("--version"), description = "Display the current version of Kobalt") - var version: Boolean = false } diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Constants.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Constants.kt index 8eb73c84..e7a6c3dd 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Constants.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Constants.kt @@ -9,13 +9,13 @@ object Constants { val BUILD_FILE_NAME = "Build.kt" val BUILD_FILE_DIRECTORY = "kobalt/src" val BUILD_FILE_PATH = KFiles.joinDir(BUILD_FILE_DIRECTORY, BUILD_FILE_NAME) - val KOTLIN_COMPILER_VERSION = "1.2.70" + val KOTLIN_COMPILER_VERSION = "1.1.2" internal val DEFAULT_REPOS = listOf( // "https://maven-central.storage.googleapis.com/", - HostConfig("https://repo1.maven.org/maven2/", "Maven"), + HostConfig("http://repo1.maven.org/maven2/", "Maven"), HostConfig("https://jcenter.bintray.com/", "JCenter") -// "https://repository.jetbrains.com/all/", // <-- contains snapshots +// "http://repository.jetbrains.com/all/", // <-- contains snapshots // snapshots // "https://oss.sonatype.org/content/repositories/snapshots/" diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Jvm.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Jvm.kt index 14c55efd..598ca401 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Jvm.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Jvm.kt @@ -67,7 +67,7 @@ open class Jvm constructor( return toolsJar } if (javaHome!!.name.equals("jre", true)) { - _javaHome = javaHome!!.parentFile + javaHome = javaHome!!.parentFile toolsJar = File(javaHome, "lib/tools.jar") if (toolsJar.exists()) { return toolsJar @@ -78,7 +78,7 @@ open class Jvm constructor( val version = SystemProperties.Companion.javaVersion if (javaHome!!.name.toRegex().matches("jre\\d+") || javaHome!!.name == "jre$version") { - _javaHome = File(javaHome!!.parentFile, "jdk$version") + javaHome = File(javaHome!!.parentFile, "jdk$version") toolsJar = File(javaHome, "lib/tools.jar") if (toolsJar.exists()) { return toolsJar diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Variant.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Variant.kt index 13120fa0..d15327b1 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Variant.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Variant.kt @@ -126,62 +126,61 @@ class Variant(val initialProductFlavor: ProductFlavorConfig? = null, var generatedSourceDirectory: File? = null - private fun findBuildTypeBuildConfig(project: Project, variant: Variant?) : BuildConfig? { - val buildTypeName = variant?.buildType?.name - return project.buildTypes[buildTypeName]?.buildConfig - } - - private fun findProductFlavorBuildConfig(project: Project, variant: Variant?) : BuildConfig? { - val buildTypeName = variant?.productFlavor?.name - return project.productFlavors[buildTypeName]?.buildConfig - } +// private fun findBuildTypeBuildConfig(project: Project, variant: Variant?) : BuildConfig? { +// val buildTypeName = variant?.buildType?.name +// return project.buildTypes[buildTypeName]?.buildConfig +// } +// +// private fun findProductFlavorBuildConfig(project: Project, variant: Variant?) : BuildConfig? { +// val buildTypeName = variant?.productFlavor?.name +// return project.productFlavors[buildTypeName]?.buildConfig +// } /** * Return a list of the BuildConfigs found on the productFlavor{}, buildType{} and project{} (in that order). */ - private fun findBuildConfigs(project: Project, variant: Variant?) : List { - val result = listOf( - findBuildTypeBuildConfig(project, variant), - findProductFlavorBuildConfig(project, variant), - project.buildConfig) - .filterNotNull() - - return result - } +// private fun findBuildConfigs(project: Project, variant: Variant?) : List { +// val result = listOf( +// findBuildTypeBuildConfig(project, variant), +// findProductFlavorBuildConfig(project, variant), +// project.buildConfig) +// .filterNotNull() +// +// return result +// } /** * Generate BuildConfig.java if requested. Also look up if any BuildConfig is defined on the current build type, * product flavor or main project, and use them to generateAndSave any additional field (in that order to * respect the priorities). Return the generated file if it was generated, null otherwise. */ - fun maybeGenerateBuildConfig(project: Project, context: KobaltContext) : File? { - val buildConfigs = findBuildConfigs(project, this) - - if (buildConfigs.size > 0) { - val pkg = project.packageName ?: project.group - ?: throw KobaltException( - "packageName needs to be defined on the project in order to generateAndSave BuildConfig") - - val contributor = ActorUtils.selectAffinityActor(project, context, - context.pluginInfo.buildConfigContributors) - if (contributor != null) { - val code = contributor.generateBuildConfig(project, context, pkg, this, buildConfigs) - val result = KFiles.makeDir(KFiles.generatedSourceDir(project, this, "buildConfig")) - // Make sure the generatedSourceDirectory doesn't contain the project.directory since - // that directory will be added when trying to find recursively all the sources in it - generatedSourceDirectory = result.relativeTo(File(project.directory)) - val outputGeneratedSourceDirectory = File(result, pkg.replace('.', File.separatorChar)) - val outputDir = File(outputGeneratedSourceDirectory, "BuildConfig." + contributor.buildConfigSuffix) - KFiles.saveFile(outputDir, code) - context.logger.log(project.name, 2, "Generated ${outputDir.path}") - return result - } else { - throw KobaltException("Couldn't find a contributor to generateAndSave BuildConfig") - } - } else { - return null - } - } +// fun maybeGenerateBuildConfig(project: Project, context: KobaltContext) : File? { +// val buildConfigs = findBuildConfigs(project, this) +// +// if (buildConfigs.size > 0) { +// val pkg = project.packageName ?: project.group +// ?: throw KobaltException( +// "packageName needs to be defined on the project in order to generateAndSave BuildConfig") +// +// val contributor = ActorUtils.selectAffinityActor(context.pluginInfo.buildConfigContributors, project) +// if (contributor != null) { +// val code = contributor.generateBuildConfig(project, context, pkg, this, buildConfigs) +// val result = KFiles.makeDir(KFiles.generatedSourceDir(project, this, "buildConfig")) +// // Make sure the generatedSourceDirectory doesn't contain the project.directory since +// // that directory will be added when trying to find recursively all the sources in it +// generatedSourceDirectory = result.relativeTo(File(project.directory)) +// val outputGeneratedSourceDirectory = File(result, pkg.replace('.', File.separatorChar)) +// val outputDir = File(outputGeneratedSourceDirectory, "BuildConfig." + contributor.buildConfigSuffix) +// KFiles.saveFile(outputDir, code) +// context.logger.log(project.name, 2, "Generated ${outputDir.path}") +// return result +// } else { +// throw KobaltException("Couldn't find a contributor to generateAndSave BuildConfig") +// } +// } else { +// return null +// } +// } override fun toString() = toTask("") diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/IBuildConfigContributor.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/IBuildConfigContributor.kt index ef9d3b4d..35553f74 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/IBuildConfigContributor.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/IBuildConfigContributor.kt @@ -5,7 +5,7 @@ import com.beust.kobalt.Variant /** * Plug-ins that can generate a BuildConfig file. */ -interface IBuildConfigContributor : IProjectAffinity { +interface IBuildConfigContributor : ISimpleAffinity { fun generateBuildConfig(project: Project, context: KobaltContext, packageName: String, variant: Variant, buildConfigs: List) : String diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/Archives.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/Archives.kt index 5334e09f..f8bd656c 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/Archives.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/Archives.kt @@ -17,8 +17,7 @@ class Archives { @ExportedProjectProperty(doc = "The name of the a jar file with a main() method", type = "String") const val JAR_NAME_WITH_MAIN_CLASS = "jarNameWithMainClass" - fun defaultArchiveName(project: Project) = project.name + - if (project.version.isNullOrBlank()) "" else "-${project.version}" + fun defaultArchiveName(project: Project) = project.name + "-" + project.version fun generateArchive(project: Project, context: KobaltContext, diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/MetaArchive.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/MetaArchive.kt index c217c83e..ddb1e727 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/MetaArchive.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/archive/MetaArchive.kt @@ -9,6 +9,7 @@ import java.io.Closeable import java.io.File import java.io.FileInputStream import java.io.FileOutputStream +import java.nio.file.Files import java.util.jar.Manifest import org.apache.commons.compress.archivers.zip.ZipFile as ApacheZipFile @@ -18,39 +19,18 @@ import org.apache.commons.compress.archivers.zip.ZipFile as ApacheZipFile */ class MetaArchive(outputFile: File, val manifest: Manifest?) : Closeable { companion object { - const val MANIFEST_MF = "META-INF/MANIFEST.MF" + val MANIFEST_MF = "META-INF/MANIFEST.MF" } - private val zos= ZipArchiveOutputStream(outputFile).apply { + private val zos = ZipArchiveOutputStream(outputFile).apply { encoding = "UTF-8" } - init { - // If no manifest was passed, create an empty one so it's the first one in the archive - val m = manifest ?: Manifest() - val manifestFile = File.createTempFile("kobalt", "tmpManifest") - addEntry(ZipArchiveEntry("META-INF/"), null) - if (manifest != null) { - FileOutputStream(manifestFile).use { fos -> - m.write(fos) - } - } - val entry = zos.createArchiveEntry(manifestFile, MetaArchive.MANIFEST_MF) - addEntry(entry, FileInputStream(manifestFile)) - } - - fun addFile(f: File, entryFile: File, path: String?) { - maybeCreateParentDirectories(f) - addFile2(f, entryFile, path) - } - - private fun addFile2(f: File, entryFile: File, path: String?) { val file = f.normalize() FileInputStream(file).use { inputStream -> val actualPath = KFiles.fixSlashes(if (path != null) path + entryFile.path else entryFile.path) ZipArchiveEntry(actualPath).let { entry -> - maybeCreateParentDirectories(File(actualPath)) maybeAddEntry(entry) { addEntry(entry, inputStream) } @@ -58,30 +38,6 @@ class MetaArchive(outputFile: File, val manifest: Manifest?) : Closeable { } } - private val createdDirs = hashSetOf() - - /** - * For an entry a/b/c/File, an entry needs to be created for each individual directory: - * a/ - * a/b/ - * a/b/c - * a/b/c/File - */ - private fun maybeCreateParentDirectories(file: File) { - val toCreate = arrayListOf() - var current = file.parentFile - while (current != null && current.path != ".") { - if (!createdDirs.contains(current.path)) { - toCreate.add(0, KFiles.fixSlashes(current) + "/") - createdDirs.add(current.path) - } - current = current.parentFile - } - toCreate.forEach { dir -> - addEntry(ZipArchiveEntry(dir), null) - } - } - fun addArchive(jarFile: File) { ApacheZipFile(jarFile).use { jar -> val jarEntries = jar.entries @@ -93,33 +49,40 @@ class MetaArchive(outputFile: File, val manifest: Manifest?) : Closeable { } } + private val DEFAULT_JAR_EXCLUDES = + Glob("META-INF/*.SF", "META-INF/*.DSA", "META-INF/*.RSA") + private val seen = hashSetOf() - private fun okToAdd(name: String) : Boolean { - val result = !KFiles.isExcluded(name, - Glob("META-INF/*.SF", "META-INF/*.DSA", "META-INF/*.RSA", MANIFEST_MF)) -// if (name.startsWith("META-INF")) println((if (result) "ADDING" else "NOT ADDING") + " $name") - return result + private fun okToAdd(name: String): Boolean = ! seen.contains(name) + && ! KFiles.isExcluded(name, DEFAULT_JAR_EXCLUDES) + + override fun close() { + if (manifest != null) { + Files.createTempFile("aaa", "bbb").toFile().let { manifestFile -> + FileOutputStream(manifestFile).use { fos -> + manifest.write(fos) + } + + val entry = zos.createArchiveEntry(manifestFile, MetaArchive.MANIFEST_MF) + addEntry(entry, FileInputStream(manifestFile)) + } + } + zos.close() } - override fun close() = zos.close() - - private fun addEntry(entry: ArchiveEntry, inputStream: FileInputStream?) { + private fun addEntry(entry: ArchiveEntry, inputStream: FileInputStream) { zos.putArchiveEntry(entry) - inputStream?.use { ins -> + inputStream.use { ins -> ins.copyTo(zos, 50 * 1024) } zos.closeArchiveEntry() } - private val seen = hashSetOf() - private fun maybeAddEntry(entry: ArchiveEntry, action:() -> Unit) { - entry.name.let { name -> - if (!seen.contains(name) && okToAdd(name)) { - action() - } - seen.add(name) + if (okToAdd(entry.name)) { + action() } + seen.add(entry.name) } } diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/DocUrl.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/DocUrl.kt index 93010294..8acab0ab 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/DocUrl.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/DocUrl.kt @@ -2,7 +2,7 @@ package com.beust.kobalt.internal class DocUrl { companion object { - private const val HOST = "https://beust.com/kobalt/" + private const val HOST = "http://beust.com/kobalt/" private fun url(path: String) = HOST + path val PUBLISH_PLUGIN_URL = url("plug-ins/index.html#publishing") diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/GenericRunner.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/GenericRunner.kt index 995dba53..fb2b0927 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/GenericRunner.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/GenericRunner.kt @@ -112,11 +112,10 @@ abstract class GenericTestRunner: ITestRunnerContributor { configName: String) : TestResult { var result = false - context.logger.log(project.name, 1, "Running tests with $runnerName") + context.logger.log(project.name, 1, "Running tests with " + runnerName) val testConfig = project.testConfigs.firstOrNull { it.name == configName } - var errorCode = -1 if (testConfig != null) { val args = args(project, context, classpath, testConfig) if (args.size > 0) { @@ -137,7 +136,12 @@ abstract class GenericTestRunner: ITestRunnerContributor { context.logger.log(project.name, 2, "Running tests with classpath size ${classpath.size}") context.logger.log(project.name, 2, "Launching " + allArgs.joinToString(" ")) val process = pb.start() - errorCode = process.waitFor() + val errorCode = process.waitFor() + if (errorCode == 0) { + context.logger.log(project.name, 1, "All tests passed") + } else { + context.logger.log(project.name, 1, "Test failures") + } result = result || errorCode == 0 } else { context.logger.log(project.name, 1, " No tests to run") @@ -148,13 +152,6 @@ abstract class GenericTestRunner: ITestRunnerContributor { } onFinish(project) - - if (errorCode == 0) { - context.logger.log(project.name, 1, "All tests passed") - } else { - context.logger.log(project.name, 1, longMessage!!) - } - return TestResult(result, shortMessage, longMessage) } diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JUnit5Runner.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JUnit5Runner.kt index 2e9b534c..7dd72df7 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JUnit5Runner.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JUnit5Runner.kt @@ -35,8 +35,7 @@ class JUnit5Runner @Inject constructor(kFiles: KFiles) : GenericTestRunner() { override fun affinity(project: Project, context: KobaltContext) : Int { val result = - if (project.testDependencies.any { it.id.contains("junit5") || it.id.contains("jupiter") }) - IAffinity.DEFAULT_POSITIVE_AFFINITY + 100 + if (project.testDependencies.any { it.id.contains("jupiter") }) IAffinity.DEFAULT_POSITIVE_AFFINITY + 100 else 0 return result diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt index 5e2a9354..26884af3 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt @@ -157,10 +157,6 @@ open class JvmCompilerPlugin @Inject constructor( if (compilerContributors.isEmpty()) { throw KobaltException("Couldn't find any compiler for project ${project.name}") } else { - - // Generate BuildConfig if applicable - context.variant.maybeGenerateBuildConfig(project, context) - val allCompilers = compilerContributors.flatMap { it.compilersFor(project, context)}.sorted() /** @@ -187,8 +183,8 @@ open class JvmCompilerPlugin @Inject constructor( var done = false // The directory where the classes get compiled val buildDirectory = - if (isTest) File(KFiles.joinDir(project.buildDirectory, KFiles.TEST_CLASSES_DIR)) - else File(KFiles.joinDir(project.classesDir(context))) + if (isTest) File(project.buildDirectory, KFiles.TEST_CLASSES_DIR) + else File(project.classesDir(context)) allCompilersSorted.doWhile({ ! done }) { compiler -> val compilerResults = compilerUtils.invokeCompiler(project, context, compiler, diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/KotlinJarFiles.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/KotlinJarFiles.kt index 123e8b76..3f29427a 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/KotlinJarFiles.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/KotlinJarFiles.kt @@ -16,5 +16,6 @@ class KotlinJarFiles @Inject constructor(val dependencyManager: DependencyManage } val stdlib: File get() = getKotlinCompilerJar("stdlib") + val runtime: File get() = getKotlinCompilerJar("runtime") val compiler: File get() = getKotlinCompilerJar("compiler-embeddable") } diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TestNgRunner.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TestNgRunner.kt index f4ee96f8..345919c9 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TestNgRunner.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/TestNgRunner.kt @@ -14,14 +14,11 @@ import org.testng.remote.strprotocol.MessageHelper import org.testng.remote.strprotocol.MessageHub import org.testng.remote.strprotocol.TestResultMessage import org.w3c.dom.Attr -import org.w3c.dom.NodeList import org.xml.sax.InputSource import java.io.File import java.io.FileReader import java.io.IOException import javax.xml.parsers.DocumentBuilderFactory -import javax.xml.xpath.XPathConstants -import javax.xml.xpath.XPathFactory class TestNgRunner : GenericTestRunner() { @@ -30,10 +27,7 @@ class TestNgRunner : GenericTestRunner() { override val annotationPackage = "org.testng" override val runnerName = "TestNG" - private fun defaultOutputWithoutProjectDir(project: Project) - = KFiles.joinDir(project.buildDirectory, "test-output") - private fun defaultOutput(project: Project) - = KFiles.joinDir(project.directory, project.buildDirectory, "test-output") + fun defaultOutput(project: Project) = KFiles.joinDir(project.buildDirectory, "test-output") override fun args(project: Project, context: KobaltContext, classpath: List, testConfig: TestConfig) = arrayListOf().apply { @@ -45,9 +39,7 @@ class TestNgRunner : GenericTestRunner() { if (testConfig.testArgs.none { it == "-d" }) { add("-d") - // Don't include the project directory here since the generic runner will cd to that directory before - // running the tests - add(defaultOutputWithoutProjectDir(project)) + add(defaultOutput(project)) } if (testConfig.testArgs.size == 0) { @@ -85,15 +77,6 @@ class TestNgRunner : GenericTestRunner() { var failed = 0 var skipped = 0 var passed = 0 - val xp = XPathFactory.newInstance().newXPath() - val testMethods = xp.compile("/testng-results/suite/test/class/test-method[@status='FAIL']") - .evaluate(doc, XPathConstants.NODESET) - as NodeList - val failedMethods = arrayListOf() - repeat(testMethods.length) { - val tm = testMethods.item(it) - failedMethods.add(tm.attributes.getNamedItem("signature").textContent) - } repeat(root.attributes.length) { val attribute = root.attributes.item(it) if (attribute is Attr) when (attribute.name) { @@ -107,7 +90,6 @@ class TestNgRunner : GenericTestRunner() { shortMessage = "$passed tests" } else if (failed > 0) { shortMessage = "$failed failed" + (if (skipped > 0) ", $skipped skipped" else "") + " tests" - longMessage = "Failed tests:\n " + failedMethods.joinToString("\n ") } } } diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/Gpg.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/Gpg.kt index 60a4335c..f4b796e1 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/Gpg.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/Gpg.kt @@ -45,23 +45,29 @@ class Gpg @Inject constructor(val localProperties: LocalProperties) { val allArgs = arrayListOf() allArgs.add(gpg) - fun maybeAdd(prop: String, f: (String) -> Unit) = localProperties.getNoThrows(prop)?.let { - f(it) + val pwd = localProperties.getNoThrows("gpg.password") + if (! pwd.isNullOrBlank()) { + allArgs.add("--passphrase") + allArgs.add(pwd) + allArgs.add("--batch") + allArgs.add("--yes") } - maybeAdd("gpg.password") { - allArgs.addAll(listOf("--passphrase", it, "--batch", "--yes")) + val keyId = localProperties.getNoThrows("gpg.keyId") + if (! keyId.isNullOrBlank()) { + allArgs.add("--local-user") + allArgs.add(keyId) } - maybeAdd("gpg.keyId") { - allArgs.addAll(listOf("--local-user", it)) - } - maybeAdd("gpg.secretKeyRingFile") { - allArgs.addAll(listOf("--secret-keyring", "\"$it\"")) + + val keyRing = localProperties.getNoThrows("gpg.secretKeyRingFile") + if (! keyRing.isNullOrBlank()) { + allArgs.add("--secret-keyring") + allArgs.add("\"$keyRing\"") } allArgs.add("-ab") allArgs.add(file.absolutePath) - + val pb = ProcessBuilder(allArgs) pb.directory(directory) kobaltLog(2, "Signing file: " + allArgs.joinToString(" ")) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/aether/Booter.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/aether/Booter.kt index 02917929..e3b52dcd 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/aether/Booter.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/aether/Booter.kt @@ -2,7 +2,6 @@ package com.beust.kobalt.maven.aether import com.beust.kobalt.internal.KobaltSettings import com.google.common.eventbus.EventBus -import com.beust.kobalt.Args import org.eclipse.aether.DefaultRepositorySystemSession import org.eclipse.aether.RepositorySystem import org.eclipse.aether.repository.LocalRepository @@ -33,9 +32,8 @@ object Booter { // } fun newRepositorySystemSession(system: RepositorySystem, repo: File, settings: KobaltSettings, - args: Args, eventBus: EventBus): DefaultRepositorySystemSession { + eventBus: EventBus): DefaultRepositorySystemSession { val session = MavenRepositorySystemUtils.newSession(settings) - session.isOffline = args.offline val localRepo = LocalRepository(repo.absolutePath) session.localRepositoryManager = system.newLocalRepositoryManager(session, localRepo) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/aether/KobaltMavenResolver.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/aether/KobaltMavenResolver.kt index 7c8b705f..06a7c993 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/aether/KobaltMavenResolver.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/maven/aether/KobaltMavenResolver.kt @@ -52,7 +52,7 @@ class KobaltMavenResolver @Inject constructor(val settings: KobaltSettings, } fun error(s1: String, s2: String) { throw KobaltException("Found \"$s1\" but not \"$s2\" in local.properties for ${Kurl.KEY}.$host", - docUrl = "https://beust.com/kobalt/documentation/index.html#maven-repos-authenticated") + docUrl = "http://beust.com/kobalt/documentation/index.html#maven-repos-authenticated") } if (! hostInfo.username.isNullOrBlank() && hostInfo.password.isNullOrBlank()) { error("username", "password") @@ -141,7 +141,7 @@ class KobaltMavenResolver @Inject constructor(val settings: KobaltSettings, fun create(id: String, optional: Boolean) = AetherDependency(DefaultArtifact(id), optional, args) private val system = Booter.newRepositorySystem() - private val session = Booter.newRepositorySystemSession(system, localRepo.localRepo, settings, args, eventBus) + private val session = Booter.newRepositorySystemSession(system, localRepo.localRepo, settings, eventBus) private fun createRepo(hostConfig: HostConfig) : RemoteRepository { val builder = RemoteRepository.Builder(hostConfig.name, "default", hostConfig.url) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/Git.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/Git.kt index cf6b5885..f8892390 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/Git.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/Git.kt @@ -6,11 +6,10 @@ import com.google.inject.Inject import java.io.File class Git @Inject constructor() { - fun maybeTagRelease(project: Project, uploadResult: TaskResult, enabled: Boolean, annotated: Boolean, - push: Boolean, tag: String, message: String) : TaskResult { + fun maybeTagRelease(project: Project, uploadResult: TaskResult, enabled: Boolean, annotated: Boolean, tag: String, message: String) : TaskResult { val result = if (uploadResult.success && enabled) { - val tagSuccess = tagRelease(project, annotated, push, tag, message) + val tagSuccess = tagRelease(project, annotated, tag, message) if (! tagSuccess) { TaskResult(false, errorMessage = "Couldn't tag the project") } else { @@ -22,7 +21,7 @@ class Git @Inject constructor() { return result } - private fun tagRelease(project: Project, annotated: Boolean, push: Boolean, tag: String, message: String) : Boolean { + private fun tagRelease(project: Project, annotated: Boolean, tag: String, message: String) : Boolean { val version = if (tag.isNullOrBlank()) project.version else tag val success = try { log(2, "Tagging this release as \"$version\"") @@ -38,9 +37,7 @@ class Git @Inject constructor() { } else { git.tag().setName(version).setMessage(message).call() } - if (push) { - git.push().setPushTags().call() - } + git.push().setPushTags().call() true } catch(ex: Exception) { warn("Couldn't create tag ${version}: ${ex.message}", ex) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/GithubApi2.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/GithubApi2.kt index b33286e0..9f89a01d 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/GithubApi2.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/GithubApi2.kt @@ -86,12 +86,12 @@ class GithubApi2 @Inject constructor( .execute() val code = response.code() if (code != Http.CREATED) { - val error = Gson().fromJson(response.errorBody()?.string(), RetrofitError::class.java) + val error = Gson().fromJson(response.errorBody().string(), RetrofitError::class.java) throw KobaltException("Couldn't upload release, ${error.message}: " + error.errors[0].code) } else { val body = response.body() - uploadAsset(accessToken, body?.uploadUrl!!, Http.TypedFile("application/zip", zipFile), tagName) + uploadAsset(accessToken, body.uploadUrl!!, Http.TypedFile("application/zip", zipFile), tagName) .toBlocking() .forEach { action -> kobaltLog(1, "\n${zipFile.name} successfully uploaded") @@ -120,8 +120,8 @@ class GithubApi2 @Inject constructor( Duration.between(VersionCheckTimestampFile.timestamp, Instant.now())) { kobaltLog(2, "Skipping GitHub latest release check, too soon.") } else { - val username = localProperties.getNoThrows(PROPERTY_USERNAME) - val accessToken = localProperties.getNoThrows(PROPERTY_ACCESS_TOKEN) + val username = localProperties.getNoThrows(PROPERTY_USERNAME, DOC_URL) + val accessToken = localProperties.getNoThrows(PROPERTY_ACCESS_TOKEN, DOC_URL) try { val req = if (username != null && accessToken != null) { @@ -138,8 +138,8 @@ class GithubApi2 @Inject constructor( val releases = ex.body() if (releases != null) { releases.firstOrNull()?.let { - result = try { - listOf(it.name, it.tagName).filterNotNull().first { !it.isBlank() } + try { + result = listOf(it.name, it.tagName).filterNotNull().first { !it.isBlank() } } catch(ex: NoSuchElementException) { throw KobaltException("Couldn't find the latest release") } diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KFiles.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KFiles.kt index fcf5b86a..9b91a898 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KFiles.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KFiles.kt @@ -55,13 +55,10 @@ class KFiles { val previousVersion = latestInstalledVersion().version val previousJar = joinDir(distributionsDir, "kobalt-" + previousVersion, "kobalt/wrapper/kobalt-$previousVersion.jar") - latestInstalledVersion() + val v = latestInstalledVersion() val result = listOf("", "modules/kobalt-plugin-api", "modules/wrapper").map { - File(homeDir(KFiles.joinDir("kotlin", "kobalt", it, "kobaltBuild", "classes"))) //kobalt build dirs - .absolutePath - } + listOf("modules/kobalt", "modules/kobalt-plugin-api", "modules/wrapper").map { - File(homeDir(KFiles.joinDir("kotlin", "kobalt", it, "target", "classes"))) //maven build dirs - .absolutePath + File(homeDir(KFiles.joinDir("kotlin", "kobalt", it, "kobaltBuild", "classes"))) + .absolutePath } + listOf(previousJar) debug("Couldn't find ${jarFile.absolutePath}, using\n " + result.joinToString(" ")) return result.filter { File(it).exists() } diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KobaltLogger.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KobaltLogger.kt index e2bd89de..67d31496 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KobaltLogger.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KobaltLogger.kt @@ -51,7 +51,7 @@ fun Any.error(text: CharSequence, e: Throwable? = null) { object KobaltLogger { var LOG_LEVEL: Int = 1 - + val isQuiet: Boolean get() = (LOG_LEVEL == Constants.LOG_QUIET_LEVEL) val logger: Logger get() = @@ -60,14 +60,6 @@ object KobaltLogger { } else { Logger(false) } - - fun setLogLevel(args: Args) { - LOG_LEVEL = when { - args.log < Constants.LOG_QUIET_LEVEL -> Constants.LOG_DEFAULT_LEVEL - args.log > Constants.LOG_MAX_LEVEL -> Constants.LOG_MAX_LEVEL - else -> args.log - } - } } class Logger(val dev: Boolean) { diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KobaltWrapperProperties.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KobaltWrapperProperties.kt index a7b5177d..06d01e7b 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KobaltWrapperProperties.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/KobaltWrapperProperties.kt @@ -24,7 +24,7 @@ class KobaltWrapperProperties @Inject constructor() { } private fun defaultUrlFor(version: String) = - "https://beust.com/kobalt/kobalt-$version.zip" + "http://beust.com/kobalt/kobalt-$version.zip" private val file: File get() = File("$WRAPPER_DIR/$KOBALT_WRAPPER_PROPERTIES") diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/LocalProperties.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/LocalProperties.kt index 2cf0775e..64cecbb4 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/LocalProperties.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/LocalProperties.kt @@ -25,10 +25,10 @@ class LocalProperties { result } - fun getNoThrows(name: String): String? = localProperties.getProperty(name) + fun getNoThrows(name: String, docUrl: String? = null): String? = localProperties.getProperty(name, docUrl) fun get(name: String, docUrl: String? = null) : String { - val result = getNoThrows(name) + val result = getNoThrows(name, docUrl) ?: throw KobaltException("Couldn't find $name in local.properties", docUrl = docUrl) return result } diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/NewRunCommand.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/NewRunCommand.kt index e105133b..7188cf10 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/NewRunCommand.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/NewRunCommand.kt @@ -19,7 +19,6 @@ class RunCommandInfo { */ var useErrorStreamAsErrorIndicator : Boolean = true var useInputStreamAsErrorIndicator : Boolean = false - var ignoreExitValue : Boolean = false var errorCallback: Function1, Unit> = NewRunCommand.DEFAULT_ERROR var successCallback: Function1, Unit> = NewRunCommand.DEFAULT_SUCCESS @@ -79,11 +78,7 @@ open class NewRunCommand(val info: RunCommandInfo) { val process = pb.start() // Run the command and collect the return code and streams - val processFinished = process.waitFor(120, TimeUnit.SECONDS) - - if (!processFinished) - kobaltError("process timed out!") - + val returnCode = process.waitFor(30, TimeUnit.SECONDS) val input = if (process.inputStream.available() > 0) fromStream(process.inputStream) else listOf() @@ -91,19 +86,13 @@ open class NewRunCommand(val info: RunCommandInfo) { if (process.errorStream.available() > 0) fromStream(process.errorStream) else listOf() - kobaltLog(3, "info contains errors: " + (info.containsErrors != null)) - // Check to see if the command succeeded val isSuccess = if (info.containsErrors != null) ! info.containsErrors!!(error) - else isSuccess(if (info.ignoreExitValue) true else processFinished, input, error) + else isSuccess(returnCode, input, error) if (isSuccess) { - if (!info.useErrorStreamAsErrorIndicator) { - info.successCallback(error + input) - } else { - info.successCallback(input) - } + info.successCallback(input) } else { info.errorCallback(error + input) } @@ -116,7 +105,7 @@ open class NewRunCommand(val info: RunCommandInfo) { * have various ways to signal errors. */ open protected fun isSuccess(isSuccess: Boolean, input: List, error: List) : Boolean { - var hasErrors: Boolean = ! isSuccess + var hasErrors = ! isSuccess if (info.useErrorStreamAsErrorIndicator && ! hasErrors) { hasErrors = hasErrors || error.isNotEmpty() } diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/StringVersion.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/StringVersion.kt index b421e558..fc620554 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/StringVersion.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/misc/StringVersion.kt @@ -29,12 +29,8 @@ class StringVersion(val version: String) : Comparable { if (v1 < v2) return -1 else if (v1 > v2) return 1 } catch(ex: NumberFormatException) { - if (version == other.toString()) { - return 0 - } else { - log(2, "Couldn't parse version $version or $other") - return -1 - } + warn("Couldn't parse version $version or $other") + return -1 } } return 0 diff --git a/modules/kobalt/build.gradle b/modules/kobalt/build.gradle deleted file mode 100644 index 57e009c7..00000000 --- a/modules/kobalt/build.gradle +++ /dev/null @@ -1,79 +0,0 @@ -plugins { - id 'org.jetbrains.kotlin.jvm' version '1.2.71' - id 'com.github.johnrengelman.shadow' version '5.0.0' -} - -dependencies { - implementation project(':wrapper') - implementation project(':kobalt-plugin-api') - implementation "biz.aQute.bnd:biz.aQute.bndlib:$bndlib" - implementation 'com.github.spullara.mustache.java:compiler:0.9.5' - implementation "com.google.code.findbugs:jsr305:$findbugs" - implementation "com.sparkjava:spark-core:$spark" - implementation "com.squareup.okhttp3:logging-interceptor:$okhttp" - implementation 'com.sun.activation:javax.activation:1.2.0' - implementation "com.sun.xml.bind:jaxb-core:$jaxb" - implementation "com.sun.xml.bind:jaxb-impl:$jaxb" - implementation "javax.inject:javax.inject:$inject" - implementation "javax.xml.bind:jaxb-api:$jaxb" - implementation "org.apache.maven.resolver:maven-resolver-spi:$mavenResolver" - implementation "org.codehaus.groovy:groovy:$groovy" - implementation "com.beust:jcommander:$jcommander" - implementation "com.google.code.gson:gson:$gson" - implementation "com.google.inject:guice:$guice" - implementation "com.google.inject.extensions:guice-assistedinject:$guice" - implementation "com.squareup.retrofit2:converter-gson:$retrofit" - implementation "com.squareup.retrofit2:retrofit:$retrofit" - implementation "org.apache.maven:maven-model:$maven" - implementation "org.jetbrains.kotlin:kotlin-compiler-embeddable:$kotlin" - implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin" - testImplementation 'org.assertj:assertj-core:3.8.0' - testImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin" - testImplementation "org.testng:testng:$testng" -} - -sourceSets { - main.kotlin.srcDirs += "${rootProject.projectDir}../../src/main/kotlin" - test.kotlin.srcDirs += "${rootProject.projectDir}../../src/test/kotlin" -} - -shadowJar { - classifier = null -} - -test { - useTestNG() -} - -publishing { - publications { - shadow(MavenPublication) { publication -> - project.shadow.component(publication) - artifact sourcesJar - artifact javadocJar - - pom { - name = project.name - description = 'A build system in Kotlin' - url = 'https://beust.com/kobalt' - licenses { - license { - name = 'Apache-2.0' - url = 'https://www.apache.org/licenses/LICENSE-2.0' - } - } - developers { - developer { - name = 'Cedric Beust' - email = 'cedric@beust.com' - } - } - scm { - connection = 'scm:https://github.com/cbeust/kobalt.git' - developerConnection = 'scm:git@github.com:cbeust/kobalt.git' - url = 'https://github.com/cbeust/kobalt' - } - } - } - } -} diff --git a/modules/kobalt/pom.xml b/modules/kobalt/pom.xml deleted file mode 100644 index 44dc799c..00000000 --- a/modules/kobalt/pom.xml +++ /dev/null @@ -1,231 +0,0 @@ - - 4.0.0 - - com.beust - kobalt-pom - 1.1.0 - ../.. - - - kobalt - jar - 1.1.0 - - - - com.beust - kobalt-plugin-api - 1.1.0 - - - com.beust - wrapper - 1.1.0 - - - org.jetbrains.kotlin - kotlin-compiler-embeddable - ${kotlin.version} - - - org.jetbrains.kotlin - kotlin-stdlib - ${kotlin.version} - - - com.github.spullara.mustache.java - compiler - 0.9.5 - compile - - - javax.inject - javax.inject - 1 - compile - - - com.google.inject - guice - 4.2.2 - - - com.google.inject.extensions - guice-assistedinject - 4.2.2 - - - com.beust - jcommander - 1.72 - - - org.apache.maven - maven-model - 3.5.2 - - - com.google.code.findbugs - jsr305 - 3.0.2 - - - com.google.code.gson - gson - 2.8.2 - - - com.squareup.retrofit2 - retrofit - 2.3.0 - - - com.squareup.retrofit2 - converter-gson - 2.3.0 - - - biz.aQute.bnd - biz.aQute.bndlib - 3.5.0 - - - com.squareup.okhttp3 - logging-interceptor - ${okhttp3.version} - - - com.sparkjava - spark-core - 2.6.0 - - - org.codehaus.groovy - groovy - 2.4.12 - - - org.apache.maven.resolver - maven-resolver-spi - ${mavenresolver.version} - - - - javax.xml.bind - jaxb-api - 2.3.0 - - - com.sun.xml.bind - jaxb-impl - 2.3.0 - - - com.sun.xml.bind - jaxb-core - 2.3.0 - - - com.sun.activation - javax.activation - 1.2.0 - - - - org.assertj - assertj-core - 3.8.0 - test - - - org.jetbrains.kotlin - kotlin-test - ${kotlin.version} - test - - - org.testng - testng - ${testng.version} - test - - - - - - - org.jetbrains.kotlin - kotlin-maven-plugin - ${kotlin.version} - - - compile - compile - - - ${project.basedir}../../src/main/kotlin - - - - - test-compile - test-compile - - - ${project.basedir}../../src/test/kotlin - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.5.1 - - - - default-compile - none - - - - default-testCompile - none - - - java-compile - compile - compile - - - java-test-compile - test-compile - testCompile - - - - - org.apache.maven.plugins - maven-shade-plugin - 3.2.1 - - - - com.beust.kobalt.MainKt - - - - - - package - - shade - - - - - - - \ No newline at end of file diff --git a/modules/wrapper/build.gradle b/modules/wrapper/build.gradle deleted file mode 100644 index c0b5dafe..00000000 --- a/modules/wrapper/build.gradle +++ /dev/null @@ -1,38 +0,0 @@ -jar { - manifest { - attributes 'Main-Class': 'com.beust.kobalt.wrapper.Main' - } -} - -publishing { - publications { - maven(MavenPublication) { - from(components.java) - artifact sourcesJar - artifact javadocJar - - pom { - name = project.name - description = 'Wrapper for Kobalt' - url = 'https://beust.com/kobalt' - licenses { - license { - name = 'Apache-2.0' - url = 'https://www.apache.org/licenses/LICENSE-2.0' - } - } - developers { - developer { - name = 'Cedric Beust' - email = 'cedric@beust.com' - } - } - scm { - connection = 'scm:https://github.com/cbeust/kobalt.git' - developerConnection = 'scm:git@github.com:cbeust/kobalt.git' - url = 'https://github.com/cbeust/kobalt' - } - } - } - } -} diff --git a/modules/wrapper/pom.xml b/modules/wrapper/pom.xml deleted file mode 100644 index a9dc8796..00000000 --- a/modules/wrapper/pom.xml +++ /dev/null @@ -1,28 +0,0 @@ - - 4.0.0 - - com.beust - kobalt-pom - 1.1.0 - ../.. - - - wrapper - jar - 1.1.0 - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.0 - - 1.7 - 1.7 - - - - - \ No newline at end of file diff --git a/modules/wrapper/src/main/java/com/beust/kobalt/wrapper/Main.java b/modules/wrapper/src/main/java/com/beust/kobalt/wrapper/Main.java index f31bbc3f..f57db6d2 100644 --- a/modules/wrapper/src/main/java/com/beust/kobalt/wrapper/Main.java +++ b/modules/wrapper/src/main/java/com/beust/kobalt/wrapper/Main.java @@ -47,6 +47,7 @@ public class Main { private int installAndLaunchMain(String[] argv) throws IOException, InterruptedException { String version = getVersion(); + initWrapperFile(version); List kobaltArgv = new ArrayList<>(); boolean noLaunch = false; @@ -77,7 +78,6 @@ public class Main { } int result = 0; if (! exit) { - initWrapperFile(version); Path kobaltJarFile = installDistribution(); if (!noLaunch) { result = launchMain(kobaltJarFile, kobaltArgv); @@ -118,7 +118,7 @@ public class Main { } private static String downloadUrl(String version) { - return "https://beust.com/kobalt/kobalt-" + version + ".zip"; + return "http://beust.com/kobalt/kobalt-" + version + ".zip"; } private void initWrapperFile(String version) throws IOException { @@ -133,7 +133,7 @@ public class Main { } private String getWrapperVersion() { - return wrapperProperties.getProperty(PROPERTY_VERSION, "N/A"); + return wrapperProperties.getProperty(PROPERTY_VERSION); } private String getWrapperDownloadUrl(String version) { diff --git a/pom.xml b/pom.xml deleted file mode 100644 index 3a87c7ac..00000000 --- a/pom.xml +++ /dev/null @@ -1,34 +0,0 @@ - - 4.0.0 - - com.beust - kobalt-pom - pom - 1.1.0 - - - modules/kobalt-plugin-api - modules/wrapper - modules/kobalt - - - - - testng - https://dl.bintray.com/cbeust/maven - - - - - 1.2.71 - 1.13.0 - 3.9.1 - 1.1.0 - 1.1.0 - 5.1.0 - 6.12 - 1.7.3 - - - \ No newline at end of file diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index c36e45fd..00000000 --- a/settings.gradle +++ /dev/null @@ -1,5 +0,0 @@ -rootProject.name = 'kobalt-pom' -include(':kobalt-plugin-api', ':wrapper', ':kobalt') -project(':kobalt-plugin-api').projectDir = file('modules/kobalt-plugin-api') -project(':wrapper').projectDir = file('modules/wrapper') -project(':kobalt').projectDir = file('modules/kobalt') diff --git a/src/main/kotlin/com/beust/kobalt/Main.kt b/src/main/kotlin/com/beust/kobalt/Main.kt index 19b85404..aeedb001 100644 --- a/src/main/kotlin/com/beust/kobalt/Main.kt +++ b/src/main/kotlin/com/beust/kobalt/Main.kt @@ -38,14 +38,6 @@ class Main @Inject constructor( companion object { fun mainNoExit(argv: Array): Int { val (jc, args) = parseArgs(argv) - if (args.usage) { - jc.usage() - return 0 - } - if (args.version) { - println("Kobalt ${Kobalt.version}") - return 0 - } Kobalt.init(MainModule(args, KobaltSettings.readSettingsXml())) val result = launchMain(Kobalt.INJECTOR.getInstance(Main::class.java), jc, args, argv) return result @@ -55,7 +47,11 @@ class Main @Inject constructor( val args = Args() val result = JCommander(args) result.parse(*argv) - KobaltLogger.setLogLevel(args) + KobaltLogger.LOG_LEVEL = if (args.log < Constants.LOG_QUIET_LEVEL) { + Constants.LOG_DEFAULT_LEVEL + } else if (args.log > Constants.LOG_MAX_LEVEL) { + Constants.LOG_MAX_LEVEL + } else args.log return Main.RunInfo(result, args) } diff --git a/src/main/kotlin/com/beust/kobalt/app/LanguageTemplateGenerator.kt b/src/main/kotlin/com/beust/kobalt/app/LanguageTemplateGenerator.kt index e17a7cd8..441939a2 100644 --- a/src/main/kotlin/com/beust/kobalt/app/LanguageTemplateGenerator.kt +++ b/src/main/kotlin/com/beust/kobalt/app/LanguageTemplateGenerator.kt @@ -20,8 +20,6 @@ abstract class LanguageTemplateGenerator : ITemplate { abstract val defaultSourceDirectories : HashSet abstract val defaultTestDirectories : HashSet - abstract val mainDependencies : ArrayList - abstract val testDependencies : ArrayList abstract val directive : String abstract val fileMatch : (String) -> Boolean abstract val fileMap: List @@ -133,19 +131,20 @@ abstract class LanguageTemplateGenerator : ITemplate { put("directory", currentDir.absolutePath) put("sourceDirectories", defaultSourceDirectories) put("sourceDirectoriesTest", defaultTestDirectories) - put("mainDependencies", mainDependencies) - put("testDependencies", testDependencies) put("imports", "import com.beust.kobalt.plugin.$templateName.*") put("directive", "project") } + var mainDeps = arrayListOf() + var testDeps = arrayListOf() + map.put("mainDependencies", mainDeps) + map.put("testDependencies", testDeps) File("pom.xml").let { if (it.absoluteFile.exists()) { - importPom(it, mainDependencies, testDependencies, map) + importPom(it, mainDeps, testDeps, map) } } - val fileInputStream = javaClass.classLoader .getResource(ITemplateContributor.DIRECTORY_NAME + "/build.mustache").openStream() val sw = StringWriter() diff --git a/src/main/kotlin/com/beust/kobalt/app/Profiles.kt b/src/main/kotlin/com/beust/kobalt/app/Profiles.kt index b2cf1a5a..bb5ea346 100644 --- a/src/main/kotlin/com/beust/kobalt/app/Profiles.kt +++ b/src/main/kotlin/com/beust/kobalt/app/Profiles.kt @@ -56,7 +56,7 @@ class Profiles(val context: KobaltContext) { val variable = if (match.first) match.second else oldMatch.second if (oldMatch.first) { - warn("Old profile syntax detected for \"${line.trim()}\"," + + warn("Old profile syntax detected for \"$line\"," + " please update to \"val $variable by profile()\"") } diff --git a/src/main/kotlin/com/beust/kobalt/app/java/JavaTemplateGenerator.kt b/src/main/kotlin/com/beust/kobalt/app/java/JavaTemplateGenerator.kt index ef938f00..c34b80d3 100644 --- a/src/main/kotlin/com/beust/kobalt/app/java/JavaTemplateGenerator.kt +++ b/src/main/kotlin/com/beust/kobalt/app/java/JavaTemplateGenerator.kt @@ -1,14 +1,11 @@ package com.beust.kobalt.app.java import com.beust.kobalt.app.LanguageTemplateGenerator -import com.beust.kobalt.maven.Pom /** * Template for the "java" generator. */ class JavaTemplateGenerator : LanguageTemplateGenerator() { - override val mainDependencies = arrayListOf() - override val testDependencies = arrayListOf() override val defaultSourceDirectories = hashSetOf("src/main/java") override val defaultTestDirectories = hashSetOf("src/test/java") override val directive = "project" diff --git a/src/main/kotlin/com/beust/kobalt/app/kotlin/KotlinTemplateGenerator.kt b/src/main/kotlin/com/beust/kobalt/app/kotlin/KotlinTemplateGenerator.kt index f10698c4..51b11a14 100644 --- a/src/main/kotlin/com/beust/kobalt/app/kotlin/KotlinTemplateGenerator.kt +++ b/src/main/kotlin/com/beust/kobalt/app/kotlin/KotlinTemplateGenerator.kt @@ -1,16 +1,10 @@ package com.beust.kobalt.app.kotlin -import com.beust.kobalt.Constants import com.beust.kobalt.app.LanguageTemplateGenerator -import com.beust.kobalt.maven.Pom class KotlinTemplateGenerator : LanguageTemplateGenerator() { override val defaultSourceDirectories = hashSetOf("src/main/kotlin") override val defaultTestDirectories = hashSetOf("src/test/kotlin") - override val mainDependencies = arrayListOf( - Pom.Dependency("org.jetbrains.kotlin", "kotlin-stdlib", null, Constants.KOTLIN_COMPILER_VERSION) - ) - override val testDependencies = arrayListOf() override val directive = "project" override val templateName = "kotlin" override val templateDescription = "Generate a simple Kotlin project" diff --git a/src/main/kotlin/com/beust/kobalt/app/remote/KobaltClient.kt b/src/main/kotlin/com/beust/kobalt/app/remote/KobaltClient.kt index 41d9fdd4..a7c0a312 100644 --- a/src/main/kotlin/com/beust/kobalt/app/remote/KobaltClient.kt +++ b/src/main/kotlin/com/beust/kobalt/app/remote/KobaltClient.kt @@ -12,7 +12,15 @@ import com.beust.kobalt.misc.KFiles import com.beust.kobalt.misc.warn import com.google.gson.Gson import com.google.inject.Guice -import okhttp3.* +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.Response +import okhttp3.ResponseBody +import okhttp3.ws.WebSocket +import okhttp3.ws.WebSocketCall +import okhttp3.ws.WebSocketListener +import okio.Buffer +import java.io.IOException fun main(argv: Array) { Kobalt.INJECTOR = Guice.createInjector(MainModule(Args(), KobaltSettings.readSettingsXml())) @@ -31,22 +39,26 @@ class KobaltClient : Runnable { .url("$url?projectRoot=$projectRoot&buildFile=$buildFile") .build() var webSocket: WebSocket? = null - val socketListener = object: WebSocketListener() { - override fun onFailure(webSocket: WebSocket, ex: Throwable, response: Response?) { - Exceptions.printStackTrace(ex) - error("WebSocket failure: ${ex.message} response: $response") - } - + val ws = WebSocketCall.create(client, request).enqueue(object: WebSocketListener { override fun onOpen(ws: WebSocket, response: Response) { webSocket = ws } - override fun onClosing(webSocket: WebSocket, code: Int, reason: String) { - println("Closing socket") + override fun onPong(p0: Buffer?) { + println("WebSocket pong") } - override fun onMessage(webSocket: WebSocket, text: String) { - val json = text + override fun onClose(p0: Int, p1: String?) { + println("WebSocket closed") + } + + override fun onFailure(ex: IOException, response: Response?) { + Exceptions.printStackTrace(ex) + error("WebSocket failure: ${ex.message} response: $response") + } + + override fun onMessage(body: ResponseBody) { + val json = body.string() val wsCommand = Gson().fromJson(json, WebSocketCommand::class.java) if (wsCommand.errorMessage != null) { warn("Received error message from server: " + wsCommand.errorMessage) @@ -75,10 +87,7 @@ class KobaltClient : Runnable { } } } - } - - val ws = client.newWebSocket(request, socketListener) - ws.close(1000, "All good") + }) } } diff --git a/src/main/kotlin/com/beust/kobalt/plugin/application/ApplicationPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/application/ApplicationPlugin.kt index 926a00bf..2c7433d7 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/application/ApplicationPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/application/ApplicationPlugin.kt @@ -17,6 +17,7 @@ import com.beust.kobalt.plugin.packaging.PackageConfig import com.beust.kobalt.plugin.packaging.PackagingPlugin import com.google.inject.Inject import com.google.inject.Singleton +import org.jetbrains.kotlin.config.TargetPlatformVersion.NoVersion.description import java.io.File class ApplicationConfig { @@ -33,15 +34,6 @@ class ApplicationConfig { @Directive fun args(vararg argv: String) = argv.forEach { args.add(it) } val args = arrayListOf() - - @Directive - var ignoreErrorStream: Boolean = false - - @Directive - var ignoreInputStream: Boolean = true - - @Directive - var ignoreExitValue: Boolean = false } @Directive @@ -147,7 +139,6 @@ class ApplicationPlugin @Inject constructor(val configActor: ConfigsActor -> kobaltLog(1, output.joinToString("\n")) @@ -156,9 +147,6 @@ class ApplicationPlugin @Inject constructor(val configActor: ConfigsActor()) val args = K2JVMCompilerArguments() val compiler = K2JVMCompiler() - parseCommandLineArguments(args2, args) + compiler.parseArguments(args2.toTypedArray(), args) // Override important arguments with our values args.apply { moduleName = projectName destination = outputDir classpath = classpathString - freeArgs = sourceFiles.toMutableList() + freeArgs = sourceFiles friendPaths = friends } @@ -179,12 +179,12 @@ class KotlinCompiler @Inject constructor( "single-module" -> args.singleModule = true "load-builtins-from-dependencies" -> args.loadBuiltInsFromDependencies = true - "coroutines=enable" -> args.coroutinesState = LanguageFeature.State.ENABLED.name - "coroutines=warn" -> args.coroutinesState = LanguageFeature.State.ENABLED_WITH_WARNING.name - "coroutines=error" -> args.coroutinesState = LanguageFeature.State.ENABLED_WITH_ERROR.name + "coroutines=enable" -> args.coroutinesEnable = true + "coroutines=warn" -> args.coroutinesWarn = true + "coroutines=error" -> args.coroutinesError = true "no-inline" -> args.noInline = true "multi-platform" -> args.multiPlatform = true -// "no-check-impl" -> args.noCheckImpl = true + "no-check-impl" -> args.noCheckImpl = true else -> warn("Unknown Kotlin compiler flag found in config.xml: $it") } } @@ -214,7 +214,7 @@ class KotlinCompiler @Inject constructor( + " " + sourceFiles.joinToString(" ")) logk(2, " Additional kotlinc arguments: " + " -moduleName " + args.moduleName - + " -friendPaths " + args.friendPaths?.joinToString(";")) + + " -friendPaths " + args.friendPaths.joinToString(";")) val collector = object : MessageCollector { override fun clear() { throw UnsupportedOperationException("not implemented") @@ -225,7 +225,7 @@ class KotlinCompiler @Inject constructor( } fun dump(location: CompilerMessageLocation?, s: String) = - if (location?.lineContent != null) { + if (location != null && location.lineContent != null) { with(location) { "$lineContent\n$path:$line:$column $s" } @@ -233,13 +233,11 @@ class KotlinCompiler @Inject constructor( s } - override fun report(severity: CompilerMessageSeverity, message: String, - location: CompilerMessageLocation?) { + override fun report(severity: CompilerMessageSeverity, + message: String, location: CompilerMessageLocation) { if (severity.isError) { "Couldn't compile file: ${dump(location, message)}".let { fullMessage -> - error(fullMessage) - val ex = KobaltException(fullMessage) - throw ex + throw KobaltException(fullMessage) } } else if (severity == CompilerMessageSeverity.WARNING && KobaltLogger.LOG_LEVEL >= 2) { warn(dump(location, message)) @@ -253,22 +251,24 @@ class KotlinCompiler @Inject constructor( // // TODO: experimental should be removed as soon as it becomes standard // System.setProperty("kotlin.incremental.compilation.experimental", "true") - return if (cliArgs.noIncrementalKotlin || Kobalt.context?.internalContext?.noIncrementalKotlin ?: false) { - log(2, " Kotlin incremental compilation is disabled") - val duration = benchmarkMillis { - compiler.exec(collector, Services.Builder().build(), args) - } - log(1, " Regular compilation time: ${duration.first} ms") - TaskResult(duration.second == ExitCode.OK) - } else { - log(1, " Kotlin incremental compilation is enabled") - //val start = System.currentTimeMillis() - val duration = benchmarkMillis { - compileIncrementally(filesToCompile, sourceFiles, outputDir, info, args, collector) - } - log(1, " Incremental compilation time: ${duration.first} ms") - TaskResult() - } + val result = + if (cliArgs.noIncrementalKotlin || Kobalt.context?.internalContext?.noIncrementalKotlin ?: false) { + log(2, " Kotlin incremental compilation is disabled") + val duration = benchmarkMillis { + compiler.exec(collector, Services.Builder().build(), args) + } + log(1, " Regular compilation time: ${duration.first} ms") + TaskResult(duration.second == ExitCode.OK) + } else { + log(1, " Kotlin incremental compilation is enabled") + val start = System.currentTimeMillis() + val duration = benchmarkMillis { + compileIncrementally(filesToCompile, sourceFiles, outputDir, info, args, collector) + } + log(1, " Incremental compilation time: ${duration.first} ms") + TaskResult() + } + return result } private fun compileIncrementally(filesToCompile: Int, sourceFiles: List, outputDir: String?, @@ -382,7 +382,8 @@ class KotlinCompiler @Inject constructor( = dependencyManager.create("org.jetbrains" + ".kotlin:kotlin-compiler-embeddable:$version") fun compilerEmbeddableDependencies(project: Project?, version: String): List { - return dependencyManager.transitiveClosure(listOf(compilerDep(version)), requiredBy = project?.name ?: "") + val deps = dependencyManager.transitiveClosure(listOf(compilerDep(version)), requiredBy = project?.name ?: "") + return deps } /** @@ -415,7 +416,7 @@ class KotlinCompiler @Inject constructor( if (project != null) { listOf(KFiles.joinDir(project.directory, project.buildDirectory, KFiles.CLASSES_DIR)) } else { - emptyList() + emptyList() } val info = CompilerActionInfo(project?.directory, dependencies, sourceFiles, listOf("kt"), outputDir, args, friendPaths, context?.internalContext?.forceRecompile ?: false, compilerSeparateProcess) diff --git a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt index 886f3537..3c437628 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt @@ -99,10 +99,9 @@ class KotlinPlugin @Inject constructor(val executors: KobaltExecutors, val depen // IClasspathContributor override fun classpathEntriesFor(project: Project?, context: KobaltContext): List = - if (project == null || - context.pluginInfo.plugins.any { it is KotlinPlugin && it.settings.kobaltCompilerVersion == null }) { + if (project == null || accept(project)) { // All Kotlin projects automatically get the Kotlin runtime added to their class path - listOf(kotlinJarFiles.stdlib) + listOf(kotlinJarFiles.stdlib, kotlinJarFiles.runtime) .map { FileDependency(it.absolutePath) } } else { emptyList() diff --git a/src/main/kotlin/com/beust/kobalt/plugin/osgi/OsgiPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/osgi/OsgiPlugin.kt index 83ae5228..73614ec0 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/osgi/OsgiPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/osgi/OsgiPlugin.kt @@ -14,8 +14,11 @@ import com.google.inject.Inject import com.google.inject.Singleton import java.io.ByteArrayOutputStream import java.io.File +import java.net.URI import java.net.URLClassLoader -import java.nio.file.* +import java.nio.file.FileSystems +import java.nio.file.Files +import java.nio.file.StandardOpenOption import java.time.LocalDate import java.time.format.DateTimeFormatter import java.util.jar.JarFile @@ -54,7 +57,6 @@ class OsgiPlugin @Inject constructor(val configActor: ConfigActor, v it + ";version=\"" + project.version + "\"" }.joinToString(",") - val toFile = Files.createTempFile(null, ".jar") val analyzer = Analyzer().apply { jar = aQute.bnd.osgi.Jar(jarName) val dependencies = project.compileDependencies + project.compileRuntimeDependencies @@ -85,21 +87,18 @@ class OsgiPlugin @Inject constructor(val configActor: ConfigActor, v // // Update or create META-INF/MANIFEST.MF // - KFiles.copy(Paths.get(jarFile.toURI()), Paths.get(toFile.toUri())) - - val fileSystem = FileSystems.newFileSystem(toFile, null) + val uri = URI.create("jar:file:" + jarFile.absolutePath) + val options = hashMapOf() + val fileSystem = FileSystems.newFileSystem(uri, options) fileSystem.use { fs -> - JarFile(jarFile).use { jf -> - val mf = jf.getEntry(MetaArchive.MANIFEST_MF) - if (mf == null) { - Files.createDirectories(fs.getPath("META-INF/")) - } - val jarManifest = fs.getPath(MetaArchive.MANIFEST_MF) - Files.write(jarManifest, listOf(lines2), - if (mf != null) StandardOpenOption.APPEND else StandardOpenOption.CREATE) + val mf = JarFile(jarFile).getEntry(MetaArchive.MANIFEST_MF) + if (mf == null) { + Files.createDirectories(fs.getPath("META-INF/")) } + val jarManifest = fs.getPath(MetaArchive.MANIFEST_MF) + Files.write(jarManifest, listOf(lines2), + if (mf != null) StandardOpenOption.APPEND else StandardOpenOption.CREATE) } - Files.copy(Paths.get(toFile.toUri()), Paths.get(jarFile.toURI()), StandardCopyOption.REPLACE_EXISTING) return TaskResult() } } diff --git a/src/main/kotlin/com/beust/kobalt/plugin/packaging/PackagingPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/packaging/PackagingPlugin.kt index b7871c90..3252f750 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/packaging/PackagingPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/packaging/PackagingPlugin.kt @@ -105,7 +105,7 @@ class PackagingPlugin @Inject constructor(val dependencyManager : DependencyMana val outputFile = jarGenerator.fullArchiveName(project, context, it.name) outputFiles.add(outputFile) allIncludedFiles.addAll(files) - zipToFiles[outputFile.name] = files + zipToFiles[it.name] = files } } } diff --git a/src/main/kotlin/com/beust/kobalt/plugin/publish/BintrayApi.kt b/src/main/kotlin/com/beust/kobalt/plugin/publish/BintrayApi.kt index 1a80ff0e..0c93a884 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/publish/BintrayApi.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/publish/BintrayApi.kt @@ -80,12 +80,12 @@ class BintrayApi @Inject constructor(val http: Http, // level = HttpLoggingInterceptor.Level.BASIC // }) builder.interceptors().add(Interceptor { chain -> - val original = chain.request() + val original = chain.request(); chain.proceed(original.newBuilder() .header("Authorization", Credentials.basic(username, password)) .method(original.method(), original.body()) - .build()) + .build()); }) val okHttpClient = builder.build() @@ -101,12 +101,12 @@ class BintrayApi @Inject constructor(val http: Http, val pkgName = config.name ?: project.name val execute = service.getPackage(org ?: username!!, pkgName).execute() - if (execute.errorBody()?.string()?.contains("'$pkgName' was not found") == true) { + if (execute.errorBody()?.string()?.contains("'$pkgName' was not found") ?: false) { warn("Package does not exist on bintray. Creating now.") val result = service.createPackage(org ?: username!!, buildPackageInfo(project, config)) .execute() if (result.errorBody() != null) { - throw KobaltException("Error while creating package:\n" + result.errorBody()!!.string()) + throw KobaltException("Error while creating package:\n" + result.errorBody().string()) } } } @@ -163,13 +163,13 @@ class BintrayApi @Inject constructor(val http: Http, fun dots(total: Int, list: List, file: File? = null): String { val spaces: String = Array(total - list.size, { " " }).joinToString("") - return "|" + list.joinToString("") { if (it) "." else "X" } + spaces + + return "|" + list.map { if (it) "." else "X" }.joinToString("") + spaces + (if (file != null) "| [ $file ]" else "|") } val results = arrayListOf() val owner = org ?: username!! - val repo = config.name ?: project.name + val repo = project.name val group = project.group!!.replace('.', '/') val artifact = project.artifactId!! val version = project.version!! @@ -208,7 +208,7 @@ class BintrayApi @Inject constructor(val http: Http, return TaskResult() } else { - error(" Errors while uploading:\n" + errorMessages.joinToString("\n") { " $it" }) + error(" Errors while uploading:\n" + errorMessages.map { " $it" }.joinToString("\n")) return TaskResult(false, errorMessage = errorMessages.joinToString("\n")) } } else { @@ -221,7 +221,7 @@ class BintrayApi @Inject constructor(val http: Http, fun JsonObject.addNonNull(name: String, value: String?) { if (value != null) { - addProperty(name, value) + addProperty(name, value); } } @@ -236,16 +236,20 @@ class ConverterFactory : Converter.Factory() { override fun requestBodyConverter(type: Type, parameterAnnotations: Array, methodAnnotations: Array, retrofit: Retrofit?): Converter<*, RequestBody>? { - return if (type.typeName == File::class.java.name) FileBodyConverter() - else GsonBodyConverter() + val result = + if (type.typeName == File::class.java.name) FileBodyConverter() + else GsonBodyConverter() + return result } } class GsonResponseBodyConverter(private val gson: Gson, private val adapter: TypeAdapter) : Converter { override fun convert(value: ResponseBody): Any { val jsonReader = gson.newJsonReader(value.charStream()) - value.use { + try { return adapter.read(jsonReader) + } finally { + value.close() } } } diff --git a/src/main/kotlin/com/beust/kobalt/plugin/publish/PublishPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/publish/PublishPlugin.kt index c5878368..bcbaab10 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/publish/PublishPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/publish/PublishPlugin.kt @@ -47,7 +47,7 @@ class PublishPlugin @Inject constructor(val files: KFiles, val factory: PomGener private fun autoGitTag(project: Project, uploadResult: TaskResult, config: AutoGitTagConfig?) : TaskResult { if (config != null) { with(config) { - return git.maybeTagRelease(project, uploadResult, enabled, annotated, push, tag, message) + return git.maybeTagRelease(project, uploadResult, enabled, annotated, tag, message) } } else { return TaskResult() @@ -117,7 +117,7 @@ class PublishPlugin @Inject constructor(val files: KFiles, val factory: PomGener val docUrl = DocUrl.PUBLISH_PLUGIN_URL val user = localProperties.get(PROPERTY_BINTRAY_USER, docUrl) val password = localProperties.get(PROPERTY_BINTRAY_PASSWORD, docUrl) - val org = localProperties.getNoThrows(PROPERTY_BINTRAY_ORG) + val org = localProperties.getNoThrows(PROPERTY_BINTRAY_ORG, docUrl) val jcenter = bintrayFactory.create(user, password, org) var success = false @@ -222,9 +222,6 @@ data class AutoGitTagConfig(val project: Project) { @Directive var annotated: Boolean = false - @Directive - var push: Boolean = true - @Directive var tag : String = project.version!! diff --git a/src/main/resources/kobalt.properties b/src/main/resources/kobalt.properties index 0d568d3c..b78d252d 100644 --- a/src/main/resources/kobalt.properties +++ b/src/main/resources/kobalt.properties @@ -1 +1 @@ -kobalt.version=1.0.122 +kobalt.version=1.0.83 diff --git a/src/main/resources/templates/idea/KotlinJavaRuntime.xml b/src/main/resources/templates/idea/KotlinJavaRuntime.xml index 3792609b..c630c0b8 100644 --- a/src/main/resources/templates/idea/KotlinJavaRuntime.xml +++ b/src/main/resources/templates/idea/KotlinJavaRuntime.xml @@ -1,12 +1,12 @@ - + - + \ No newline at end of file diff --git a/src/test/kotlin/com/beust/kobalt/BaseTest.kt b/src/test/kotlin/com/beust/kobalt/BaseTest.kt index 3930f318..51bbcf5e 100644 --- a/src/test/kotlin/com/beust/kobalt/BaseTest.kt +++ b/src/test/kotlin/com/beust/kobalt/BaseTest.kt @@ -9,7 +9,6 @@ import com.beust.kobalt.internal.KobaltPluginXml import com.beust.kobalt.internal.PluginInfo import com.beust.kobalt.internal.build.SingleFileBuildSources import com.beust.kobalt.misc.KFiles -import com.beust.kobalt.misc.KobaltLogger import com.beust.kobalt.misc.log import org.testng.annotations.BeforeClass import org.testng.annotations.Guice @@ -122,9 +121,6 @@ open class BaseTest(val compilerFactory: BuildFileCompiler.IFactory? = null) { val main = Kobalt.INJECTOR.getInstance(Main::class.java) val args = Args() val jc = JCommander(args).apply { parse(*commandLine) } - - KobaltLogger.setLogLevel(args) - args.buildFile = KFiles.fixSlashes(project.file.absolutePath) + "/kobalt/src/Build.kt" val result = Main.launchMain(main, jc, args, arrayOf("assemble")) return LaunchProjectResult(project, result) diff --git a/src/test/kotlin/com/beust/kobalt/VerifyKobaltZipTest.kt b/src/test/kotlin/com/beust/kobalt/VerifyKobaltZipTest.kt index d0439725..7966c8b5 100644 --- a/src/test/kotlin/com/beust/kobalt/VerifyKobaltZipTest.kt +++ b/src/test/kotlin/com/beust/kobalt/VerifyKobaltZipTest.kt @@ -67,7 +67,7 @@ class VerifyKobaltZipTest : KobaltTest() { } else if (entry.name.endsWith("kobalt-wrapper.jar")) { val ins = zipFile.getInputStream(entry) foundWrapperJar = true - assertExistence(ins, listOf("kobalt.properties", "com/beust/kobalt/wrapper/Main.class")) + assertExistence(ins, listOf("kobalt.properties")) } entry = stream.nextEntry } diff --git a/src/test/kotlin/com/beust/kobalt/internal/KotlinCompilerVersionTest.kt b/src/test/kotlin/com/beust/kobalt/internal/KotlinCompilerVersionTest.kt deleted file mode 100644 index 21eb6edc..00000000 --- a/src/test/kotlin/com/beust/kobalt/internal/KotlinCompilerVersionTest.kt +++ /dev/null @@ -1,58 +0,0 @@ -package com.beust.kobalt.internal - -import com.beust.kobalt.BaseTest -import com.beust.kobalt.BuildFile -import com.beust.kobalt.ProjectFile -import com.beust.kobalt.ProjectInfo -import com.beust.kobalt.misc.KFiles -import org.assertj.core.api.Assertions.assertThat -import org.testng.annotations.Test -import java.io.File - -class KotlinCompilerVersionTest : BaseTest() { - - @Test - fun shouldCompileWithExternalKotlin() { - val projectInfo = ProjectInfo( - BuildFile( - listOf("com.beust.kobalt.plugin.packaging.*", "com.beust.kobalt.plugin.kotlin.kotlinCompiler"), - """ - kotlinCompiler { - version = "1.2.60" - } - assemble{ jar{} } - """ - ), - listOf( - ProjectFile("src/main/kotlin/A.kt", "val a = Bob()"), - ProjectFile("src/main/kotlin/Bob.java", "class Bob { }") - ) - ) - - val result = launchProject(projectInfo, arrayOf("assemble", "--log", "2")) - - val project = result.projectDescription - val jarFile = File(KFiles.joinDir(project.file.absolutePath, "kobaltBuild/libs", project.name + "-" - + project.version + ".jar")) - - assertThat(jarFile).exists() - } - - @Test - fun shouldFailWhenKotlinVersionDoesNotExist() { - val projectInfo = ProjectInfo( - BuildFile( - listOf("com.beust.kobalt.plugin.packaging.*", "com.beust.kobalt.plugin.kotlin.kotlinCompiler"), - """ - kotlinCompiler { version = "1.1.20" } - assemble{ jar{} } - """ - ), - listOf(ProjectFile("src/main/kotlin/A.kt", "val a = \"foo\"")) - ) - - val result = launchProject(projectInfo, arrayOf("assemble", "--log", "2")) - - assertThat(result.result).isEqualTo(1) - } -} diff --git a/src/test/kotlin/com/beust/kobalt/misc/MavenResolverTest.kt b/src/test/kotlin/com/beust/kobalt/misc/MavenResolverTest.kt index 4cee6077..5b1c3458 100644 --- a/src/test/kotlin/com/beust/kobalt/misc/MavenResolverTest.kt +++ b/src/test/kotlin/com/beust/kobalt/misc/MavenResolverTest.kt @@ -1,6 +1,5 @@ package com.beust.kobalt.misc -import com.beust.kobalt.Args import com.beust.kobalt.BaseTest import com.beust.kobalt.internal.KobaltSettings import com.beust.kobalt.internal.KobaltSettingsXml @@ -96,7 +95,7 @@ class MavenResolverTest : BaseTest() { private fun resolve(id: String): List { val system = Booter.newRepositorySystem() val session = Booter.newRepositorySystemSession(system, - localRepo.localRepo, KobaltSettings(KobaltSettingsXml()), Args(), EventBus()) + localRepo.localRepo, KobaltSettings(KobaltSettingsXml()), EventBus()) val artifact = DefaultArtifact(id) val collectRequest = CollectRequest().apply {