Mod packager for Factorio
The latest precompiled binaries are available on github.
Alternatively you can install pactorio from crates.io with cargo.
cargo install pactorio
cargo build --release
pactorio [FLAGS] [OPTIONS]
option | description |
---|---|
-c, --compact | Output info.json compactly |
-z, --zip | Output a zip file instead |
--compression <method> | Specify the compression method, ignored without the -z/--zip flag default: stored possible values: stored, bzip2, deflate, zstd |
-d, --dir <directory> | Set working directory |
-i, --input <file> | Specify the config file to use default: pactorio.toml |
-o, --output <directory> | Specify the output directory default: release |
-u, --upload [<api-key>] | Upload to mod portal Requires an API key, which can be created on https://factorio.com/profile |
-h, --help | Prints help information (use -h for a summary) |
-V, --version | Prints version information |
By default, pactorio uses pactorio.toml
as its config file.
It is similar to the info.json
file and uses TOML syntax.
Here is an example of a pactorio config file.
# Information about your package, similar to info.json
# https://wiki.factorio.com/Tutorial:Mod_structure#info.json
[package]
# Mandatory, internal name of your mod
name = "example_mod"
# Mandatory, version of your mod, "main.major.minor"
version = "0.1.0"
# Mandatory, display name of your mod
title = "Example mod"
# Mandatory, author of your mod, You
author = "You"
# Optional, for example your email address
contact = "[email protected]"
# Optional, link to the homepage of your mod
homepage = "https://you.example.com"
# Optional, short description of your mod
description = "Example mod. Does something and some other things. "
# Optional, default: "0.12", usually needs to be added
factorio_version = "1.0"
# Dependencies are separated into four parts, All four of them are optional
# They are under a table named "deps", you can also use "dependencies"
# Required dependencies
[deps.required]
# Same as "base >= 1.0" in info.json
base = ">= 1.0"
# Conflict or incompatible dependencies
[deps.conflict] # or [deps.incompatible]
# Same as "! bad_mod" in info.json
bad_mod = ""
# Same as "! incomp < 3" in info.json
incomp = "< 3"
# Optional dependencies
[deps.optional]
# Same as "opt_dep = 0.2.1" in info.json
opt_dep = "= 0.2.1"
# Hidden optional dependencies
[deps.hidden]
# Same as "hidden_dep > 2.0" in info.json
hidden_dep = "> 2.0"
# Optional, source directory
[source]
# Pactorio will use all the files under this directory
# Optional, default: "src"
dir = "src"
# A list of glob patterns to represent the files to include
# Relative to your source directory
# Optional, default: ["**/**"]
include = ["**/**"]
# A list of glob patterns to represent the files to ignore
# Relative to your source directory
# Optional, default: []
ignore = []
See CHANGELOG.md