zero4rs 2.0.0

zero4rs is a powerful, pragmatic, and extremely fast web framework for Rust
Documentation
use crate::core::youtube::args::download::DownloadArgs;
use crate::core::youtube::args::logging::LoggingArgs;
use crate::core::youtube::args::output::OutputArgs;

use rustube::{Id, IdBuf, Result};

#[derive(clap::Parser)]
#[clap(
    version,
    about = "A simple CLI for the rustube YouTube-downloader library."
)]
pub enum Command {
    #[clap(about = "Checks if a video can be downloaded and fetches information about it")]
    Check(CheckArgs),
    #[clap(about = "Downloads a YouTube video")]
    Download(DownloadArgs),
}

#[derive(clap::Parser)]
pub struct CheckArgs {
    #[clap(flatten)]
    pub identifier: Identifier,
    #[clap(flatten)]
    pub stream_filter: crate::core::youtube::stream_filter::StreamFilter,
    #[clap(flatten)]
    pub logging: LoggingArgs,
    #[clap(flatten)]
    pub output: OutputArgs,
}

#[derive(clap::Parser)]
pub struct Identifier {
    identifier: String,
}

impl Identifier {
    pub fn id(&self) -> Result<IdBuf> {
        Ok(Id::from_raw(&self.identifier)?.into_owned())
    }
    pub fn id_string(&self) -> String {
        self.identifier.clone()
    }
}