Plays short audio files such as a terminal bell through PipeWire on Linux and WASAPI on Windows.
zig-chime CONTRIBUTING.md
1.5 kB · 44 lines
Markdown
at main

Contributing to zig-chime #

Pull requests and issues go to the Tangled mirror, https://tangled.org/jcollie.dev/zig-chime.

Before you change anything #

  • Read GLOSSARY.md and use its words. A Sound is not a clip and a Player is not a device; if a change needs a new term, add it there.
  • Read docs/adr/. A decision recorded there is deliberate; a change that reverses one should add an ADR saying why.

What a change needs #

Everything runs through the Nix flake, so the toolchain is the one CI uses:

$ nix develop -c zig fmt --exclude zig-pkg --check .
$ nix develop -c reuse lint
$ nix develop -c zig build test --summary all
$ nix develop -c zig build check --summary all
$ nix develop -c zig build test -Dtarget=x86_64-windows -fwine

Wine wants a 64-bit prefix; if ~/.wine is a 32-bit one, point WINEPREFIX at an empty directory.

  • A change to build.zig.zon regenerates build.zig.zon.nix, which is what CI fetches the dependencies from:

    $ nix develop -c zon2nix --17 --nix=build.zig.zon.nix build.zig.zon
    
  • Tests must not need a sound device. CI has neither PipeWire nor a Windows audio endpoint, so behavior is tested against the null backend, which records what it was asked to play.

  • Every file carries an SPDX header, or is covered in REUSE.toml if it cannot hold one. New code is MIT.