diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..350676d --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,75 @@ +name: GraalVM +on: [push, pull_request] +jobs: + graalvm-17-tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: graalvm/setup-graalvm@v1 + with: + java-version: '17' # See 'Options' section below for all supported versions + distribution: 'graalvm' # See 'Options' section below for all available distributions + github-token: ${{ secrets.GITHUB_TOKEN }} + - run: | + echo "GRAALVM_HOME: $GRAALVM_HOME" + echo "JAVA_HOME: $JAVA_HOME" + java --version + native-image --version + - run: ./gradlew test + graalvm-21-tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: graalvm/setup-graalvm@v1 + with: + java-version: '21' + distribution: 'graalvm' + github-token: ${{ secrets.GITHUB_TOKEN }} + - run: | + echo "GRAALVM_HOME: $GRAALVM_HOME" + echo "JAVA_HOME: $JAVA_HOME" + java --version + native-image --version + - run: ./gradlew test + graalvm-23-tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: graalvm/setup-graalvm@v1 + with: + java-version: '23' + distribution: 'graalvm' + github-token: ${{ secrets.GITHUB_TOKEN }} + - run: | + echo "GRAALVM_HOME: $GRAALVM_HOME" + echo "JAVA_HOME: $JAVA_HOME" + java --version + native-image --version + - run: ./gradlew test + graalvm-17-dependency-updates: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: graalvm/setup-graalvm@v1 + with: + java-version: '17' + distribution: 'graalvm' + - run: ./gradlew dependencyUpdates + graalvm-21-dependency-updates: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: graalvm/setup-graalvm@v1 + with: + java-version: '21' + distribution: 'graalvm' + - run: ./gradlew dependencyUpdates + graalvm-23-dependency-updates: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: graalvm/setup-graalvm@v1 + with: + java-version: '23' + distribution: 'graalvm' + - run: ./gradlew dependencyUpdates diff --git a/.gitignore b/.gitignore index 5888494..6193af6 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ .gradle/ build/ out/ +.DS_Store diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index ed86beb..0000000 --- a/.travis.yml +++ /dev/null @@ -1,82 +0,0 @@ -env: - global: - - TERM=dumb -notifications: - email: false -git: - quiet: true - depth: false -language: python -python: 3.8 -node_js: lts/* -jdk: openjdk8 -addons: - apt: - update: false - packages: - - curl -install: true -before_install: - - | - if [ ! -f ${HOME}/.local/daggerok/bash-functions/master/main.bash ] ; then - mkdir -p ${HOME}/.local/daggerok/bash-functions/master - curl -s https://raw.githubusercontent.com/daggerok/bash-functions/master/main.bash > ${HOME}/.local/daggerok/bash-functions/master/main.bash - fi - source ${HOME}/.local/daggerok/bash-functions/master/main.bash - stop_any 3000 5000 8000 8080 80 - - | - export PATH=$HOME/.local/bin:$PATH - python -m pip install --upgrade pip setuptools pyopenssl - python -m pip install --upgrade httpie -jobs: - include: - - stage: test - jdk: openjdk8 - name: tests - script: cd $TRAVIS_BUILD_DIR && ./gradlew test - - stage: test - jdk: openjdk11 - name: tests (openjdk11) - script: cd $TRAVIS_BUILD_DIR && ./gradlew test - - stage: test - jdk: openjdk8 - name: default tasks - script: cd $TRAVIS_BUILD_DIR && ./gradlew - - stage: test - jdk: openjdk11 - name: default tasks (openjdk11) - script: cd $TRAVIS_BUILD_DIR && ./gradlew - - stage: test - jdk: openjdk8 - name: gradle dependencyUpdates - script: cd $TRAVIS_BUILD_DIR && ./gradlew dependencyUpdates - - stage: test - jdk: openjdk11 - name: gradle dependencyUpdates (openjdk11) - script: cd $TRAVIS_BUILD_DIR && ./gradlew dependencyUpdates -# - stage: deploy -# #jdk: openjdk8 -# jdk: openjdk11 -# name: GitHub release and GitHub pages deployment (openjdk11) -# script: skip -# if: branch = "master" AND type NOT IN (pull_request) -# before_deploy: -# - if [ "$TRAVIS_PULL_REQUEST" != "false" ] || [ ".$TRAVIS_BRANCH" != ".master" ] ; then exit 0 ; fi -# - env -# # documentation -# - cd $TRAVIS_BUILD_DIR && ./gradlew npm_run_gh-pages -# deploy: &pages -# provider: pages -# skip-cleanup: true -# github-token: "$GITHUB_TOKEN" -# keep-history: true -# local-dir: .vuepress/dist -# target_branch: gh-pages -# on: -# branch: master -# condition: "$TRAVIS_PULL_REQUEST = false" -cache: - directories: - - ~/.gradle - packages: true - pip: true diff --git a/README.md b/README.md index e177d28..6c1f0f4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# left fold [![Build Status](https://travis-ci.org/daggerok/fold-java.svg?branch=master)](https://travis-ci.org/daggerok/fold-java) +# left fold [![GraalVM](https://github.com/daggerok/fold-java/actions/workflows/ci.yaml/badge.svg)](https://github.com/daggerok/fold-java/actions/workflows/ci.yaml) Kotlin to the rescue [fold the universe: reduction with java 8 streams API](https://dzone.com/articles/folding-the-universe-part-iii-java-8-list-and-stre) diff --git a/build.gradle.kts b/build.gradle.kts index 18cb721..84d9226 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,42 +1,42 @@ plugins { - idea - application - id("org.jetbrains.kotlin.jvm").version("1.3.61") - id("io.franzbecker.gradle-lombok").version("3.2.0") - id("com.github.ben-manes.versions") version "0.27.0" + idea + application + id("org.jetbrains.kotlin.jvm").version("1.3.61") + id("io.franzbecker.gradle-lombok").version("5.0.0") + id("com.github.ben-manes.versions") version "0.51.0" } repositories { - jcenter() + jcenter() } val spekVersion = "2.0.9" -val lombokVersion = "1.18.10" +val lombokVersion = "1.18.34" val junitJupiterVersion = "5.6.0" dependencies { - implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") - testImplementation("org.jetbrains.kotlin:kotlin-test") - testImplementation("org.jetbrains.kotlin:kotlin-test-junit") - testImplementation("org.junit.jupiter:junit-jupiter:$junitJupiterVersion") - // lombok for java classes... yes, I'm lazy: - annotationProcessor(platform("org.projectlombok:lombok:$lombokVersion")) - annotationProcessor("org.projectlombok:lombok") - testAnnotationProcessor("org.projectlombok:lombok") - // spekframework - testImplementation("org.spekframework.spek2:spek-dsl-jvm:$spekVersion") { - exclude(group = "org.jetbrains.kotlin") - } - testRuntimeOnly("org.spekframework.spek2:spek-runner-junit5:$spekVersion") { - exclude(group = "org.jetbrains.kotlin") - exclude(group = "org.junit.platform") - } - // spek requires kotlin-reflect, can be omitted if already in the classpath - testRuntimeOnly("org.jetbrains.kotlin:kotlin-reflect") + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") + testImplementation("org.jetbrains.kotlin:kotlin-test") + testImplementation("org.jetbrains.kotlin:kotlin-test-junit") + testImplementation("org.junit.jupiter:junit-jupiter:$junitJupiterVersion") + // lombok for java classes... yes, I'm lazy: + annotationProcessor(platform("org.projectlombok:lombok:$lombokVersion")) + annotationProcessor("org.projectlombok:lombok") + testAnnotationProcessor("org.projectlombok:lombok") + // spekframework + testImplementation("org.spekframework.spek2:spek-dsl-jvm:$spekVersion") { + exclude(group = "org.jetbrains.kotlin") + } + testRuntimeOnly("org.spekframework.spek2:spek-runner-junit5:$spekVersion") { + exclude(group = "org.jetbrains.kotlin") + exclude(group = "org.junit.platform") + } + // spek requires kotlin-reflect, can be omitted if already in the classpath + testRuntimeOnly("org.jetbrains.kotlin:kotlin-reflect") } application { - mainClassName = "com.github.daggerok.AppKt" + mainClassName = "com.github.daggerok.AppKt" } // bash build/install/fold-java/bin/fold-java @@ -44,35 +44,35 @@ defaultTasks("clean", "build", "installDist") // java files location in src/main/kotlin directory workaround sourceSets { - main { - java.srcDir("src/main/kotlin") - } + main { + java.srcDir("src/main/kotlin") + } } // gradle wrapper configuration workaround tasks { - withType { - gradleVersion = "6.1.1" - } + withType { + gradleVersion = "6.1.1" + } } // gradle tests output stdOut workaround tasks { - test { - // useJUnit() - useJUnitPlatform { - includeEngines.add("spek2") + test { + // useJUnit() + useJUnitPlatform { + includeEngines.add("spek2") + } + testLogging { + showExceptions = true + showStandardStreams = true + events( + org.gradle.api.tasks.testing.logging.TestLogEvent.PASSED, + org.gradle.api.tasks.testing.logging.TestLogEvent.SKIPPED, + org.gradle.api.tasks.testing.logging.TestLogEvent.FAILED + ) + } } - testLogging { - showExceptions = true - showStandardStreams = true - events( - org.gradle.api.tasks.testing.logging.TestLogEvent.PASSED, - org.gradle.api.tasks.testing.logging.TestLogEvent.SKIPPED, - org.gradle.api.tasks.testing.logging.TestLogEvent.FAILED - ) - } - } } /*tasks.withType { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1b16c34..f371643 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-6.1.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists