summaryrefslogtreecommitdiffstats
path: root/web/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'web/README.md')
-rw-r--r--web/README.md38
1 files changed, 20 insertions, 18 deletions
diff --git a/web/README.md b/web/README.md
index 1ee794f..13f5f85 100644
--- a/web/README.md
+++ b/web/README.md
@@ -8,10 +8,14 @@ browser defaults: black text, blue links, monospace checksums. PHP 8.0+.
8 8
9``` 9```
10web/ 10web/
11 index.php 11 index.php the download page
12 bin/gui/ served at /bin/gui/... (app and installers) 12 latest.php newest-version feed for the installers
13 bin/client/ served at /bin/client/... 13 releases.php shared scanner and hash cache
14 bin/server/ served at /bin/server/... 14 install.sh stable Linux installer
15 install.ps1 stable Windows installer
16 bin/gui/ apps, served at /bin/gui/...
17 bin/client/ terminal clients
18 bin/server/ servers
15``` 19```
16 20
17Serve `web/` as the document root. Binaries in `bin/` are gitignored. 21Serve `web/` as the document root. Binaries in `bin/` are gitignored.
@@ -23,8 +27,6 @@ those directories is ignored.
23 27
24``` 28```
25bin/gui/zagan-bet-gui-<version>-<platform>-<arch>[.exe] 29bin/gui/zagan-bet-gui-<version>-<platform>-<arch>[.exe]
26bin/gui/zagan-bet-gui-<version>-<platform>-<arch>-install.sh
27bin/gui/zagan-bet-gui-<version>-<platform>-<arch>-install.ps1
28bin/client/zagan-bet-client-<version>-<platform>-<arch>[.exe] 30bin/client/zagan-bet-client-<version>-<platform>-<arch>[.exe]
29bin/server/zagan-bet-server-<version>-<platform>-<arch>[.exe] 31bin/server/zagan-bet-server-<version>-<platform>-<arch>[.exe]
30``` 32```
@@ -32,12 +34,14 @@ bin/server/zagan-bet-server-<version>-<platform>-<arch>[.exe]
32`<version>` is `MAJOR.MINOR.PATCH`, `<platform>` is `linux`, `windows` or 34`<version>` is `MAJOR.MINOR.PATCH`, `<platform>` is `linux`, `windows` or
33`macos`, `<arch>` is `x86_64`, `i686` or `aarch64`. 35`macos`, `<arch>` is `x86_64`, `i686` or `aarch64`.
34 36
35The installers are generated next to their app. They embed the app's SHA-256, 37The installers are not versioned. They read `latest.php`, pick the newest build
36check the file (or download it) and install it for the current user: Linux 38for the machine, verify its SHA-256 and install it for the current user: Linux
37writes `~/.local/bin/zagan-bet-gui` plus a `.desktop` launcher, Windows writes 39writes `~/.local/bin/zagan-bet-gui` plus a `.desktop` launcher, Windows writes
38`%LOCALAPPDATA%\Programs\Zagan-Bet` plus a Start-menu shortcut. The Windows 40`%LOCALAPPDATA%\Programs\Zagan-Bet` plus a Start-menu shortcut. Updating the
39installer waits for Enter before closing (`-NoPause` for automation). The page 41site only needs `publish.sh`; the installer links never change. Set
40links the public git repository for the GPL corresponding source. 42`ZAGAN_SITE` (Linux) or `-Site` (Windows) to test against a staging site. The
43Windows installer waits for Enter before closing (`-NoPause` for automation).
44The page links the public git repository for the GPL corresponding source.
41 45
42## Publishing a build 46## Publishing a build
43 47
@@ -49,19 +53,17 @@ From the repository root:
49 53
50It reads the version from `Cargo.toml`, builds every artifact and installs 54It reads the version from `Cargo.toml`, builds every artifact and installs
51them under `web/bin` with the names above. The GUI is built with the 55them under `web/bin` with the names above. The GUI is built with the
52workspace's `gui-release` profile (LTO, stripped) and the installers are 56workspace's `gui-release` profile (LTO, stripped). Run it from a clean tree so
53rendered with Python 3 and the published SHA-256. Run it from a clean tree so
54the release commit is the source the page links to. Override the destination 57the release commit is the source the page links to. Override the destination
55with `DEST=/srv/www/bin ./scripts/publish.sh`, and the download origin baked 58with `DEST=/srv/www/bin ./scripts/publish.sh`; `ALLOW_DIRTY=1` skips the
56into the installers with `URL_BASE=https://staging.example/ ./scripts/publish.sh`. 59clean-tree check for a preview. The installers are static and need no
57`ALLOW_DIRTY=1` skips the clean-tree check for a preview. 60regeneration.
58 61
59Builds are per target triple, so these must be installed: 62Builds are per target triple, so these must be installed:
60`x86_64-unknown-linux-gnu`, `i686-unknown-linux-gnu` and 63`x86_64-unknown-linux-gnu`, `i686-unknown-linux-gnu` and
61`x86_64-pc-windows-gnu`, plus the mingw linker for the Windows build. Client 64`x86_64-pc-windows-gnu`, plus the mingw linker for the Windows build. Client
62builds always pass `--no-default-features`, which drops the server's OpenSSL 65builds always pass `--no-default-features`, which drops the server's OpenSSL
63dependency; the client is rustls-only. The GUI needs Python 3 at publish time 66dependency; the client is rustls-only.
64for the installer templates in `scripts/installers/`.
65 67
66Cargo itself cannot produce these names: it always writes 68Cargo itself cannot produce these names: it always writes
67`target/<triple>/release/<bin>`. The script renames after each build. 69`target/<triple>/release/<bin>`. The script renames after each build.