/mtgo-collection-manager-old

A snapshot from when MTGO collection manager was written in a mix of C++, Go, and Rust. Checkout the most recent MTGO collection manager at https://github.com/CramBL/mtgo-collection-manager

Primary LanguageC++MIT LicenseMIT

logo

MTGO Collection Manager

GitHub releaseWindowsLinuxmacOS
LicenseCodeFactor Grade

Purpose

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.

Table of contents

Features? Make an issue if you have suggestions.

If you have a great idea, make a feature request via an issue, thanks!

Most recent demo

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. Demo

Contributing

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.

Quickstart

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.

Build with Go Task

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

Trouble shooting

Compiling FLTK-rs on Linux

Compiling FLTK requires some development headers on Linux.

Ubuntu

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.

Debian

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.