mirror of
https://github.com/aclist/dztui.git
synced 2026-08-27 10:17:31 +02:00
Merge pull request #34 from aclist/chore/build-tools
chore: add build scripts
This commit is contained in:
commit
9b80c98273
@ -1,5 +1,8 @@
|
||||
# TODO: link to here from sphinx docs
|
||||
|
||||
# Setting up precommit hooks
|
||||
pre-commit install
|
||||
|
||||
# Fetching submodules
|
||||
git submodule update --recursive --init
|
||||
|
||||
@ -9,5 +12,7 @@ uv pip install -e .[dev]
|
||||
# Building documentation
|
||||
sphinx-build -M html source build -a
|
||||
|
||||
# Building installer package
|
||||
TBD
|
||||
# Building standalone DZGUI release binaries
|
||||
1. Run `./scripts/dl_pyapp.sh`
|
||||
2. Run `python3 scripts/release.py`
|
||||
3. Generate a release and tag against the bundled `dzgui` executable
|
||||
|
||||
4
LICENSE
4
LICENSE
@ -1,4 +1,6 @@
|
||||
For additional licenses to submodules, see docs/licenses.
|
||||
Additional licenses to git submodules not explicitly shipped with the source code:
|
||||
python-a2s: https://raw.githubusercontent.com/Yepoleb/python-a2s/refs/heads/master/LICENSE
|
||||
dayzquery: https://raw.githubusercontent.com/Yepoleb/dayzquery/refs/heads/master/LICENSE
|
||||
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
|
||||
28
README.md
28
README.md
@ -1,22 +1,22 @@
|
||||
## What this is
|
||||
DZGUI allows you to connect to both official and modded/community DayZ servers on Linux and provides a graphical interface for doing so.
|
||||
DZGUI is a turnkey browser and mod manager for DayZ on Linux. It allows you to connect to both official and modded/community DayZ servers on Linux via a graphical user interface (GUI).
|
||||
|
||||
This overcomes certain limitations in the Linux client and helps prepare the game to launch by providing features like:
|
||||
|
||||
- Search for and display server metadata in a table (server name, player count, ping, queue size, current gametime, distance, IP)
|
||||
- Search for and display global and LAN servers via an interactive table
|
||||
- Supports official, third-party, and modded DayZ servers
|
||||
- Automatically find and prepare mods being requested by servers
|
||||
- Add/delete/manage favorite servers by IP or ID
|
||||
- Quick-connect to favorite/recent servers
|
||||
- Find and prepare mods being requested by servers (choose from manual or automatic installation)
|
||||
- Bulk delete/update local mods
|
||||
- Concatenate launch options to pass to Steam
|
||||
- Connect to mod-enabled LAN servers
|
||||
- Manage local mods and symlinks
|
||||
- Prepare launch options to pass to Steam
|
||||
|
||||
## Setup and usage
|
||||
|
||||
Refer to the documentation for installation and setup instructions:
|
||||
Please refer to the documentation for installation and setup instructions:
|
||||
|
||||
- [GitHub](https://aclist.github.io/dzgui/index.html)
|
||||
- [Mirror (Codeberg)](https://aclist.codeberg.page)
|
||||
- [Codeberg (Mirror)](https://aclist.codeberg.page)
|
||||
|
||||

|
||||
|
||||
@ -24,4 +24,14 @@ Refer to the documentation for installation and setup instructions:
|
||||
|
||||
Geolocation records from [DB-IP](https://db-ip.com) under [CC 4.0 license](https://creativecommons.org/licenses/by/4.0/)
|
||||
|
||||
# TODO: mention third party libraries
|
||||
This tool uses [python-a2s](https://github.com/Yepoleb/python-a2s) and [dayzquery](https://github.com/Yepoleb/dayzquery) as submodules; licenses for these submodules can be found in the LICENSES file
|
||||
of the project root.
|
||||
|
||||
Both the geolocation records and submodules listed above are not shipped with the source code, but are retrieved and assembled at runtime.
|
||||
|
||||
Finally, executable versions of DZGUI shipped as release binaries are thin wrappers around the Python interpreter, and also retrieve and assemble the above dependencies at runtime on the end-user's
|
||||
machine, rather than using pre-compiled source code. Users wishing to review these dependencies can inspect the 'pyproject.toml' manifest in the project root.
|
||||
|
||||
## Disclaimer
|
||||
|
||||
DZGUI is beta-quality software and is provided as-is.
|
||||
|
||||
@ -39,7 +39,11 @@ Issues = "https://github.com/aclist/dzgui/issues"
|
||||
Changelog = "https://github.com/aclist/dzgui/blob/main/CHANGELOG.md"
|
||||
|
||||
[project.optional-dependencies]
|
||||
docs = ["sphinx"]
|
||||
docs = [
|
||||
"sphinx==9.0.4",
|
||||
"sphinx-rtd_theme==3.1.0",
|
||||
"sphinx-copybutton==0.5.2"
|
||||
]
|
||||
test = [
|
||||
"black==25.1.0",
|
||||
"pre-commit==4.4.0",
|
||||
@ -55,6 +59,7 @@ lint = [
|
||||
"types-psutil==7.2.2.20260508",
|
||||
]
|
||||
build = [
|
||||
"pre-commit==4.4.0",
|
||||
"build==1.5.0",
|
||||
]
|
||||
|
||||
|
||||
9
scripts/dl_pyapp.sh
Executable file
9
scripts/dl_pyapp.sh
Executable file
@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
echo "$PWD"
|
||||
url="https://github.com/ofek/pyapp/releases/latest/download/source.tar.gz"
|
||||
output="${PWD}/pyapp-source.tar.gz"
|
||||
curl "$url" -Lo "$output"
|
||||
tar -xzf "$output"
|
||||
mv ${PWD}/pyapp-v* ${PWD}/pyapp-latest
|
||||
rm "$output"
|
||||
40
scripts/release.py
Normal file
40
scripts/release.py
Normal file
@ -0,0 +1,40 @@
|
||||
import build
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
from importlib import metadata
|
||||
from pathlib import Path
|
||||
|
||||
from dzgui.const.constants import APP_NAME_LOWER
|
||||
|
||||
root = Path(__file__).resolve().parents[1]
|
||||
output = root.joinpath("dist")
|
||||
|
||||
pyapp_dir = root.joinpath("pyapp-latest")
|
||||
|
||||
builder = build.ProjectBuilder(root)
|
||||
builder.build("wheel", output_directory=output)
|
||||
|
||||
interpreter = "py3"
|
||||
arch = "none"
|
||||
target = "any"
|
||||
version = metadata.version(APP_NAME_LOWER)
|
||||
filename = f"{APP_NAME_LOWER}-{version}-{interpreter}-{arch}-{target}.whl"
|
||||
|
||||
wheel = str(output.joinpath(filename))
|
||||
entrypoint = "dzgui.main:main"
|
||||
|
||||
env = os.environ
|
||||
env["PYAPP_PROJECT_VERSION"] = version
|
||||
env["PYAPP_PROJECT_NAME"] = APP_NAME_LOWER
|
||||
env["PYAPP_EXEC_SPEC"] = entrypoint
|
||||
env["PYAPP_PROJECT_PATH"] = wheel
|
||||
env["PYAPP_DISTRIBUTION_EMBED"] = "1"
|
||||
env["PYAPP_PYTHON_VERSION"] = "3.13"
|
||||
|
||||
proc = subprocess.run(["cargo", "build", "--release"], env=env, cwd=pyapp_dir)
|
||||
if proc.returncode == 0:
|
||||
output_exe = root.joinpath("pyapp-latest/target/release/pyapp")
|
||||
release_exe = output.joinpath("dzgui")
|
||||
output_exe.rename(release_exe)
|
||||
print(f"Wrote output to '{release_exe}'")
|
||||
Loading…
Reference in New Issue
Block a user