wthrr 0.3.0

Weather companion for the terminal
use anyhow::Result;

use crate::{args::Cli, config::Config};

use self::unit::Units;

mod address;
mod greeting;
mod language;
pub mod unit;

pub struct Params {
	pub address: String,
	pub units: Units,
	pub greeting: bool,
	pub language: String,
}

impl Params {
	pub async fn get(args: &Cli, config: &Config) -> Result<Self> {
		let language = language::get(
			args.language.as_deref().unwrap_or_default(),
			config.language.as_deref().unwrap_or_default(),
		)?;

		if args.reset {
			Config::reset(&language).await?;
			std::process::exit(1);
		}

		let address = address::get(
			args.address.as_deref().unwrap_or_default(),
			config.address.as_deref().unwrap_or_default(),
			&language,
		)
		.await?;

		let units = unit::get(&args.units, config.units.as_deref().unwrap_or_default())?;

		let greeting = greeting::get(args.greeting, config.greeting)?;

		Ok(Params {
			address,
			units,
			language,
			greeting,
		})
	}
}