Skip to content

Commit

Permalink
Decouple TTY library from terminal
Browse files Browse the repository at this point in the history
  • Loading branch information
JakeWharton committed Feb 24, 2025
1 parent 7edf0ff commit c8c4a0e
Show file tree
Hide file tree
Showing 43 changed files with 528 additions and 421 deletions.
72 changes: 36 additions & 36 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ env:
GRADLE_OPTS: "-Dkotlin.incremental=false -Dorg.gradle.logging.stacktrace=full"

jobs:
terminal-zig:
tty-zig:
runs-on: macos-15
steps:
- uses: actions/checkout@v4
Expand All @@ -23,47 +23,47 @@ jobs:
version: 0.13.0

- run: zig build -p src/jvmMain/resources/jni
working-directory: mosaic-terminal
working-directory: mosaic-tty

- uses: actions/upload-artifact@v4
with:
name: mosaic-terminal-jni-libraries
path: mosaic-terminal/src/jvmMain/resources/jni
name: mosaic-tty-jni-libraries
path: mosaic-tty/src/jvmMain/resources/jni
if-no-files-found: error

terminal-test-binaries:
tty-test-binaries:
needs:
- terminal-zig
- tty-zig
runs-on: macos-15
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: mosaic-terminal-jni-libraries
path: mosaic-terminal/src/jvmMain/resources/jni
name: mosaic-tty-jni-libraries
path: mosaic-tty/src/jvmMain/resources/jni

- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version-file: .github/.java-version

- run: ./gradlew :mosaic-terminal:installJvmTestDistribution :mosaic-terminal:linkNativeDebugTests
- run: ./gradlew :mosaic-tty:installJvmTestDistribution :mosaic-tty:linkNativeDebugTests

- uses: actions/upload-artifact@v4
with:
name: mosaic-terminal-jvm-tests
path: mosaic-terminal/build/install/jvmTest
name: mosaic-tty-jvm-tests
path: mosaic-tty/build/install/jvmTest
if-no-files-found: error

- uses: actions/upload-artifact@v4
with:
name: mosaic-terminal-native-tests
path: mosaic-terminal/build/bin
name: mosaic-tty-native-tests
path: mosaic-tty/build/bin
if-no-files-found: error

terminal-tests:
tty-tests:
needs:
- terminal-test-binaries
- tty-test-binaries
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -109,7 +109,7 @@ jobs:
- uses: actions/download-artifact@v4
if: matrix.tests.type == 'native'
with:
name: mosaic-terminal-native-tests
name: mosaic-tty-native-tests

- name: Set executable bit
if: ${{ matrix.tests.type == 'native' && !startsWith(matrix.platform.os, 'windows-') }}
Expand Down Expand Up @@ -141,29 +141,29 @@ jobs:
- uses: actions/download-artifact@v4
if: matrix.tests.type == 'java'
with:
name: mosaic-terminal-jvm-tests
name: mosaic-tty-jvm-tests

- name: Set executable bit
if: ${{ matrix.tests.type == 'java' && !startsWith(matrix.platform.os, 'windows-') }}
run: chmod +x bin/mosaic-terminal-test
run: chmod +x bin/mosaic-tty-test

- run: bin/mosaic-terminal-test
- run: bin/mosaic-tty-test
if: matrix.tests.type == 'java'

# Due to https://youtrack.jetbrains.com/issue/KT-74731, we don't have a good way of packaging
# up the additional test runs for use in the above matrix-based runner. For now, run them through
# Gradle on a single OS and single JDK just to get some coverage.
terminal-shrinker-tests:
tty-shrinker-tests:
if: ${{ github.ref != 'refs/heads/trunk' }}
needs:
- terminal-zig
- tty-zig
runs-on: macos-15
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: mosaic-terminal-jni-libraries
path: mosaic-terminal/src/jvmMain/resources/jni
name: mosaic-tty-jni-libraries
path: mosaic-tty/src/jvmMain/resources/jni

- uses: actions/setup-java@v4
with:
Expand All @@ -173,19 +173,19 @@ jobs:
- run: >
./gradlew
--continue
:mosaic-terminal:jvmProGuardTest
:mosaic-terminal:jvmR8Test
:mosaic-tty:jvmProGuardTest
:mosaic-tty:jvmR8Test
build:
runs-on: macos-15
needs:
- terminal-zig
- tty-zig
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: mosaic-terminal-jni-libraries
path: mosaic-terminal/src/jvmMain/resources/jni
name: mosaic-tty-jni-libraries
path: mosaic-tty/src/jvmMain/resources/jni

- uses: actions/setup-java@v4
with:
Expand All @@ -194,7 +194,7 @@ jobs:
- uses: gradle/actions/setup-gradle@v4

# Disabling allTests should be enough, but https://youtrack.jetbrains.com/issue/KT-74509
# mosaic-terminal runs its tests above. We only run jvmTest otherwise as code is all common.
# mosaic-tty runs its tests above. We only run jvmTest otherwise as code is all common.
- run: >
./gradlew
--continue
Expand All @@ -207,18 +207,18 @@ jobs:
-x macosX64Test
-x mingwX64Test
jvmTest
-x :mosaic-terminal:jvmTest
-x :mosaic-tty:jvmTest
docs:
runs-on: macos-15
needs:
- terminal-zig
- tty-zig
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: mosaic-terminal-jni-libraries
path: mosaic-terminal/src/jvmMain/resources/jni
name: mosaic-tty-jni-libraries
path: mosaic-tty/src/jvmMain/resources/jni

- uses: actions/setup-java@v4
with:
Expand All @@ -239,7 +239,7 @@ jobs:
runs-on: ubuntu-latest
needs:
- docs
- terminal-tests
- tty-tests
- build
steps:
- name: Check
Expand All @@ -260,8 +260,8 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: mosaic-terminal-jni-libraries
path: mosaic-terminal/src/jvmMain/resources/jni
name: mosaic-tty-jni-libraries
path: mosaic-tty/src/jvmMain/resources/jni

- uses: actions/setup-java@v4
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
with:
version: 0.13.0
- run: zig build -p src/jvmMain/resources/jni
working-directory: mosaic-terminal
working-directory: mosaic-tty

- run: ./gradlew publish
env:
Expand Down
13 changes: 1 addition & 12 deletions mosaic-terminal/README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,3 @@
# Mosaic Terminal

Low-level TTY manipulation and parsing library.


## Prerequisites

The JVM target requires native libraries which are built outside Gradle using Zig 0.13.0.

After downloading or installing Zig, in the `mosaic-terminal/` directory run:
```
zig build -p src/jvmMain/resources/jni
```
to create them.
High-level terminal manipulation and parsing library.
Loading

0 comments on commit c8c4a0e

Please sign in to comment.