To automate some tasks regarding effective management of MTGO collection, that are too cumbersome for anyone to actually do them manually.
MTGO Collection Manager aims to be as effecient and accurate as possible, while still being easy to install and use, meaning:
- Blazingly fast
- As few downloads as possible to get all relevant data
- Lightweight app with tiny memory footprint (e.g. the demo with a fairly large collection uses 4.2 MB RAM on Windows 11)
- Installation limited to downloading a single binary and just running it
- No runtime dependencies on MacOS and Windows (very few on Linux)
- Installation is fully contained within the directory the binary is run from (deleting the directory leaves no trace of MTGO Collection Manager)
- No login required - All it needs is the
Full Trade List.dek
-file generated by exporting an MTGO collection.
If you have a great idea, make a feature request via an issue, thanks!
The first time MTGO Collection Manager is started, a full trade list file is needed to start tracking price data etc. The initial processing takes a few seconds as a bunch of different downloads takes place to establish the basic data needed to parse and display data about the provided collection, along with price history from Goatbots and Cardhoarder. Parsing all the data is practically instantaneous as evident by subsequent launches of the app. If new data is available for the given collection, it is downloaded on startup (options and improvements are coming). The system time is used to determine if new data is available before attempting to download and parse it.
There's scripts for building and testing all projects described in the Quickstart section below.
You're welcome to submit PRs or make issues.
If you're serious about starting a collaboration, send me a mail at mbkj@tutamail.com
.
Development in a Docker container (with .devcontainer/Dockerfile)
From the project root build the image.
if you have Go task installed run
task build-devcontainer
docker build -t mcm-devcontainer -f .devcontainer/Dockerfile .
docker run --rm -it mcm-devcontainer
Now continuing from the container's shell
task build && task test
The very first build will take a while...
If you don't want to develop in the container but still want to confirm that it builds and tests passes, you can run simply run task build-devcontainer && task test-devcontainer
.
Install Go Task then build and run tests through the task
command.
Check versions of Rust/Go/C++ (also display minimum required versions) and more
task print-tool-versions
Build all projects (in parallel)
task build
Test all projects (in parallel)
task test
Build/test a single subproject with the {projectname}:
-prefix e.g.
task mtgogetter:test
Compiling FLTK requires some development headers on Linux.
Everything should be in ubuntu-fltk-dev-headers.txt which the CI Linux runners install with the minimal install-ubuntu-fltk-dev-headers.sh script, you can invoke that script as well to install needed headers.
Tested on Ubuntu 22.04.3 and Lubuntu 22.04.3.
When compiling with GCC you will need headers for statically linking with libstdc++, which are installable via dnf and are found as libstdc++-static.<CPU architecture>
or simiar, e.g. libstdc++-static.x86_64
.
Tested on CentOS Stream 9.