Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 76 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
name: Bug Report
description: Report a bug or unexpected behaviour in mpqcli.
title: "[Bug]: "
body:
- type: markdown
attributes:
value: |
Please fill in as much detail as possible. The more context you provide, the faster the bug can be investigated.

- type: input
id: version
attributes:
label: mpqcli version
description: Run `mpqcli version` and paste the output here.
placeholder: "0.9.8"
validations:
required: true

- type: dropdown
id: os
attributes:
label: Host OS
options:
- Linux
- Windows
- WSL (Windows Subsystem for Linux)
- macOS
- Other
validations:
required: true

- type: dropdown
id: install-method
attributes:
label: Installation method
options:
- Prebuilt binary
- Docker
- Built from source
- Other
validations:
required: true

- type: input
id: command
attributes:
label: mpqcli command
description: The exact command you ran.
placeholder: "mpqcli list wow-patch.mpq"
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected behaviour
description: What did you expect to happen?
validations:
required: true

- type: textarea
id: actual
attributes:
label: Actual behaviour / error output
description: What actually happened? Paste any error messages or unexpected output here.
render: shell
validations:
required: true

- type: textarea
id: context
attributes:
label: Additional context
description: Anything else that might be relevant (e.g. MPQ archive source, file sizes, related issues).
validations:
required: false
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
blank_issues_enabled: false
28 changes: 28 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Feature Request
description: Suggest a new feature or improvement for mpqcli.
title: "[Feature]: "
body:
- type: textarea
id: problem
attributes:
label: Problem
description: What problem does this feature solve, or what is currently missing?
placeholder: "When I run mpqcli ..., I cannot ..."
validations:
required: true

- type: textarea
id: solution
attributes:
label: Proposed solution
description: Describe the feature or change you would like to see.
validations:
required: true

- type: textarea
id: context
attributes:
label: Additional context
description: Any other context, examples, or references that might be useful.
validations:
required: false
6 changes: 3 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ jobs:
echo "Binary created: mpqcli-linux-${{ matrix.arch }}-${{ matrix.libc }}"

- name: Upload binary as artifact
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v7
with:
name: mpqcli-linux-${{ matrix.arch }}-${{ matrix.libc }}
path: mpqcli-linux-${{ matrix.arch }}-${{ matrix.libc }}
Expand Down Expand Up @@ -93,7 +93,7 @@ jobs:
run: cp build/bin/Release/mpqcli.exe build/bin/mpqcli-windows-amd64.exe

- name: Upload Artifact
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v7
with:
name: mpqcli-windows-amd64.exe
path: build/bin/mpqcli-windows-amd64.exe
Expand All @@ -118,7 +118,7 @@ jobs:
docker save mpqcli -o mpqcli-docker.tar

- name: Upload Docker image as artifact
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v7
with:
name: mpqcli-docker
path: mpqcli-docker.tar
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/prerelease.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,27 +15,27 @@ jobs:
uses: actions/checkout@v6

- name: Download Linux GLIBC binary
uses: actions/download-artifact@v7
uses: actions/download-artifact@v8
with:
name: mpqcli-linux-amd64-glibc

- name: Download Linux MUSL binary
uses: actions/download-artifact@v7
uses: actions/download-artifact@v8
with:
name: mpqcli-linux-amd64-musl

- name: Download Linux ARM64 GLIBC binary
uses: actions/download-artifact@v7
uses: actions/download-artifact@v8
with:
name: mpqcli-linux-arm64-glibc

- name: Download Linux ARM64 MUSL binary
uses: actions/download-artifact@v7
uses: actions/download-artifact@v8
with:
name: mpqcli-linux-arm64-musl

- name: Download Windows binary
uses: actions/download-artifact@v7
uses: actions/download-artifact@v8
with:
name: mpqcli-windows-amd64.exe

Expand Down Expand Up @@ -67,7 +67,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Download Docker image artifact
uses: actions/download-artifact@v7
uses: actions/download-artifact@v8
with:
name: mpqcli-docker

Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,27 +15,27 @@ jobs:
uses: actions/checkout@v6

- name: Download Linux GLIBC binary
uses: actions/download-artifact@v7
uses: actions/download-artifact@v8
with:
name: mpqcli-linux-amd64-glibc

- name: Download Linux MUSL binary
uses: actions/download-artifact@v7
uses: actions/download-artifact@v8
with:
name: mpqcli-linux-amd64-musl

- name: Download Linux ARM64 GLIBC binary
uses: actions/download-artifact@v7
uses: actions/download-artifact@v8
with:
name: mpqcli-linux-arm64-glibc

