cuddle-please-misc 0.1.0

A release-please inspired release manager tool, built on top of cuddle, but also useful standalone, cuddle-please supports, your ci of choice, as well as gitea, github
Documentation
use std::sync::{Arc, Mutex};

use clap::{Args, ValueEnum};

pub type StdinFn = Option<Arc<Mutex<dyn Fn() -> anyhow::Result<String> + Send + Sync + 'static>>>;

#[derive(Args)]
pub struct GlobalArgs {
    /// token is the personal access token from gitea.
    #[arg(
        env = "CUDDLE_PLEASE_TOKEN",
        long,
        long_help = "token is the personal access token from gitea. It requires at least repository write access,  it isn't required by default, but for most usecases the flow will fail without it",
        global = true,
        help_heading = "Global"
    )]
    pub token: Option<String>,

    /// whether to run in dry run mode (i.e. no pushes or releases)
    #[arg(long, global = true, help_heading = "Global")]
    pub dry_run: bool,

    /// Inject configuration from stdin
    #[arg(
        env = "CUDDLE_PLEASE_CONFIG_STDIN",
        long,
        global = true,
        help_heading = "Global",
        long_help = "inject via stdin
cat <<EOF | cuddle-please --config-stdin 
something
something
something
EOF
config-stdin will consume stdin until the channel is closed via. EOF"
    )]
    pub config_stdin: bool,

    #[arg(
        env = "CUDDLE_PLEASE_NO_VCS",
        long,
        global = true,
        help_heading = "Global"
    )]
    pub no_vcs: bool,

    #[arg(
        env = "CUDDLE_PLEASE_ENGINE",
        long,
        global = true,
        help_heading = "Global",
        default_value = "gitea"
    )]
    pub engine: RemoteEngine,

    #[arg(
        env = "CUDDLE_PLEASE_LOG_LEVEL",
        long,
        global = true,
        help_heading = "Global",
        default_value = "none"
    )]
    pub log_level: LogLevel,
}

#[derive(ValueEnum, Clone, Debug)]
pub enum RemoteEngine {
    Local,
    Gitea,
}
#[derive(ValueEnum, Clone, Debug)]
pub enum LogLevel {
    None,
    Trace,
    Debug,
    Info,
    Error,
}