diff --git a/CHANGELOG.md b/CHANGELOG.md index bf18de4..50a0e04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,29 @@ # Changelog for Ferium +## `v4.5.0` +### 30.01.2024 + +- Added aliases for many commands and arguments +- The `--version`/`-v` flags only work for the top-level command now (they do not propagate to subcommands) +- Renamed `--dont-check-game-version` and `--dont-check-mod-loader` to `--ignore-game-version` and `--ignore-mod-loader` respectively + - Also added a short hand `-V` and `-M` + - The previous flags still work as a hidden alias, so scripts do not have to be edited +- Added `ferium profile info` and `ferium modpack info` subcommands to print information about the current profile/modpack + - These are aliased to `ferium profile` and `ferium modpack` +- Added `ferium profiles` and `ferium modpacks`, which are aliases to their respective list commands +- Added option to temporarily ignore game version and mod loader checks and force-add the mod anyways ([#142](https://github.com/gorilla-devs/ferium/issues/142)) +- Added an argument for providing a profile/modpack to switch to after deleting a profile/modpack ([#390](https://github.com/gorilla-devs/ferium/issues/390)) +- Fixed errors not getting caught when adding mods (e.g. `HTTP error 404` instead of `mod does not exist`) + - Moved a majority of the mod adding code to libium +- Added a header with profile information in `ferium list` +- Made `ferium list` display the source and mod ID first and mod name last to circumvent minor formatting issues +- Added user agent to GitHub API check to make it more reliable +- Added more information and coloured formatting to profile and modpack pickers (when deleting or switching) +- Made the remove picker show the same information as `ferium list` but without colours +- Fixed distribution denied errors not getting caught during mod resolution and causing the entire command to fail instead ([#308](https://github.com/gorilla-devs/ferium/issues/308)) + ## `v4.4.1` -### 07.08.23 +### 07.08.2023 - Update dependencies - Fix [#363](https://github.com/gorilla-devs/ferium/issues/363) by updating ferinth diff --git a/Cargo.lock b/Cargo.lock index 9cfe2da..f7f029d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -57,9 +57,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" +checksum = "2faccea4cc4ab4a667ce676a30e8ec13922a692c99bb8f5b11f1502c72e04220" [[package]] name = "anstyle-parse" @@ -114,6 +114,7 @@ dependencies = [ "rand", "serde", "serde_repr", + "tokio", "url", "zbus", ] @@ -176,9 +177,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb41eb19024a91746eba0773aa5e16036045bbf45733766661099e182ea6a744" +checksum = "8f97ab0c5b00a7cdbe5a371b9a782ee7be1316095885c8a4ea1daf490eb0ef65" dependencies = [ "async-lock 3.3.0", "cfg-if", @@ -247,7 +248,7 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" dependencies = [ - "async-io 2.3.0", + "async-io 2.3.1", "async-lock 2.8.0", "atomic-waker", "cfg-if", @@ -737,7 +738,7 @@ dependencies = [ [[package]] name = "ferium" -version = "4.4.1" +version = "4.5.0" dependencies = [ "anyhow", "clap", @@ -1120,9 +1121,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.1.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "433de089bd45971eecf4668ee0ee8f4cec17db4f8bd8f7bc3197a6ce37aa7d9b" dependencies = [ "equivalent", "hashbrown", @@ -1169,9 +1170,9 @@ checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "itertools" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" dependencies = [ "either", ] @@ -1243,9 +1244,9 @@ checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" [[package]] name = "libium" -version = "1.24.0" +version = "1.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b5c34f3909ffd1377d0b25d34a66ec49c0b0250dd07135b2d67bd7dc971d55d" +checksum = "804dbe0850344e67da0d202b8f598e84bb7c3a6b48952e5fddbe7b80b17e96aa" dependencies = [ "async-recursion", "async_zip", @@ -1953,9 +1954,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.112" +version = "1.0.113" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d1bd37ce2324cf3bf85e5a25f96eb4baf0d5aa6eba43e7ae8958870c4ec48ed" +checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79" dependencies = [ "itoa", "ryu", @@ -2241,8 +2242,10 @@ dependencies = [ "mio", "num_cpus", "pin-project-lite", + "signal-hook-registry", "socket2 0.5.5", "tokio-macros", + "tracing", "windows-sys 0.48.0", ] @@ -2785,6 +2788,7 @@ dependencies = [ "serde_repr", "sha1", "static_assertions", + "tokio", "tracing", "uds_windows", "winapi", diff --git a/Cargo.toml b/Cargo.toml index 63cf14e..5ac4f90 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ferium" -version = "4.4.1" +version = "4.5.0" edition = "2021" rust-version = "1.61" # Bound by `std::process::ExitCode` authors = [ @@ -40,8 +40,8 @@ indicatif = "0.17" itertools = "0.12" once_cell = "1.19" fs_extra = "1.3" -colored = "2.1" ferinth = "2.10" +colored = "2.1" libium = "1.24" anyhow = "1.0" furse = "1.5" diff --git a/README.md b/README.md index 80efaac..1c378f2 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ The `nogui` versions do not need this as they won't have a GUI folder picker, ma > From-source builds will install the Rust toolchain and GCC | Installation method | GUI file dialogue | No GUI | -|-------------------------------------------------|-------------------------------------------------------------------------|-------------------------------------------------------------| +| ----------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------- | | Install pre-built binaries from GitHub Releases | **[ferium-gui-bin](https://aur.archlinux.org/packages/ferium-gui-bin)** | [ferium-bin](https://aur.archlinux.org/packages/ferium-bin) | | Build from source at the latest tag | [ferium-gui](https://aur.archlinux.org/packages/ferium-gui) | [ferium](https://aur.archlinux.org/packages/ferium) | | Build from source using the latest commit | [ferium-gui-git](https://aur.archlinux.org/packages/ferium-gui-git) | [ferium-git](https://aur.archlinux.org/packages/ferium-git) | diff --git a/src/cli.rs b/src/cli.rs index e41be3e..5f24bdb 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -7,7 +7,6 @@ use std::path::PathBuf; #[derive(Parser)] #[clap(author, version, about)] -#[clap(propagate_version = true)] #[clap(arg_required_else_help = true)] pub struct Ferium { #[clap(subcommand)] @@ -47,10 +46,10 @@ pub enum SubCommands { #[clap(long, short, visible_alias = "override")] force: bool, /// The game version will not be checked for this mod - #[clap(long, alias = "dont-check-game-version")] + #[clap(long, short = 'V', alias = "dont-check-game-version")] ignore_game_version: bool, /// The mod loader will not be checked for this mod - #[clap(long, alias = "dont-check-mod-loader")] + #[clap(long, short = 'M', alias = "dont-check-mod-loader")] ignore_mod_loader: bool, }, /// Print shell auto completions for the specified shell diff --git a/src/main.rs b/src/main.rs index b222766..343780f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -285,7 +285,7 @@ async fn actual_main(mut cli_app: Ferium) -> Result<()> { } } else { println!( - "{} {} on {:6} {:7}\n", + "{} {} on {} {}\n", profile.name.bold(), format!("({} mods)", profile.mods.len()).yellow(), format!("{:?}", profile.mod_loader).purple(),