# Ferium
[](https://www.rust-lang.org/)
[](https://github.com/theRookieCoder/ferium/blob/main/LICENSE.txt)
[](https://en.wikipedia.org/wiki/Copyleft)
> Check out Ferium's sister projects [Ferinth](https://github.com/theRookieCoder/ferinth) and [Furse](https://github.com/theRookieCoder/furse), which are Rust libraries to use the Modrinth and CurseForge APIs respectively
Ferium is an easy to use CLI program for managing Minecraft mods from [Modrinth](https://modrinth.com/mods), [CurseForge](https://curseforge.com/minecraft/mc-mods), and [GitHub Releases](https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases). Simply specify the mods you use through the CLI and in just one command, you can download all the mods and update existing ones.
## Feature Requests
If you would like to make a feature request, check the [issues](https://github.com/theRookieCoder/ferium/issues) and the [project](https://github.com/theRookieCoder/ferium/projects/1) to see if the feature has already been added/planned. If not, [create a new issue](https://github.com/theRookieCoder/ferium/issues/new)
## Building from Source or Working with Ferium
Firstly you need the Rust toolchain (`cargo`, `rustup`, etc). You can install these from <https://rust-lang.org>.
If you want to build Ferium without cloning the repo, set the CurseForge API key then run `cargo install ferium`.
To build the project and install it to your Cargo bin directory, clone the project then run `make install`. If you want to install for testing a developement version, use just `make` or `make install-dev`.
If you want to obtain executables for a specific OS, you can run `make build-<OS>` and replace `<OS>` with `mac`, `win`, or `linux`. The produced binaries will be zipped and moved to `out/`.
You can run the tests using `make test`. Don't use `cargo test` because that will interfere with your existing config, and the integration tests do not work when run in parallel. `make test` saves your config, forces tests to run sequentially, then restores your config (whether the tests failed or not).