11 releases (4 stable)

1.3.1 May 4, 2024
1.2.2 May 3, 2024
1.2.0 Apr 8, 2024
1.1.0 Dec 25, 2023
0.1.12 Jan 27, 2023

#45 in Compression

Download history 19/week @ 2024-09-18 23/week @ 2024-09-25 3/week @ 2024-10-02

749 downloads per month

MIT license

13KB
204 lines

Rust Factorio Mod Packer

Idea behind this project was to create a compiled and fast replacement to my shell script that packed factorio mods (very useful in my Factorio mod development pipeline). This program packs all files in current direcory (excluding unix-style hidden directories to ignore git stuff) into a properly-formatted mod and puts it into mods folder ($HOME/.factorio/mods on Linux or %AppData%\Factorio\mods on Windows). Works on Linux and Windows, builds are included on Releases page. MacOS support isn't planned.

All versions are available on GitHub releases page.

Mod File Structure Example

<mod_name> and <mod_version> are "name" and "version" values from mod's info.json file.

  • <mod_name>_<mod_version>.zip
    • <mod_name>_<mod_version>
      • info.json
      • data.lua
      • control.lua
      • etc

Speed

This program manages to outperform (i.e. do the job faster) my 7zip-based build script on my machine (Ryzen 5 3600). This is achieved by using library mtzip (also made by me). It splits the file compression jobs into tasks that can be run concurrently.

Rayon support

rayon is supported as an alternative to mtzip's thread management. It can be enabled with rayon feature, replaces the default behavior. From my personal testing, it results in a lightly lower performance in extreme situations, but nothing that can be noticed without timing the execution time.

Dependencies

~2–10MB
~103K SLoC