# `oliver` 

`oliver` is a CLI mod development tool for Baldur's Gate 3.

## Installation

### via crates.io

`oliver` can be installed via crates.io:

```
cargo install oliver
```

## Usage

Usage information for `oliver` can be printed by running `oliver --help`:

```
Lightweight CLI mod manager for Baldur's Gate 3 on Linux

Usage: oliver <COMMAND>

Commands:
  export   Exports the currently installed mods and the mod order to single compressed file
  import   Imports the mods from compressed file
  list     List all mods currently installed use
  parse    Print a summary of the contents in a given file
  help     Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help
  -V, --version  Print version
```

## FAQ

**Does Baldur's Gate 3 even support Linux?**

Technically, yes! Larian surprised everyone (or at least me) with [a native Steam Deck release](https://larian.com/support/faqs/steam-deck-native-version_121),
and it's possible to run it on arbitrary Linux distros by not selecting any compatibility tool when
running the game.. However, Steam also provides a built-in tool called [Proton](https://github.com/ValveSoftware/Proton) 
that can be enabled for running Windows games on Linux. While compatibility for games is made on a 
best-effort basis, in practice a fairly large number of games work well on Linux via Proton. A large
number of the compatibility issues that do arise are related to anti-cheat measures, which Baldur's 
Gate 3 does not utilize (presumably in part due to not featuring competitive online multiplayer).

Proton is based on the venerable open source tool [Wine](https://www.winehq.org/); essentially,
Proton is an augmentation of Wine for running things specifically with the Steam runtime.

**Are there any Baldur's Gate 3 mod managers supporting Linux already?**

Yes; [SigilSmith](https://github.com/Agistaris/SigilSmith) is a TUI mod manager for Linux that supports BG3,
and in the past there have been others like [Lampray](https://github.com/CHollingworth/Lampray).

**Why is `oliver` specifically for Linux?**

While there isn't much reason that `oliver` couldn't run on Windows, there also isn't much need;
[`lslib`](https://github.com/Norbyte/lslib) is the most widely used mod development toolkit by
far, and it natively supports Windows. There are also other options like [Modder's Multitool](https://github.com/ShinyHobo/BG3-Modders-Multitool),
and the [Mod Manager](Baldur's Gate 3 Mod Manager) also has some built-in features for mod developers.

Because `oliver` was designed for my own specific use case, handling the cases where Linux and
Windows behave differently and how the game files are laid out on each system simply wasn't
necessary and would have been extra work. Feel free to try it out on Windows if you'd like or
file bugs/feature requests related to it, but I can't guarantee I'll end up addressing them.

**Why is it named `oliver`?**

Oliver is the name of one of my two cats (pictured below). I originally planned to make `oliver` into a
full-fledged CLI mod manager and name the GUI version after my other cat, Xiba (hence the name of the 
repo). However, I ran into issues figuring out how to get the mod packing logic working and stopped
working on it for a while after the built-in mod management was added to the game and I found it worked
fairly well for Linux. 

<a name="oliver-img"></a>

[![Oliver](./oliver.jpg)](#oliver-img)

More recently as I've started development mods myself, I found a need for the ability to pack mods easily 
on Linux and was able to finally get the mod packing working (with some generous guidance from Norbyte, the 
author of `lslib`). The recent publishing of `SigilSmith` along with potential future options from 
experiments like [BG3 Mod Manager considering adding Linux support](https://github.com/LaughingLeader/BG3ModManager/tree/avalonia)
and Nexus Mods [looking into a new mod manager that supports Linux natively](https://github.com/Nexus-Mods/NexusMods.App/tags) makes it
unlikely I'll end up deciding to spend time developing a full-fledged mod manager again, so I might need to
figure out another project to name after Xiba.

