diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e8fd589..28289b7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,7 +38,7 @@ jobs: id: chrome - name: gofmt run: | - unformatted=$(gofmt -s -l asset browser cli clone cmd robots sanitize urlx) + unformatted=$(gofmt -s -l .) if [ -n "$unformatted" ]; then echo "These files need gofmt -s -w:" echo "$unformatted" @@ -101,3 +101,21 @@ jobs: run: | go mod tidy git diff --exit-code -- go.mod go.sum + + # Compile the optional native-window viewer (-tags webview, cgo) so that path + # keeps building. The default CI build is pure Go and never touches it. The + # viewer code is the same Go on every OS, only the system WebView library + # differs, so a macOS compile (WebKit ships in the SDK) catches our + # regressions without the WebKitGTK version juggling Linux runners need. It is + # build-only: actually opening a window needs a display. + webview: + runs-on: macos-latest + steps: + - uses: actions/checkout@v5 + - uses: actions/setup-go@v6 + with: + go-version-file: go.mod + check-latest: true + cache: true + - name: build webview viewer + run: CGO_ENABLED=1 go build -tags webview ./cmd/kage diff --git a/README.md b/README.md index 6fddfec..ecbfe4a 100644 --- a/README.md +++ b/README.md @@ -149,7 +149,7 @@ kage pack paulgraham.com --format binary -o paulgraham ./paulgraham ``` -The appended archive is platform-independent; only the base executable carries the architecture. By default kage appends to itself, so you get a viewer for the machine you ran it on. Point `--base` at a kage built for another OS to produce a viewer for that platform from your own machine: +The appended archive is platform-independent; only the base executable carries the architecture. By default kage appends to itself, so you get a viewer for the machine you ran it on. Point `--base` at a kage built for another OS (grab one from a [release](https://github.com/tamnd/kage/releases); every platform ships one) to produce a viewer for that platform from your own machine. kage reads the base's executable header to figure out the target, so a Windows viewer automatically gets a `.exe` name: ```bash # Sitting on a Mac, build a Windows viewer diff --git a/docs/content/guides/packing-a-mirror.md b/docs/content/guides/packing-a-mirror.md index a3ca6f2..a62bf02 100644 --- a/docs/content/guides/packing-a-mirror.md +++ b/docs/content/guides/packing-a-mirror.md @@ -83,7 +83,7 @@ The window title comes from the archive's title. This build needs cgo and links ### Build a viewer for another platform -The appended archive is platform-independent; only the base executable carries the architecture. Point `--base` at a kage binary built for another OS (download one from a kage release) to produce a viewer for that platform from your own machine: +The appended archive is platform-independent; only the base executable carries the architecture. Point `--base` at a kage binary built for another OS (download one from a kage release; every platform ships one) to produce a viewer for that platform from your own machine. kage reads the base's executable header to detect the target OS, so a Windows viewer automatically gets a `.exe` name and the run hint names the right platform: ```bash # From macOS, build a Windows viewer