solar-core 1.0.3

Core library for cargo-solar command.
Documentation
use std::{fmt::Display, str::FromStr};

use clap::ValueEnum;
use serde::{Deserialize, Serialize};

use crate::SolarError;

#[derive(ValueEnum, Clone, Serialize, Deserialize, Eq, PartialEq, Debug, Copy)]
pub enum Ruleset {
    ConventionalCommits,
}

impl Display for Ruleset {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        writeln!(
            f,
            "{}",
            match self {
                Self::ConventionalCommits => "conventional-commits",
            }
        )
    }
}

impl FromStr for Ruleset {
    type Err = SolarError;

    fn from_str(s: &str) -> Result<Self, Self::Err> {
        match s {
            "conventional-commits" => Ok(Self::ConventionalCommits),
            _ => Err(SolarError::from(format!("{} is not a valid ruleset.", s))),
        }
    }
}