You've already forked AstralRinth
forked from didirus/AstralRinth
The launcher code was in a position ripe for sphagetti, so this rewrites it in a more robust way. In addition to cleaner code, this provides the following changes: - Removal of obsolete Mojang authentication - The rebasing of some internal state into a Sled database - Tweaks which make some internal mechanisms more robust (e.g. profiles which fail to load can be removed) - Additional tooling integration such as direnv - Distinct public API to avoid messing with too much internal code - Unified error handling in the form of `theseus::Error` and `theseus::Result`
27 lines
602 B
Rust
27 lines
602 B
Rust
use eyre::Result;
|
|
use futures::TryFutureExt;
|
|
use paris::*;
|
|
|
|
mod subcommands;
|
|
mod util;
|
|
|
|
#[derive(argh::FromArgs)]
|
|
/// The official Modrinth CLI
|
|
pub struct Args {
|
|
#[argh(subcommand)]
|
|
pub subcommand: subcommands::SubCommand,
|
|
}
|
|
|
|
#[tokio::main]
|
|
async fn main() -> Result<()> {
|
|
let args = argh::from_env::<Args>();
|
|
pretty_env_logger::formatted_builder()
|
|
.filter_module("theseus", log::LevelFilter::Info)
|
|
.target(pretty_env_logger::env_logger::Target::Stderr)
|
|
.init();
|
|
|
|
args.dispatch()
|
|
.inspect_err(|_| error!("An error has occurred!\n"))
|
|
.await
|
|
}
|