diff options
Diffstat (limited to '')
| -rw-r--r-- | web/README.md | 38 |
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 | ``` |
| 10 | web/ | 10 | web/ |
| 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 | ||
| 17 | Serve `web/` as the document root. Binaries in `bin/` are gitignored. | 21 | Serve `web/` as the document root. Binaries in `bin/` are gitignored. |
| @@ -23,8 +27,6 @@ those directories is ignored. | |||
| 23 | 27 | ||
| 24 | ``` | 28 | ``` |
| 25 | bin/gui/zagan-bet-gui-<version>-<platform>-<arch>[.exe] | 29 | bin/gui/zagan-bet-gui-<version>-<platform>-<arch>[.exe] |
| 26 | bin/gui/zagan-bet-gui-<version>-<platform>-<arch>-install.sh | ||
| 27 | bin/gui/zagan-bet-gui-<version>-<platform>-<arch>-install.ps1 | ||
| 28 | bin/client/zagan-bet-client-<version>-<platform>-<arch>[.exe] | 30 | bin/client/zagan-bet-client-<version>-<platform>-<arch>[.exe] |
| 29 | bin/server/zagan-bet-server-<version>-<platform>-<arch>[.exe] | 31 | bin/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 | ||
| 35 | The installers are generated next to their app. They embed the app's SHA-256, | 37 | The installers are not versioned. They read `latest.php`, pick the newest build |
| 36 | check the file (or download it) and install it for the current user: Linux | 38 | for the machine, verify its SHA-256 and install it for the current user: Linux |
| 37 | writes `~/.local/bin/zagan-bet-gui` plus a `.desktop` launcher, Windows writes | 39 | writes `~/.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 |
| 39 | installer waits for Enter before closing (`-NoPause` for automation). The page | 41 | site only needs `publish.sh`; the installer links never change. Set |
| 40 | links the public git repository for the GPL corresponding source. | 42 | `ZAGAN_SITE` (Linux) or `-Site` (Windows) to test against a staging site. The |
| 43 | Windows installer waits for Enter before closing (`-NoPause` for automation). | ||
| 44 | The 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 | ||
| 50 | It reads the version from `Cargo.toml`, builds every artifact and installs | 54 | It reads the version from `Cargo.toml`, builds every artifact and installs |
| 51 | them under `web/bin` with the names above. The GUI is built with the | 55 | them under `web/bin` with the names above. The GUI is built with the |
| 52 | workspace's `gui-release` profile (LTO, stripped) and the installers are | 56 | workspace's `gui-release` profile (LTO, stripped). Run it from a clean tree so |
| 53 | rendered with Python 3 and the published SHA-256. Run it from a clean tree so | ||
| 54 | the release commit is the source the page links to. Override the destination | 57 | the release commit is the source the page links to. Override the destination |
| 55 | with `DEST=/srv/www/bin ./scripts/publish.sh`, and the download origin baked | 58 | with `DEST=/srv/www/bin ./scripts/publish.sh`; `ALLOW_DIRTY=1` skips the |
| 56 | into the installers with `URL_BASE=https://staging.example/ ./scripts/publish.sh`. | 59 | clean-tree check for a preview. The installers are static and need no |
| 57 | `ALLOW_DIRTY=1` skips the clean-tree check for a preview. | 60 | regeneration. |
| 58 | 61 | ||
| 59 | Builds are per target triple, so these must be installed: | 62 | Builds 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 |
| 62 | builds always pass `--no-default-features`, which drops the server's OpenSSL | 65 | builds always pass `--no-default-features`, which drops the server's OpenSSL |
| 63 | dependency; the client is rustls-only. The GUI needs Python 3 at publish time | 66 | dependency; the client is rustls-only. |
| 64 | for the installer templates in `scripts/installers/`. | ||
| 65 | 67 | ||
| 66 | Cargo itself cannot produce these names: it always writes | 68 | Cargo 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. |
