Skip to content

Latest commit

 

History

History
49 lines (39 loc) · 2.13 KB

DEVELOPER.md

File metadata and controls

49 lines (39 loc) · 2.13 KB

Developing huck

Building from source and the project layout. For cutting a release, see docs/DELIVERY.md; for context on the project's history, see docs/COWORK.md.

Requirements

JDK 17+ (needed for jpackage's native distribution packaging -- JDK 11 isn't enough). Only matters for building from source -- the packaged .msi/.dmg bundles its own JDK, so end users installing those don't need one.

humane-kotlin is a plain Maven Central dependency (com.netpress:humane-kotlin, pinned in build.gradle.kts) -- no sibling checkout needed.

Building

make build    # ./gradlew ktlintFormat && ./gradlew build -x test
make test     # ./gradlew ktlintFormat && ./gradlew clean test -- verbose, full nested tree
make lint     # ./gradlew ktlintCheck
make check    # ./gradlew ktlintFormat && ./gradlew clean check -- terse, PASS on success
make package  # ./gradlew packageDistributionForCurrentOS -- .dmg on macOS

Layout

  • src/main/kotlin/com/netpress/huck -- model (AppModel), networking (ScanClient), data (ScanEntry), and ui/ (ContentView, HostEntryView, ScanGridView, ConnectingView).
  • src/test/kotlin/com/netpress/huck -- Kotest specs for the above.
  • docs/COMMENTS.md -- rationale for non-obvious code, organized by file.
  • docs/COWORK.md -- context for picking this project back up cold.
  • docs/DELIVERY.md -- how to cut a release, and why the .msi isn't code-signed yet.
  • docs/releases/<tag>.md -- hand-written release notes, read by .github/workflows/windows-package.yml on a tagged release.
  • .github/workflows/windows-package.yml -- builds a real Windows .msi on a windows-latest GitHub Actions runner on every push/PR to main; on a pushed vX.Y.Z tag, also attaches that .msi to a GitHub Release using the matching docs/releases/<tag>.md as the release body.

Reference implementation

zouk (Swift) is the feature reference this should eventually match pixel-for-pixel; see its own docs/COWORK.md and docs/COMMENTS.md for the source of truth on what the real client does.