use crate::contracts::enum_parse::snake_case_from_str;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Default, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ProjectType {
#[default]
Code,
Docs,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Default, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum GitRevertMode {
#[default]
Ask,
Enabled,
Disabled,
}
snake_case_from_str! {
GitRevertMode {
Ask => "ask",
Enabled => "enabled",
Disabled => "disabled",
}
"git_revert_mode must be 'ask', 'enabled', or 'disabled'"
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Default, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum GitPublishMode {
#[default]
Off,
Commit,
CommitAndPush,
}
impl GitPublishMode {
pub const fn as_str(self) -> &'static str {
match self {
GitPublishMode::Off => "off",
GitPublishMode::Commit => "commit",
GitPublishMode::CommitAndPush => "commit_and_push",
}
}
}
snake_case_from_str! {
GitPublishMode {
Off => "off",
Commit => "commit",
CommitAndPush => "commit_and_push",
}
"git_publish_mode must be 'off', 'commit', or 'commit_and_push'"
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Default, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ScanPromptVersion {
V1,
#[default]
V2,
}