league-toolkit
Rust workspace for parsing, editing, and writing League of Legends file formats.
This repository hosts a set of crates that can be used individually or together via the umbrella crate league-toolkit
.
Crates in this workspace
league-toolkit
— Library for serializing and editing various League of Legends formats (feature-gated facade over the crates below)ltk_anim
— Animation formats support for League Toolkitltk_file
— Core IO and file abstractions for League Toolkitltk_mesh
— Mesh parsing and structures for League Toolkitltk_meta
— Metadata formats and utilities for League Toolkitltk_primitives
— Primitive types and helpers for League Toolkitltk_texture
— Texture decoding/encoding utilities for League Toolkitltk_wad
— WAD archive reading/writing for League Toolkitltk_hash
— Hashes implementation used by League Toolkitltk_io_ext
— I/O extensions used by League Toolkit
Each crate lives under crates/<name>
.
Getting started
Add the umbrella crate to your project (recommended):
# Cargo.toml
[]
= { = "0.1", = ["wad", "mesh", "texture"] }
Until a release is published, you can use the Git version:
[]
= { = "https://github.com/LeagueToolkit/league-toolkit", = ["wad", "mesh", "texture"] }
Or depend on individual crates directly, for example:
[]
= "0.1"
= "0.1"
Features (on league-toolkit
)
The league-toolkit
crate exposes feature flags to opt into specific subsystems:
anim
— enableltk_anim
file
— enableltk_file
mesh
— enableltk_mesh
meta
— enableltk_meta
primitives
— enableltk_primitives
texture
— enableltk_texture
wad
— enableltk_wad
hash
— enableltk_hash
serde
— enable serde support where available
The default feature set enables most subsystems. Disable default features and opt-in selectively if you want a smaller dependency surface:
[]
= { = "0.1", = false, = ["wad", "mesh"] }
Development
- Prerequisites: Rust stable toolchain
- Build:
cargo build
- Test:
cargo test
Workspace membership is defined in the top-level Cargo.toml
.
Releasing
This repository uses Release-plz to automate versioning and publishing to crates.io.
- On pushes to
main
, Release-plz opens a release PR. - Merging the release PR triggers publishing of the configured crates.
Make sure the repository has the appropriate credentials configured (crates.io token or Trusted Publishing) before merging release PRs.
License
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-only).
See the LICENSE
file for details.