diff --git a/Cargo.lock b/Cargo.lock index a3c72bd..0e62816 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -230,9 +230,7 @@ checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" dependencies = [ "console", "shell-words", - "tempfile", "thiserror", - "zeroize", ] [[package]] @@ -311,22 +309,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" -[[package]] -name = "errno" -version = "0.3.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - [[package]] name = "flate2" version = "1.1.1" @@ -360,19 +342,7 @@ checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" -dependencies = [ - "cfg-if", - "libc", - "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasi", ] [[package]] @@ -573,12 +543,6 @@ dependencies = [ "libc", ] -[[package]] -name = "linux-raw-sys" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" - [[package]] name = "litemap" version = "0.8.0" @@ -696,19 +660,13 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "r-efi" -version = "5.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" - [[package]] name = "redox_users" version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom 0.2.16", + "getrandom", "libredox", "thiserror", ] @@ -750,25 +708,12 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.16", + "getrandom", "libc", "untrusted", "windows-sys 0.52.0", ] -[[package]] -name = "rustix" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" -dependencies = [ - "bitflags", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.59.0", -] - [[package]] name = "rustls" version = "0.23.27" @@ -868,6 +813,7 @@ name = "shrupl" version = "0.1.0" dependencies = [ "clap", + "console", "ctrlc", "dialoguer", "dirs-next", @@ -924,19 +870,6 @@ dependencies = [ "syn", ] -[[package]] -name = "tempfile" -version = "3.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" -dependencies = [ - "fastrand", - "getrandom 0.3.3", - "once_cell", - "rustix", - "windows-sys 0.59.0", -] - [[package]] name = "thiserror" version = "1.0.69" @@ -1090,15 +1023,6 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" -[[package]] -name = "wasi" -version = "0.14.2+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" -dependencies = [ - "wit-bindgen-rt", -] - [[package]] name = "webpki-roots" version = "0.26.11" @@ -1221,15 +1145,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "wit-bindgen-rt" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags", -] - [[package]] name = "writeable" version = "0.6.1" diff --git a/Cargo.toml b/Cargo.toml index 2d59fc6..9273a19 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,8 +6,9 @@ description = "ShrUpl is a tool to upload files to a Sharry Instance through a p [dependencies] clap = { version = "4.5.38", features = ["derive"] } +console = { version = "0.15.11", default-features = false } ctrlc = { version = "3.4.7", features = ["termination"] } -dialoguer = "0.11.0" +dialoguer = { version = "0.11.0", default-features = false } dirs-next = "2.0.0" env_logger = "0.11.8" log = "0.4.27" diff --git a/src/appstate.rs b/src/appstate.rs index ece0086..fe39f80 100644 --- a/src/appstate.rs +++ b/src/appstate.rs @@ -69,12 +69,11 @@ impl AppState { .ok() } - pub fn from_args(args: &Cli, http: &ureq::Agent) -> Result { + pub fn from_args(args: &Cli, http: &ureq::Agent) -> Result { let file_name = Self::cache_file(args); let alias = args.get_alias(); - let share = Share::create(http, &alias, args.get_share_request()) - .map_err(|e| format!("could not create share: {e}"))?; + let share = Share::create(http, &alias, args.get_share_request())?; let files: VecDeque<_> = args.files.clone().into_iter().map(FileState::C).collect(); diff --git a/src/main.rs b/src/main.rs index e929a1a..b27d6f6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,6 +11,7 @@ use std::{ }; use clap::Parser; +use console::style; use dialoguer::{Confirm, theme::ColorfulTheme}; use log::{error, info}; use ureq::Agent; @@ -42,7 +43,7 @@ fn main() { let mut state = AppState::try_resume(&args) .and_then(|state| { Confirm::with_theme(&ColorfulTheme::default()) - .with_prompt("Previous operation found, continue?") + .with_prompt("Previous operation found. Continue?") .default(true) .interact() .map_or(None, |b| b.then_some(state)) @@ -53,7 +54,22 @@ fn main() { state } Err(e) => { - error!("could not create new state: {e}"); + if let Some(cause) = match e { + ureq::Error::StatusCode(403) => Some("Alias ID"), + ureq::Error::Io(_) => Some("URL"), + _ => None, + } { + println!( + "{} probably wrong: {} – {:?}", + style("Error!").red(), + style(cause).cyan(), + style(e.to_string()).yellow() + ); + } else { + error!("unknown error: {e}"); + println!("{}", style("Unknown Error!").red()); + } + exit(1); } });