Compare commits

...

2 Commits

Author SHA1 Message Date
Kiril Kovachev
a6b5171ad8 doc: Add note to to-do: must clean up the syntax of the error handling in setup(). 2025-05-08 01:51:53 +01:00
Kiril Kovachev
874506a5de refactor: Use Result::or to simplify setup() control flow 2025-05-08 01:50:35 +01:00
2 changed files with 11 additions and 12 deletions

View File

@ -1,2 +1,4 @@
# To-do # To-do
- Report that "ReadableConfig" error, which was super unhelpful and very annoying when you don't know why it's bugging. - Report that "ReadableConfig" error, which was super unhelpful and very annoying when you don't know why it's bugging.
- Find a better notation for the error-handling in setup() although the custom error message is desirable, it's very bad
to have to implement it using such a ridiculously long line...

View File

@ -42,7 +42,7 @@ enum Action {
} }
fn setup(args: SetupArgs) -> Result<(), std::io::Error> { fn setup(args: SetupArgs) -> Result<(), std::io::Error> {
if let Ok(config_template) = std::fs::read_to_string(CONFIG_TEMPLATE_PATH) { let config_template = std::fs::read_to_string(CONFIG_TEMPLATE_PATH).or(Err(std::io::Error::new(std::io::ErrorKind::NotFound, format!("Unable to find {}; did you execute the script from the same directory?", CONFIG_TEMPLATE_PATH))))?;
let filled_in_config = formatx!(config_template, args.api_url, args.rest_url, args.username, args.botpassword, args.oauth2_token).unwrap(); let filled_in_config = formatx!(config_template, args.api_url, args.rest_url, args.username, args.botpassword, args.oauth2_token).unwrap();
let path = shellexpand::tilde(BOT_CONFIG_PATH).into_owned(); let path = shellexpand::tilde(BOT_CONFIG_PATH).into_owned();
std::fs::write(&path, filled_in_config).unwrap(); std::fs::write(&path, filled_in_config).unwrap();
@ -51,9 +51,6 @@ fn setup(args: SetupArgs) -> Result<(), std::io::Error> {
std::fs::set_permissions(path, std::fs::Permissions::from_mode(0o600))?; std::fs::set_permissions(path, std::fs::Permissions::from_mode(0o600))?;
} }
Ok(()) Ok(())
} else {
Err(std::io::Error::new(std::io::ErrorKind::NotFound, format!("Unable to find {}; did you execute the script from the same directory?", CONFIG_TEMPLATE_PATH)))
}
} }
#[tokio::main] #[tokio::main]