diff --git a/.gitignore b/.gitignore index 3bfcb2b5..3fedd06a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,16 +3,9 @@ build/ target/ out/ -# Ignore Gradle GUI config -gradle-app.setting - -# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) -!gradle-wrapper.jar - # Cache of project .gradletasknamecache -.*jar *.iml .idea diff --git a/.travis.yml b/.travis.yml index 32ef4a6c..6e87b3e2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -45,16 +45,17 @@ install: - sdk install kotlin - sdk install gradle - ## install assert.h - - wget https://raw.github.com/lehmannro/assert.sh/v1.1/assert.sh && chmod +x assert.sh - - export KSCRIPT_HOME="/home/travis/build/holgerbrandl/kscript" + - export KSCRIPT_BUILD_LIBS="$KSCRIPT_HOME/build/libs" - pwd - - export PATH=$KSCRIPT_HOME::$PATH + - export PATH=$KSCRIPT_BUILD_LIBS::$PATH # build it - - cd $KSCRIPT_HOME && ./gradlew shadowJar + - cd $KSCRIPT_HOME && ./gradlew assemble + - cd $KSCRIPT_BUILD_LIBS + ## install assert.h + - wget https://raw.github.com/lehmannro/assert.sh/v1.1/assert.sh && chmod +x assert.sh - which kscript - which assert.sh @@ -67,6 +68,7 @@ install: - kscript ${KSCRIPT_HOME}/test/resources/multi_line_deps.kts # - resdeps.kts org.org.docopt:org.docopt:0.6.0-SNAPSHOT log4j:log4j:1.2.14 # - kscript ${KSCRIPT_HOME}/test/resources/multi_line_deps.kts + - cd $KSCRIPT_HOME script: ./test/test_suite.sh diff --git a/README.md b/README.md index 7d5aa6bf..fff16ea5 100644 --- a/README.md +++ b/README.md @@ -81,10 +81,10 @@ brew install holgerbrandl/tap/kscript To build `kscript` yourself, simply clone the repo and do ```bash -./gradlew shadowJar +./gradlew assemble -## Don't forget to prefix with `./` when running the freshly compiled version -./kscript +## Run kscript from output dir +./build/libs/kscript ``` ## Script Input Modes diff --git a/build.gradle b/build.gradle deleted file mode 100644 index fba62c20..00000000 --- a/build.gradle +++ /dev/null @@ -1,49 +0,0 @@ -group 'com.github.holgerbrandl.kscript.launcher' -version '0.1-SNAPSHOT' - -apply plugin: 'java' -apply plugin: 'kotlin' -//apply plugin: 'maven' -apply plugin: 'com.github.johnrengelman.shadow' - - -dependencies { -// https://docs.gradle.org/current/userguide/java_plugin.html#sec:java_plugin_and_dependency_management - compileOnly "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" -// compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - -// compile "org.apache.commons:commons-csv:1.3" - compile "com.offbytwo:docopt:0.6.0.20150202" - - testCompile group: 'junit', name: 'junit', version: '4.11' - testCompile "io.kotlintest:kotlintest:2.0.7" -} - -repositories { -// mavenCentral() - jcenter() -} - -buildscript { - ext.kotlin_version = '1.2.30' - repositories { - jcenter() - } - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.2' - } -} - - -// copy shadow output back into root directory for simplified testing (see http://imperceptiblethoughts.com/shadow/) -shadowJar.doLast{ - copy { from 'build/libs/kscript-0.1-SNAPSHOT-all.jar' ; into projectDir; rename { 'kscript.jar' } } -} - -// make sure to remove kscript.jar in project root first on clean -// from https://stackoverflow.com/questions/29813189/how-do-i-extend-gradles-clean-task-to-delete-a-file -clean.doFirst { - delete "${projectDir}/kscript.jar" - println "deleting ./kscript.jar" -} diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 00000000..59de44bd --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,41 @@ +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar + +plugins { + kotlin("jvm") version "1.2.30" + id("com.github.johnrengelman.plugin-shadow") version "2.0.2" +} + +group = "com.github.holgerbrandl.kscript.launcher" + +dependencies { + compileOnly("org.jetbrains.kotlin:kotlin-stdlib") + + compile("com.offbytwo:docopt:0.6.0.20150202") + + testCompile("junit:junit:4.12") + testCompile( "io.kotlintest:kotlintest:2.0.7") +} + +repositories { + jcenter() +} + +val shadowJar by tasks.getting(ShadowJar::class) { + // set empty string to classifier and version to get predictable jar file name: build/libs/kscript.jar + archiveName = "kscript.jar" + doLast { + copy { + from(File(projectDir, "src/kscript")) + into(archivePath.parentFile) + } + } +} + +// Disable standard jar task to avoid building non-shadow jars +val jar by tasks.getting { + enabled = false +} +// Build shadowJar when +val assemble by tasks.getting { + dependsOn(shadowJar) +} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 736fb7d3..91ca28c8 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 57c7d2d2..e6a30918 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4.1-all.zip diff --git a/misc/benchmarking/benchmarking.md b/misc/benchmarking/benchmarking.md index bee999bb..92bcdbad 100644 --- a/misc/benchmarking/benchmarking.md +++ b/misc/benchmarking/benchmarking.md @@ -20,7 +20,7 @@ misc/benchmarking/benchmark_kscript.kts scriptlet_runtimes_$(git rev-parse --abb ## roll back to master and redo the benchmarking git checkout master -./gradlew clean shadowJar +./gradlew clean assemble misc/benchmarking/benchmark_kscript.kts scriptlet_runtimes_$(git rev-parse --abbrev-ref HEAD)-$(git rev-parse --short HEAD).txt diff --git a/misc/docker_tests.sh b/misc/docker_tests.sh index ba2121ce..30fc4104 100644 --- a/misc/docker_tests.sh +++ b/misc/docker_tests.sh @@ -34,7 +34,7 @@ docker attach `docker ps -q -l` # reattach the terminal & stdin cd kscript export KSCRIPT_HOME=$(pwd) -./gradlew shadowJar +./gradlew assemble wget https://raw.githubusercontent.com/lehmannro/assert.sh/master/assert.sh chmod u+x assert.sh diff --git a/misc/kscript_release.sh b/misc/kscript_release.sh index 9c7313a1..b09b2860 100644 --- a/misc/kscript_release.sh +++ b/misc/kscript_release.sh @@ -5,6 +5,7 @@ # 3. Push and wait for travis CI results export KSCRIPT_HOME="/Users/brandl/projects/kotlin/kscript"; +export KSCRIPT_BUILD_LIBS="$KSCRIPT_HOME/build/libs"; export PATH=${KSCRIPT_HOME}:${PATH} export PATH=~/go/bin/:$PATH @@ -24,12 +25,12 @@ echo "new version is $kscript_version" cd $KSCRIPT_HOME -./gradlew clean shadowJar +./gradlew clean assemble ## compile binary distribution (including jar and wrapper-script) mkdir -p $KSCRIPT_ARCHIVE/kscript-${kscript_version}/bin -cp ${KSCRIPT_HOME}/kscript ${KSCRIPT_ARCHIVE}/kscript-${kscript_version}/bin -cp ${KSCRIPT_HOME}/kscript.jar ${KSCRIPT_ARCHIVE}/kscript-${kscript_version}/bin/kscript.jar +cp ${KSCRIPT_BUILD_LIBS}/kscript ${KSCRIPT_ARCHIVE}/kscript-${kscript_version}/bin +cp ${KSCRIPT_BUILD_LIBS}/kscript.jar ${KSCRIPT_ARCHIVE}/kscript-${kscript_version}/bin/kscript.jar cd ${KSCRIPT_ARCHIVE} rm ${KSCRIPT_ARCHIVE}/kscript-${kscript_version}.zip @@ -42,7 +43,8 @@ open ${KSCRIPT_ARCHIVE} #Java SE 6.0 = 50 (0x32 hex) (from https://en.wikipedia.org/wiki/Java_class_file) #Default is 50, see https://kotlinlang.org/docs/reference/using-gradle.html#attributes-common-for-jvm-and-js ## to insepct do -#./gradlew clean shadowJar && cp build/libs/kscript-0.1-SNAPSHOT-all.jar kscript.jar +#./gradlew clean assemble +#cd ${KSCRIPT_BUILD_LIBS} #rm -rf kscript_target_test #cp -f kscript.jar kscript_target_test.zip #unzip kscript_target_test.zip -d kscript_target_test diff --git a/settings.gradle b/settings.gradle.kts similarity index 100% rename from settings.gradle rename to settings.gradle.kts diff --git a/kscript b/src/kscript similarity index 100% rename from kscript rename to src/kscript diff --git a/src/main/kotlin/kscript/app/ResolveIncludes.kt b/src/main/kotlin/kscript/app/ResolveIncludes.kt index 76a9e071..a66da801 100644 --- a/src/main/kotlin/kscript/app/ResolveIncludes.kt +++ b/src/main/kotlin/kscript/app/ResolveIncludes.kt @@ -78,8 +78,8 @@ internal fun extractIncludeTarget(incDirective: String) = when { * Usage Example: * ``` * cd $KSCRIPT_HOME - * ./gradlew shadowJar - * resolve_inc() { kotlin -classpath build/libs/kscript-0.1-SNAPSHOT-all.jar kscript.app.ResolveIncludes "$@";} + * ./gradlew assemble + * resolve_inc() { kotlin -classpath build/libs/kscript.jar kscript.app.ResolveIncludes "$@";} * resolve_inc /Users/brandl/projects/kotlin/kscript/test/resources/includes/include_variations.kts * cat $(resolve_inc /Users/brandl/projects/kotlin/kscript/test/resources/includes/include_variations.kts 2>&1) * ``` diff --git a/test/TestsReadme.md b/test/TestsReadme.md index 678f914f..4f41b7ca 100644 --- a/test/TestsReadme.md +++ b/test/TestsReadme.md @@ -33,7 +33,7 @@ which assert.sh || exit 1 cd ${KSCRIPT_HOME} ## build it -./gradlew shadowJar +./gradlew assemble ## clean up the environment diff --git a/test/test_suite.sh b/test/test_suite.sh index f16758d3..f1068da6 100755 --- a/test/test_suite.sh +++ b/test/test_suite.sh @@ -118,7 +118,7 @@ assert_end environment_tests ## dependency_lookup # export KSCRIPT_HOME="/Users/brandl/projects/kotlin/kscript"; export PATH=${KSCRIPT_HOME}:${PATH} -resolve_deps() { kotlin -classpath kscript.jar kscript.app.DependencyUtil "$@";} +resolve_deps() { kotlin -classpath ${KSCRIPT_BUILD_LIBS}/kscript.jar kscript.app.DependencyUtil "$@";} export -f resolve_deps @@ -240,7 +240,7 @@ assert 'kscript "println(args.size)" "foo bar"' 1 ## allow for spaces assert 'kscript "println(args[0])" "foo bar"' "foo bar" ## make sure quotes are not propagated into args -kscript_nocall() { kotlin -classpath kscript.jar kscript.app.KscriptKt "$@";} +kscript_nocall() { kotlin -classpath ${KSCRIPT_BUILD_LIBS}/kscript.jar kscript.app.KscriptKt "$@";} export -f kscript_nocall ## temp projects with include symlinks