Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/boldandbrad/mpl-cli
๐ฒ Manage local board game stashes and interact with BoardGameGeek from your terminal.
https://github.com/boldandbrad/mpl-cli
board-game boardgamegeek cli collections meeple rust
Last synced: 7 days ago
JSON representation
๐ฒ Manage local board game stashes and interact with BoardGameGeek from your terminal.
- Host: GitHub
- URL: https://github.com/boldandbrad/mpl-cli
- Owner: boldandbrad
- License: mit
- Created: 2023-08-22T22:40:33.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-02-04T21:57:27.000Z (almost 1 year ago)
- Last Synced: 2025-01-20T10:16:06.106Z (15 days ago)
- Topics: board-game, boardgamegeek, cli, collections, meeple, rust
- Language: Rust
- Homepage:
- Size: 124 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: docs/CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
*This is a reimagination and reimplementation of my other project
[meeple-cli](https://github.com/boldandbrad/meeple-cli).*---
# mpl
[![Crates.io](https://img.shields.io/crates/v/mpl-cli)](https://crates.io/crates/mpl-cli)
> **mpl**; short for **meeple** [`/mipel/`] *noun* - a board game player
> token. (E.g., )**mpl** is a local board game collection management CLI tool built in rust and
powered by [BoardGameGeek](https://boardgamegeek.com) (BGG) public APIs.**Jump to:**
[Features](#features) |
[Installation](#install) |
[Getting Started](#getting-started) |
[Command Reference](#cmd-ref) |
[Configuration](#config) |
[Resources](#resources) |
[Legal](#legal) |
[Documentation](https://boldandbrad.github.io/mpl/) ๐> [!WARNING]
> **mpl** is currently in **ALPHA**. This means it is generally unstable and may
> be missing key features. Please track the progress of features throughout this
> README with the following symbols:
> | Symbol | Status |
> | - | - |
> | โ | Implemented - stable |
> | โณ๏ธ | Implemented - unstable |
> | ๐ง | Work in Progress |
> | โ | Not Started |## ๐ฅ Demo
> Coming soon.
- Get started quickly with BGG user collection import โ
- Discover new titles via BGG Hotness, new releases, active crowdfunding
campaigns, and BGG search ๐ง
- Grow your collection by searching and opening Geek Market listings โ
- Flexible local stash maintainance and customization ๐ง
- Powerful cross-stash search to find the best title for game night โ
- Create and manage personal ratings โ
- Log and view game playthroughs โ
- Multiple user support with profiles ๐ง
- Written in Rust ๐ฆ โInstall **mpl** with your favorite of the methods below, or read the
[docs](https://boldandbrad.github.io/mpl/) for more info. Then run
`mpl --version` to verify installation.**Jump to:** [Homebrew](#install-homebrew) | [Scoop](#install-scoop) |
[Cargo](#install-cargo) | [Remote](#install-remote) |
[GitHub Release](#install-release) | [Source](#install-source)### Install via [Homebrew](https://brew.sh) ๐บ (macOS/Linux) โ
1. Add tap:
```sh
brew tap boldandbrad/tap
```1. Install formula:
```sh
brew install mpl-cli
```### Install via [Scoop](https://scoop.sh) ๐ฆ (Windows) โ
1. Add bucket:
```sh
scoop bucket add boldandbrad_scoop-bucket https://github.com/boldandbrad/scoop-bucket
```1. Install manifest:
```sh
scoop install boldandbrad_scoop-bucket/mpl-cli
```### Install via [Cargo](https://crates.io) ๐ฆ โ
> [!NOTE]
> In order to install pre-releases (alpha/beta/pre) you must run `cargo install`
> with `--version=`.- Install crate:
```sh
cargo install mpl-cli
```### Install via remote install script ๐ โ
> [!NOTE]
> The [remote install script](scripts/install.sh) explains what it will do and
> prompts before doing so.- Run script:
```sh
curl -LSfs https://raw.githubusercontent.com/boldandbrad/mpl-cli/main/ci/install.sh | sh -s -- --git boldandbrad/mpl-cli
```### Manual install from GitHub Release โฌ๏ธ ๐ง
1. Download the [latest GitHub Release](https://github.com/boldandbrad/mpl-cli/releases)
for your platform
2. Extract contents and install to a location in your `$PATH`### Manual install from source ๐ฉโ๐ป โ
1. Install [Rust](https://www.rust-lang.org/tools/install)
2. Run `git clone https://github.com/boldandbrad/mpl-cli` and `cd mpl-cli`
3. Run `cargo install --path .`
4. Ensure `~/.cargo/bin` or `$CARGO_HOME/bin` is in your `$PATH`Using **mpl** is as easy as:
```sh
mpl
```To get you started, on first run `mpl` creates a default profile with the same
name as your user `$HOME` directory containing a stash called `collection`.> [!TIP]
> If you prefer, you can rename these later with `mpl profile rename` and
> `mpl stash rename` respectively.### Import BGG user collections ๐ข
Initiate an import:
> [!TIP]
> Try it with `--dry-run` to *simulate* the import without actually making
> changes.```sh
mpl bgg import --user=boldandbrad
```**mpl** will guide you through the import process. When done, see your imported
stash(es):```sh
mpl stash list --verbose
```### Start fresh ๐งผ
**mpl** relies on BoardGameGeek item IDs to manage titles in your stashes. The
easiest way to get these is by searching BoardGameGeek:```sh
mpl bgg search "wingspan"
```Copy a title ID from the output and use it in another command:
```sh
mpl add -s=collection 266192
```You've added Wingspan ๐ฆ to the `collection` stash!
Now let's see what's in your stash:
```sh
mpl list -s=collection
```Run `mpl --help` or read the [docs](https://boldandbrad.github.io/mpl/) to
discover what to do next!> [!TIP]
> You can discover **mpl** commands and options with `mpl --help`.### Root ๐ง
- `mpl add` โณ๏ธ - add titles to a stash
- `-s`/`--stash` [Opt] โ - stash to add titles to
- `-v`/`--verbose` [Flg] โ - include additional output
- `mpl drop` โณ๏ธ - drop titles from a stash
- `-s`/`--stash` [Opt] โ - stash to drop titles from
- `-f`/`--force` [Flg] โ - drop titles without confirmation
- `-v`/`--verbose` [Flg] โ - include additional output
- `mpl list` ๐ง - list stashed titles
- `--sort` [Opt] โ - sort titles by provided value. values: [rank, rating,
weight, year, name, id, time]. default: rating
- `-g`/`--games-only` [Flg] โ - list only games
- `-e`/`--expansions-only` [Flg] โ - list only expansions
- `--group` [Opt] โ - group expansions below their parent game. default: true
- `--players` [Opt] โ - list only games that support the given player count
- `--max-time` [Opt] โ - list only games that fit the given play time (Min.)
- `--weight` [Opt] โ - list only games that match the given weight class. options:
[1,2,3,4]. ex: 2 -> 2.00-2.99
- `-v`/`--verbose` [Flg] โ - include additional columns in output
- `mpl move` โ - move titles to another stash
- `-s`/`--from-stash` [Opt] โ - source stash
- `-d`/`--to-stash` [Opt] โ - destination stash
- `-v`/`--verbose` [Flg] โ - include additional output### Profiles ๐ง
Manage user profiles.
- `mpl profile list` โณ๏ธ - list all existing profiles
- `-v`/`--verbose` [Flg] โ - include additional columns in output
- `mpl profile active` โ - show the current active profile
- `-v`/`--verbose` [Flg] โ - include additional columns in output
- `mpl profile switch` โณ๏ธ - switch the active profile
- `mpl profile create` โณ๏ธ - create a new profile
- `--active` [Flg] โณ๏ธ - make the new profile the active profile
- `mpl profile delete` โณ๏ธ - delete an existing profile
- `-f`/`--force` [Flg] โ - delete profile without confirmation
- `mpl profile rename` โ - rename an existing profile### Stashes ๐ง
Manage local stashes in the active profile.
#### Flags/Options
- `-p/--profile` - the profile to perform actions in (default: active profile)
#### Commands
- `mpl stash create` โณ๏ธ - create new stashes
- `mpl stash delete` โณ๏ธ - delete existing stashes
- `-f`/`--force` [Flg] โ - delete stash without confirmation
- `mpl stash list` โณ๏ธ - list existing stashes
- `-v`/`--verbose` [Flg] โ - list stats for stashes
- `mpl stash rename` โ - rename an existing stash
- `mpl stash info` โ - view details of a stash
- `mpl stash move` โ - move stashes to another profile### BoardGameGeek ๐ง
Perform BoardGameGeek related actions.
- `mpl bgg search` โณ๏ธ - search boardgamegeek for titles
- `--market` [Flg] โ - search geek market listings
- `-v`/`--verbose` [Flg] โ - include additional columns in output
- `mpl bgg info` โณ๏ธ - view title details
- `mpl bgg open` โ - open links in the web browser
- `--page` [Opt] - open a title's boardgamegeek page(s)
- `--campaign` [Opt] - open a title's crowdfunding campaign page
- `--listing` [Opt] - open a geek market listing
- `mpl bgg import` โ - import bgg user collections
- `-u`/`--user` [Opt] โ - bgg user to import collections from
- `--dry-run` [Flg] โ - simulate import without persisting changes
- `mpl bgg hotness` โณ๏ธ - view bgg hotness list
- `-v`/`--verbose` [Flg] โ - include additional columns in output
- `mpl bgg campaigns` โ - list active crowdfunding campaigns
- `mpl bgg releases` โ - list recent title releases
- `-v`/`--verbose` [Flg] โ - include additional columns in output### Config ๐ง
Manage configurations.
> Profile level configs override global ones by default.
#### Flags/Options
- `-g`/`--global` โ - apply config actions to the global scope. When not
present, the action applies to the active profile options.
- `--show-scope` โ - augment output with the scope
- `-F`/`--force` โ - used in combination with `-g`, changes default config
value for all profiles with overwrite of profile values#### Commands
- `mpl config list` โ - list all config options and their current values
- `--name-only` โ - output only config option names
- `mpl config get` โ - get the current value of the given config option
- `--default` โ - get the default value of the given config option
- `--all-values` โ - get all valid values of the given config option
- `mpl config set` โ - set the value of the given config option
- `mpl config unset` โ - revert the value of the given option to its default
- `-a`/`--all` โ - revert all option values to their default
- `mpl config complete` ๐ง - setup tab-completions for the given shell### Ratings โ
> Needs more thought and design.
Manage personal title ratings.
- `mpl rating rate` โ - rate a title
- `mpl rating unrate` โ - unrate a title
- `mpl rating tiers` โ - list rated titles in tiers### Plays โ
> Needs more thought and design.
Log and manage title plays.
- `mpl play log`/`create` โ - log a new play
- `mpl play delete` โ - delete an existing play
- `mpl play list` โ - list all logged plays
- Arg BGG_ID โ - list title logged plays
- `mpl play stats` โ - view title play stats### Environment Variables
**mpl** respects the following env variables to modify default behavior. In
cases where multiple variables control the same behavior, **mpl** obeys the
left-most present variable.- `MPL_CONFIG_HOME`/`XDG_CONFIG_HOME` โ - change where **mpl** configs are
stored. Default: `~/.config/mpl/`
- `MPL_STATE_HOME`/`XDG_STATE_HOME` โ - change where **mpl** state is stored.
Default: `~/.local/state/mpl/`### Config options
> Needs more thought and design.
These options can be managed with `mpl config`.
> Global configs are stored in `.mpl/config.toml`.
> Profile level configs are stored in `.mpl//config.toml`- `quiet_success` โ - force `--quiet` on all supported commands on success
[Default `false`]
- `pretty_format` โ - format outputs with table borders and emojis [Default
`true`]
- `default_stash_name` โ - the default name to use when creating new stashes
[Default `collection`]
- `abbreviated_format` โ - ?### Completions
**mpl** supports tab completions for `bash`, `zsh`, and `fish`. For
setup, run `mpl config completions `.- [Changelog](docs/CHANGELOG.md) - See a history of implemented
features/changes.
- [Roadmap](https://github.com/boldandbrad/mpl-cli/milestones) - See a list of
planned features and milestones.
- [FAQ](docs/faq.md) - Find answers to common questions.
- [Contributor Guide](docs/CONTRIBUTING.md) โ - Find out how to get involved.> [!NOTE]
> Neither **mpl** nor its maintainers are affiliated with
> [BoardGameGeek](https://boardgamegeek.com).Copyright (c) 2023 Bradley Wojcik. Released under the MIT License. See
[LICENSE](LICENSE) for details.