summaryrefslogtreecommitdiffstats
path: root/web/README.md
blob: 5434e28c5143c90a5acdbc06a5706266319f41c2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# Download page

`index.php` scans `bin/client` and `bin/server` on every request and renders
whatever builds it finds, with version, size and SHA-256. No database, no
JavaScript, no CSS, no dependencies. The page is plain browser defaults:
black text, blue links, monospace checksums. PHP 8.0+.

## Layout

```
web/
  index.php
  bin/client/    served at /bin/client/...
  bin/server/    served at /bin/server/...
```

Serve `web/` as the document root. Binaries in `bin/` are gitignored.

## Naming

The page only lists files that match the release pattern; anything else in
those directories is ignored.

```
zagan-bet-client-<version>-<platform>-<arch>[.exe]
zagan-bet-server-<version>-<platform>-<arch>
```

`<version>` is `MAJOR.MINOR.PATCH`, `<platform>` is `linux`, `windows` or
`macos`, `<arch>` is `x86_64`, `i686` or `aarch64`.

## Publishing a build

From the repository root, with the version taken from `Cargo.toml`:

```sh
V=$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -1)

cargo build --release --target x86_64-unknown-linux-gnu
cargo build --release --bin client --no-default-features --target i686-unknown-linux-gnu
cargo build --release --bin client --target x86_64-pc-windows-gnu

cp "target/x86_64-unknown-linux-gnu/release/server"   "web/bin/server/zagan-bet-server-$V-linux-x86_64"
cp "target/x86_64-unknown-linux-gnu/release/client"   "web/bin/client/zagan-bet-client-$V-linux-x86_64"
cp "target/i686-unknown-linux-gnu/release/client"     "web/bin/client/zagan-bet-client-$V-linux-i686"
cp "target/x86_64-pc-windows-gnu/release/client.exe"  "web/bin/client/zagan-bet-client-$V-windows-x86_64.exe"
```

`--no-default-features` drops the server's OpenSSL dependency, which is what
the 32-bit client build would otherwise fail on.

## Preview locally

```sh
php -S 127.0.0.1:8899 -t web
```

Then open <http://127.0.0.1:8899/>.

## Notes

- Hashes are computed per request with `hash_file()`. That is fine for a
  handful of builds; add an mtime-keyed cache if the directory grows.
- The page lists every build it finds, newest version first, so old releases
  stay downloadable until you remove them from `bin/`.
- The checksum block is in `sha256sum` format, so visitors can save it as
  `SHA256SUMS` and run `sha256sum -c SHA256SUMS`.