- name: Download Linux ARM64 MUSL binary
uses: actions/download-artifact@v7
uses: actions/download-artifact@v8
with:
name: mpqcli-linux-arm64-musl

- name: Download Windows binary
uses: actions/download-artifact@v7
uses: actions/download-artifact@v8
with:
name: mpqcli-windows-amd64.exe

Expand Down Expand Up @@ -65,7 +65,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Download Docker image artifact
uses: actions/download-artifact@v7
uses: actions/download-artifact@v8
with:
name: mpqcli-docker

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:
submodules: false

- name: Download Linux binary (${{ matrix.arch }} ${{ matrix.libc }})
uses: actions/download-artifact@v7
uses: actions/download-artifact@v8
with:
name: mpqcli-linux-${{ matrix.arch }}-${{ matrix.libc }}
path: build/bin
Expand Down Expand Up @@ -73,7 +73,7 @@ jobs:
submodules: false

- name: Download Windows binary
uses: actions/download-artifact@v7
uses: actions/download-artifact@v8
with:
name: mpqcli-windows-amd64.exe
path: build/bin/Release
Expand Down
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
# Changelog

## 0.9.8 - 2026-03-22

### Added

- The `create` subcommand now supports a single file
- The `add` and `create` subcommands have additional arguments for specifiying the file location in the MPQ archive (`name-in-archive` and `dir-in-archive`)
- The `add` subcommand can now overwrite existing files if requested (`overwrite`)

### Fixed

- Several memory leaks

### Thanks

- Thanks to @sjoblomj for adding more features and fixes in this release

## 0.9.7 - 2026-02-23

### Added
Expand All @@ -23,6 +39,10 @@

- Improved locale printing and display throughout

### Thanks

- A big thank you to @sjoblomj for adding so many features in this release

## 0.9.6 - 2025-12-23

### Added
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.10)

project(MPQCLI VERSION 0.9.7)
project(MPQCLI VERSION 0.9.8)

# Options
option(BUILD_MPQCLI "Build the mpqcli CLI app" ON)
Expand Down
47 changes: 47 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Contributing

Contributions are welcome. Please read the guidelines below before opening a pull request.

## Before You Start

If you are unsure whether a feature fits the project, or whether an existing tool could already be combined with `mpqcli` to achieve the same result, open an issue first. This avoids wasted effort and keeps the project focused.

**mpqcli follows the Unix philosophy.** The tool is designed to do one thing well and to compose with other tools via pipes and redirection. If you find yourself wanting to add functionality that could be handled by a separate tool — for example, sorting the output of `list` — the right answer is usually to pipe the output to that tool rather than adding it here.

## Requirements for a Pull Request

### 1. Builds on your platform

Make sure the project builds cleanly on your development machine before opening a PR:

```
make build_linux # Linux
make build_windows # Windows
```

A PR automatically triggers the CI build workflow, which compiles and tests across all supported Linux targets (AMD64 and ARM64, glibc and musl). You are not expected to reproduce all of those locally.

### 2. Tests pass

Run the test suite before submitting:

```
make test_create_venv # first-time setup only
make test_mpqcli
```

All tests must pass without errors.

### 3. New features should include tests

If your change adds or modifies user-facing functionality — such as a new subcommand flag or a change in output format — please include a corresponding test in the `test/` directory. The existing test files (`test_list.py`, `test_add.py`, etc.) are good references for the test style and fixtures used.

### 4. Match the existing code style

There is no enforced formatter. Write C++ that looks consistent with the surrounding code, and Python tests that follow the style of the existing test files.

## Workflow Summary

1. Fork the repository and create a branch for your change
2. Make your changes and verify they build and all tests pass
3. Open a pull request with a clear description of what was changed and why
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2023 Thomas Laurenson
Copyright (c) 2023-2026 Thomas Laurenson

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
8 changes: 4 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -47,19 +47,19 @@ docker_glibc_run: ## Run the glibc Docker image

# TEST
test_create_venv: ## Create Python venv and install test dependencies
python3 -m venv ./venv
. ./venv/bin/activate && \
python3 -m venv ./.venv
. ./.venv/bin/activate && \
pip3 install -r test/requirements.txt

test_mpqcli: ## Run pytest test suite
. ./venv/bin/activate && \
. ./.venv/bin/activate && \
python3 -m pytest test -s

test_clean: ## Remove test data directory
rm -rf test/data

test_lint: ## Run ruff linter on test directory
. ./venv/bin/activate && \
. ./.venv/bin/activate && \
ruff check ./test

# CLEAN
Expand Down
Loading