Command-line tool for managing mods for Elder Scrolls Plugin-based games.
Go to file
kayomn 2ce3e36220 Tidy up CLI layer code 2023-01-02 14:46:59 +00:00
.gitignore Initial commit 2022-12-02 01:24:13 +00:00
go.mod Update INI parser dependency 2022-12-25 17:38:21 +00:00
go.sum Update INI parser dependency 2022-12-25 17:38:21 +00:00
main.go Tidy up CLI layer code 2023-01-02 14:46:59 +00:00
manager.go Add functionality for listing game associations 2023-01-02 14:41:32 +00:00
readme.md Complete architectural rewrite 2022-12-25 17:31:35 +00:00

readme.md

ESP Modman

A simple command-line interface for managing and deploying mods to a Elder Scrolls Plugin-based games installation.

Usage

A readout of the operations that are supported by Modman can be seen by invoking the modman command with no arguments.

Getting Started

Upon initial setup, you will need to create a new game association using modman create followed by the name you want to give the game association and the path to its data folder.

modman create skyrim "~/.steam/steam/steamapps/common/Skyrim Special Edition/Data/"

Example of how to register an installation of Skyrim Special Edition with Modman

The game name can contain any valid Unicode characters except whitespace when created without double-quotes surrounding it. Meanwhile, the path must be a valid OS-native path to the game data directory.

Deploying Mods

Once a game association has been created, archives of mods can be deployed directly to the game install via modman deploy followed by the game association name and then one or more paths to mod archives.

modman deploy skyrim "~/downloads/Mod1.zip" "~/downloads/Mod2.zip" "~/downloads/Mod3.zip"

Example of how to deploy mods archives to an associated game install.

Deploy respects the order of the mods list provided to it and will layer them one after the other. In this scenario, Mod3.zip will overwrite any files that share the same paths that Mod2.zip do, which in turn overwrites any files that share the same paths as Mod1.zip.

Deployments are also transitive, so running modman deploy individually each time for "~/downloads/Mod1.zip", "~/downloads/Mod2.zip", and "~/downloads/Mod3.zip" will have the same effect as deploying them once in the same command.

Cleaning Up

All mod files managed by Modman can be completely cleaned from an install using modman clean followed by the game association name. This will completely remove all mod files managed by Modman, so use with care.

modman clean skyrim

Example of how to clean managed mods from an associated game install.

Modman does not provide any way to incrementally remove installed mods in the same way that it does with deployment. This is done to avoid corrupting file overwrite precidence, which can become very messy for any mod management tool that compiles all mods into a merged staging directory like Modman.

Architecture

Modman uses a staged deployment system and aims for incremental deployment of mods and atomic, transactional cleanup.

As mod archives are deployed, their contents are extracted and written to a merged staged directory inside the user cache folder, overwriting any files with the same file paths that came before them. After staging, hard links to those files are written into the game directory after any files overwritten by the staged mods are backed up to an overwritten directory to be restored later as part of the installation cleanup.

Limitations

Currently, Modman only supports the Zip archive format. However, work is coming to introduce other popular formats like 7Zip and Rar.

Further restrictions are imposed on the kinds packaging allowed in the Zip format, with the FOMOD installer format being unsupported.

Undertaking implementation of a parser and user interface for the FOMOD installer format is not a focus in the development of Modman at this current time, however, contributions are welcome.