Skip to main content

Python program for quick launching various mod development configurations for Arma through a simple CLI.

Project description

ArmaQDL

CI Test PyPI PyPI Python winstall

Quick launching various mod development configurations for Arma through a simple CLI.

Through easily-identifiable preset locations, this program can provide a fast and developer-friendly CLI with some additional optional features, such as building mods and opening the last log file. It is designed around easily modifiable location groups and build tools.

Features

  • Easy mod launching from different preset locations
  • Load mission via mission name only or specifying profile name
  • Build development mods
  • Open the last log file
  • Select the profile to start with
  • Toggle file patching, script errors, signature check and windowed mode
  • Mod location wildcards (glob pattern matching)
  • Easy dedicated server and headless client launching
  • Load mission on dedicated server (by manipulating server.cfg)
  • Join server

Installation

ArmaQDL is distributed on PyPI as well as a Standalone executable (Windows only).

PyPI provides easier updating of ArmaQDL, while Standalone requires manual updates.

WinGet (recommended)

Open Command Prompt, PowerShell or any other terminal application and install ArmaQDL.

$ winget install armaqdl

Standalone

Download armaqdl.exe from latest release and place it in a convenient location.

Note: Add location directory to PATH environmental variable to use it directly.

PyPI

Installation as a user is recommended to avoid permission issues with CLI script installation.

$ pip install --user ArmaQDL

Note: Add pip installation directory to PATH environmental variable to use it directly.

Setup

Open Command Prompt, PowerShell or any other terminal application, and run ArmaQDL once to generate the configuration files (this will not launch Arma).

# WinGet / CMD / PyPI if in PATH
$ armaqdl

# PyPI as a Python module
$ python -m armaqdl

Note: Add .exe if armaqdl is not enough to find the executable.

You should modify the default settings to your needs. Launching without setup may create a new profile and result in failed launches.

Settings file can be found in your operating system's standard configuration directory, usually:

  • Windows: %AppData%\ArmaQDL\settings.toml
  • Linux: ~/.config/ArmaQDL/settings.toml

Settings are in TOML format and can be edited with any text editor.

Dedicated Server

Loading a mission on dedicated server automatically requires server.cfg to be present next to arma3_x64.exe with at least the following mission and Headless Client entries.

// Automatically load the first mission in rotation
class Missions {
    class Test {
        template = "mission.vr";
    };
};

// Allow Headless Clients from local machine
headlessClients[] = {"127.0.0.1"};
localClient[] = {"127.0.0.1"};

// Allow multiple connections, unsigned mods and file patching (as needed)
kickDuplicate = 0;
verifySignatures = 0;
allowedFilePatching = 2;

ArmaQDL copies the mission from used profile's missions folder and updates the mission name in server.cfg to make the server automatically load it.

Usage

ArmaQDL is a CLI script, view all the options with the --help flag.

$ armaqdl -h

Note: All examples use armaqdl to launch ArmaQDL, replace it appropriately depending on your install.

Example 1: (launching and building mods)

Launches Arma with CBA from main location, ACE3 from Workshop install and ACRE2 from local development folder. Additionally builds ACRE2 mod and opens the latest log file. Loads Arma directly into the editor using the specified mission from the "Soldier" profile.

$ armaqdl main:cba workshop:@ace dev:acre2:b -m Soldier:test.vr

Specific build tool can also be specified, such as HEMTT.

$ armaqdl main:cba workshop:@ace dev:acre2:bhemtt -m Soldier:test.vr

Example 2: (server and mission handling)

Launches Arma Server with CBA from local development folder and loads specified mission from default profile's missions folder, copying it to the server in the process.

$ armaqdl dev:cba -m test.vr -s

Launches Arma with CBA from local development folder and connects to the given server with the given password (-j defaults to the settings file).

$ armaqdl dev:cba -j 192.168.1.1:2302:test

Example 3: (glob and skipping)

Launches Arma with all mods in a folder modpack from main location, skipping ACE3 in the same folder and instead loading ACE3 from a local development folder. This is useful for replacing a subset of mods from a bigger modpack.

$ armaqdl main:modpack\* main:modpack\ace:s dev:ace

Example 4: (launch types)

Launches Arma with mods from local development folder, CBA using HEMTT release build, ACE3 using automatic launch type determination and ACRE2 using non-HEMTT build. Available launch types are dev, build, release for HEMTT or none for non-HEMTT addons/. Automatic determination uses HEMTT if .hemttout folder exists with launch type as specified in settings file, or dev if not specified.

$ armaqdl dev:cba:trelease dev:ace dev:acre2:t

Build type for HEMTT can also be specified using the same flag in addition to build flag.

$ armaqdl dev:cba:bhemtt:trelease dev:ace:b:tbuild

Example 5: (optionals)

Note: Only optionals inside optionals folder in a full @mod folder structure (such as HEMTT produces) are supported.

Launches Arma with Theseus Services from local development folder and its MELB Variants optional skipping the prefix using glob pattern matching. @ must still be used for each optional (or pattern) specified.

$ armaqdl dev:TheseusServices:o@*variants_melb

Glob pattern matching may also be used to match multiple optionals.

$ armaqdl dev:TheseusServices:o@*variants*

Development

ArmaQDL uses Hatchling as a build backend and flake8 as a style guide.

$ pip install --user -e .

Hatch is the primary project manager of choice, but any project adhering to PEP 621 (pyproject.toml specification) can be used.

# Run development build
$ hatch run armaqdl
# Lint with flake8
$ hatch run lint
# Test with pytest
$ hatch run test
# Bundle with PyInstaller
$ hatch run static:bundle

Limited Linux support exists for testing purposes, but launching Arma or opening the last log file is not supported. Contributions are welcome!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

armaqdl-1.0.0.tar.gz (14.7 kB view details)

Uploaded Source

Built Distribution

armaqdl-1.0.0-py3-none-any.whl (14.8 kB view details)

Uploaded Python 3

File details

Details for the file armaqdl-1.0.0.tar.gz.

File metadata

  • Download URL: armaqdl-1.0.0.tar.gz
  • Upload date:
  • Size: 14.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for armaqdl-1.0.0.tar.gz
Algorithm Hash digest
SHA256 40e1ba8ba2c30529b018966b23e5ab87ecf7330ffeaaa5bdddf8133eebd4c1ed
MD5 21ed1654628306817d36c1d1ff588d59
BLAKE2b-256 7b80cc1143abbcabc3ee7936d482462ee668977563bf1b757f59dff742dd5125

See more details on using hashes here.

File details

Details for the file armaqdl-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: armaqdl-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 14.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for armaqdl-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8ccb065268bc8c8c8f17029619208ab53a4beda2957bb4dfdc864cc3d314ec30
MD5 504d476eeeec9fc0b7ca393c1bd01639
BLAKE2b-256 39a5cd531794f1656e86afdc91fc4b4fdcf9d2f4264f246449a2c292fda176f4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page