diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 0201c4d..07f8f2d 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -9,4 +9,6 @@ repositories { dependencies { implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10") implementation("org.jetbrains.kotlin:kotlin-serialization:1.8.10") + + implementation("gradle.plugin.com.github.johnrengelman:shadow:7.1.2") } diff --git a/buildSrc/src/main/kotlin/dough_sample.gradle.kts b/buildSrc/src/main/kotlin/dough_sample.gradle.kts index f458511..7747352 100644 --- a/buildSrc/src/main/kotlin/dough_sample.gradle.kts +++ b/buildSrc/src/main/kotlin/dough_sample.gradle.kts @@ -1,3 +1,34 @@ +import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget + plugins { id("dough_base") } + +val jvmMain = kotlin.targets.getByName("jvm").compilations.getByName("main") + +tasks { + val sampleJar = register("sampleJar") { + group = "application" + + manifest { + attributes["Main-Class"] = "MainKt" + } + + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + + archiveBaseName.set("${project.name}-sample") + from(jvmMain.output.classesDirs, jvmMain.compileDependencyFiles.map { + if (it.isDirectory) it else zipTree(it) + }) + } + + register("runSample") { + group = "application" + + mainClass.set("MainKt") + classpath = jvmMain.output.classesDirs + classpath += jvmMain.compileDependencyFiles + } + + assemble.get().dependsOn(sampleJar) +} diff --git a/samples/fs-walk/build.gradle.kts b/samples/fs-walk/build.gradle.kts index 1a2828f..76ce41e 100644 --- a/samples/fs-walk/build.gradle.kts +++ b/samples/fs-walk/build.gradle.kts @@ -10,4 +10,4 @@ kotlin { } } } -} \ No newline at end of file +} diff --git a/tools/ensure-new-lines.sh b/tools/ensure-new-lines.sh new file mode 100755 index 0000000..c4f13ea --- /dev/null +++ b/tools/ensure-new-lines.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +set -e + +git ls-files -z | while IFS= read -rd '' f +do + if file --mime-encoding "$f" | grep -qv binary + then + tail -c1 < "$f" | read -r _ || echo >> "$f" + fi +done