From 72dc9ff8c34699d70adfa2d354baad898515800e Mon Sep 17 00:00:00 2001 From: Friedrich von Never Date: Sat, 30 Aug 2025 13:58:03 +0200 Subject: [PATCH 1/7] Infra: initialize EditorConfig --- .editorconfig | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..e2139a6 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,11 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.yml] +indent_size = 2 From a207ae76eb2ded6d5ee85dd00b155b4a32b97b5e Mon Sep 17 00:00:00 2001 From: Friedrich von Never Date: Sat, 30 Aug 2025 13:58:15 +0200 Subject: [PATCH 2/7] .gitignore: add IDEA stuff --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..85e7c1d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/.idea/ From d2fdc6bc796331c0be533d4a17021097fe562155 Mon Sep 17 00:00:00 2001 From: Friedrich von Never Date: Sat, 30 Aug 2025 13:59:04 +0200 Subject: [PATCH 3/7] Docs: add a link to the contest site --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 36cddb6..ab6b2b6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ icfpc-2025 ========== -This is the Codingteam's solution for the 2025 ICFPC contest. +This is the Codingteam's solution for the [ICFPC Programming Contest 2025][icfpc-2025]. Team Members ------------ @@ -9,3 +9,5 @@ TBD. Build ----- TBD. + +[icfpc-2025]: https://icfpcontest2025.github.io/ From a7d962ad06eb4c5e91a47ef0173774a73152b2cc Mon Sep 17 00:00:00 2001 From: Friedrich von Never Date: Sat, 30 Aug 2025 14:11:59 +0200 Subject: [PATCH 4/7] Build: create a project in Scala 3 --- .gitignore | 2 ++ Main.scala | 1 + README.md | 10 +++++++++- build.sbt | 1 + project/build.properties | 1 + 5 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 Main.scala create mode 100644 build.sbt create mode 100644 project/build.properties diff --git a/.gitignore b/.gitignore index 85e7c1d..a15029b 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ /.idea/ + +target/ diff --git a/Main.scala b/Main.scala new file mode 100644 index 0000000..556f5e6 --- /dev/null +++ b/Main.scala @@ -0,0 +1 @@ +@main def helloWorld = println("Hello, world") diff --git a/README.md b/README.md index ab6b2b6..8240b03 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,14 @@ TBD. Build ----- -TBD. +```console +$ sbt compile +``` + +Run +--- +```console +$ sbt run +``` [icfpc-2025]: https://icfpcontest2025.github.io/ diff --git a/build.sbt b/build.sbt new file mode 100644 index 0000000..c73b99a --- /dev/null +++ b/build.sbt @@ -0,0 +1 @@ +scalaVersion := "3.7.2" diff --git a/project/build.properties b/project/build.properties new file mode 100644 index 0000000..e480c67 --- /dev/null +++ b/project/build.properties @@ -0,0 +1 @@ +sbt.version=1.11.5 From b517cdc6d6164ef0ad3c7b25435dfaa4629b2861 Mon Sep 17 00:00:00 2001 From: Friedrich von Never Date: Sat, 30 Aug 2025 14:22:11 +0200 Subject: [PATCH 5/7] .gitignore: add BSP directory --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index a15029b..b97469f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +/.bsp/ /.idea/ target/ From db5dd1268b17fcb843094fa2bb8d01c9fc0051d6 Mon Sep 17 00:00:00 2001 From: Friedrich von Never Date: Sat, 30 Aug 2025 14:27:21 +0200 Subject: [PATCH 6/7] CI: set up auto-build, add the requirement list --- .github/workflows/main.yml | 44 ++++++++++++++++++++++++++++++++++++++ README.md | 7 ++++++ 2 files changed, 51 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..315d455 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,44 @@ +name: Main +on: + push: + branches: + - main + tags: + - 'v*' + pull_request: + branches: + - main + +jobs: + build: + strategy: + matrix: + config: + - image: macos-14 + shortName: macos + - image: ubuntu-24.04 + shortName: linux + - image: windows-2025 + shortName: windows + fail-fast: false + runs-on: ${{ matrix.config.image }} + name: build.${{ matrix.config.shortName }} + steps: + - name: Check out the sources + uses: actions/checkout@v5 + + - name: Set up JDK + uses: actions/setup-java@v5 + with: + distribution: 'temurin' + java-version: '24' + cache: 'sbt' + + - name: Set up SBT + uses: sbt/setup-sbt@v1 + + - name: Build + run: sbt compile + + - name: Test + run: sbt test diff --git a/README.md b/README.md index 8240b03..7f6f34a 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,11 @@ Team Members ------------ TBD. +Prerequisites +------------- +- Any JDK 24 distribution. If you don't know which one to use, use [Temurin][temurin]. +- [SBT][sbt] (any recent version should suffice, it will auto-download the correct one). + Build ----- ```console @@ -19,3 +24,5 @@ $ sbt run ``` [icfpc-2025]: https://icfpcontest2025.github.io/ +[sbt]: https://www.scala-sbt.org/ +[temurin]: https://adoptium.net/temurin/releases/ From 814f3684669e1439c143e92eaa9594e8dc0411d1 Mon Sep 17 00:00:00 2001 From: Friedrich von Never Date: Sat, 30 Aug 2025 14:44:21 +0200 Subject: [PATCH 7/7] Tests, CI, requirements --- .github/workflows/main.yml | 2 +- Main.scala | 1 - README.md | 8 +++++++- build.sbt | 3 +++ src/main/scala/ru/org/codingteam/icfpc_2025/Main.scala | 3 +++ .../scala/ru/org/codingteam/icfpc_2025/TestTests.scala | 10 ++++++++++ 6 files changed, 24 insertions(+), 3 deletions(-) delete mode 100644 Main.scala create mode 100644 src/main/scala/ru/org/codingteam/icfpc_2025/Main.scala create mode 100644 src/test/scala/ru/org/codingteam/icfpc_2025/TestTests.scala diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 315d455..a691ca4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -31,7 +31,7 @@ jobs: uses: actions/setup-java@v5 with: distribution: 'temurin' - java-version: '24' + java-version: '21' cache: 'sbt' - name: Set up SBT diff --git a/Main.scala b/Main.scala deleted file mode 100644 index 556f5e6..0000000 --- a/Main.scala +++ /dev/null @@ -1 +0,0 @@ -@main def helloWorld = println("Hello, world") diff --git a/README.md b/README.md index 7f6f34a..caf1cc6 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ TBD. Prerequisites ------------- -- Any JDK 24 distribution. If you don't know which one to use, use [Temurin][temurin]. +- Any JDK 21 distribution. If you don't know which one to use, use [Temurin][temurin]. - [SBT][sbt] (any recent version should suffice, it will auto-download the correct one). Build @@ -23,6 +23,12 @@ Run $ sbt run ``` +Test +--- +```console +$ sbt test +``` + [icfpc-2025]: https://icfpcontest2025.github.io/ [sbt]: https://www.scala-sbt.org/ [temurin]: https://adoptium.net/temurin/releases/ diff --git a/build.sbt b/build.sbt index c73b99a..62a23f0 100644 --- a/build.sbt +++ b/build.sbt @@ -1 +1,4 @@ scalaVersion := "3.7.2" +libraryDependencies ++= Seq( + "org.scalatest" %% "scalatest" % "3.2.19" % Test +) diff --git a/src/main/scala/ru/org/codingteam/icfpc_2025/Main.scala b/src/main/scala/ru/org/codingteam/icfpc_2025/Main.scala new file mode 100644 index 0000000..3122417 --- /dev/null +++ b/src/main/scala/ru/org/codingteam/icfpc_2025/Main.scala @@ -0,0 +1,3 @@ +package ru.org.codingteam.icfpc_2025 + +@main def helloWorld(): Unit = println("Hello, world") diff --git a/src/test/scala/ru/org/codingteam/icfpc_2025/TestTests.scala b/src/test/scala/ru/org/codingteam/icfpc_2025/TestTests.scala new file mode 100644 index 0000000..43a5835 --- /dev/null +++ b/src/test/scala/ru/org/codingteam/icfpc_2025/TestTests.scala @@ -0,0 +1,10 @@ +package ru.org.codingteam.icfpc_2025 + +import org.scalatest.funsuite.AnyFunSuite + +class TestTests extends AnyFunSuite: + + test("sanity check") { + val result = 0 + assert(result == 0) + }