mirror of
https://github.com/aclist/dztui.git
synced 2026-08-29 19:27:13 +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
|
# TODO: link to here from sphinx docs
|
||||||
|
|
||||||
|
# Setting up precommit hooks
|
||||||
|
pre-commit install
|
||||||
|
|
||||||
# Fetching submodules
|
# Fetching submodules
|
||||||
git submodule update --recursive --init
|
git submodule update --recursive --init
|
||||||
|
|
||||||
@ -9,5 +12,7 @@ uv pip install -e .[dev]
|
|||||||
# Building documentation
|
# Building documentation
|
||||||
sphinx-build -M html source build -a
|
sphinx-build -M html source build -a
|
||||||
|
|
||||||
# Building installer package
|
# Building standalone DZGUI release binaries
|
||||||
TBD
|
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
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
|||||||
28
README.md
28
README.md
@ -1,22 +1,22 @@
|
|||||||
## What this is
|
## 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:
|
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
|
- Add/delete/manage favorite servers by IP or ID
|
||||||
- Quick-connect to favorite/recent servers
|
- Quick-connect to favorite/recent servers
|
||||||
- Find and prepare mods being requested by servers (choose from manual or automatic installation)
|
- Manage local mods and symlinks
|
||||||
- Bulk delete/update local mods
|
- Prepare launch options to pass to Steam
|
||||||
- Concatenate launch options to pass to Steam
|
|
||||||
- Connect to mod-enabled LAN servers
|
|
||||||
|
|
||||||
## Setup and usage
|
## 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)
|
- [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/)
|
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"
|
Changelog = "https://github.com/aclist/dzgui/blob/main/CHANGELOG.md"
|
||||||
|
|
||||||
[project.optional-dependencies]
|
[project.optional-dependencies]
|
||||||
docs = ["sphinx"]
|
docs = [
|
||||||
|
"sphinx==9.0.4",
|
||||||
|
"sphinx-rtd_theme==3.1.0",
|
||||||
|
"sphinx-copybutton==0.5.2"
|
||||||
|
]
|
||||||
test = [
|
test = [
|
||||||
"black==25.1.0",
|
"black==25.1.0",
|
||||||
"pre-commit==4.4.0",
|
"pre-commit==4.4.0",
|
||||||
@ -55,6 +59,7 @@ lint = [
|
|||||||
"types-psutil==7.2.2.20260508",
|
"types-psutil==7.2.2.20260508",
|
||||||
]
|
]
|
||||||
build = [
|
build = [
|
||||||
|
"pre-commit==4.4.0",
|
||||||
"build==1.5.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