devrc 0.6.0

devrc is an easy to use task runner tool on steroids for developers
Documentation
use serde::Deserialize;
use std::{fmt::Display, path::PathBuf};
use url::Url;

use crate::auth::Auth;

#[derive(Debug, Clone, Default)]
pub enum Location {
    #[default]
    None,
    StdIn,
    LocalFile(PathBuf),
    Remote {
        url: Url,
        auth: Auth,
    },
}

#[derive(Debug, Deserialize, Clone, Default)]
pub enum PathResolve {
    #[default]
    #[serde(rename(deserialize = "relative"))]
    Relative,

    #[serde(rename(deserialize = "pwd"))]
    Pwd,
}

impl Display for Location {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match self {
            Location::None => Ok(()),
            Location::StdIn => Ok(()),
            Location::LocalFile(value) => {
                write!(f, "{:}", value.display())
            }
            Location::Remote { url, .. } => {
                write!(f, "{:}", url.as_str())
            }
        }
    }
}