# fmm A CLI mod manager for Factorio. Easily download and enable mods, sync with save files or log file checksums, and upload mod zip files to the portal. ## Installation Grab the latest release from the [releases page](https://codeberg.org/raiguard/fmm/releases). Distribution packages will be available once the project is stable. ## Building **Requirements:** - [Go](https://go.dev) 1.21 or newer - [just](https://github.com/casey/just) ``` just ``` Run tests: ``` just test ``` ## Usage ``` usage: fmm [flags...] [args...] flags: --game-path Path of the game directory. Defaults to current directory. --mods-path Path of the mods directory. Defaults to './mods'. --help Show usage information. commands: add [args...] Download and enable the given mods and their dependencies. disable [args...] Disable the given mods, or all mods if none are given. enable [args...] Enable the given mods and their dependencies. help Show usage information. list [files...] List all mods in the mods directory, or in the given save files. sync [args...] Disable all mods, then download and enable the given mods and their dependencies. If a save file is provided, merge startup mod settings with the settings contained in that save. update [args...] Update the given mods, or all mods if none are given. upload [files...] Upload the given mod zip files to the mod portal. environment: FACTORIO_PATH Default Factorio game directory to use if the current or previous directories are invalid. FACTORIO_MODS_PATH Default Factorio mods directory to use. Defaults to FACTORIO_PATH/mods. FACTORIO_USERNAME Factorio username to use for mod portal operations. FACTORIO_TOKEN Factorio token to use for mod portal operations. FACTORIO_API_KEY Factorio API key to use for mod portal operations. ``` Mods are specified by `name` or `name_version`. ## Configuration fmm will check the current directory and the previous directory for a Factorio installation. If neither is valid, it will fall back to the directory specified by the `FACTORIO_PATH` environment variable. If the mods directory is not contained within the game data directory (i.e. you installed via Steam), specify the `FACTORIO_MODS_PATH` environment variable to point fmm to the correct mods directory. For uploading mods, specify your API key with the `FACTORIO_API_KEY` variable. If you have logged in to your Factorio account, fmm will automatically pull your username and token from the `player-data.json` file. Alternatively, you can specify them with `FACTORIO_USERNAME` and `FACTORIO_TOKEN` respectively. ## TODO Not necessarily in order. - Man pages - Mod creation and packaging - Automated testing CI