dtime 1.0.2

A professional, cross-platform datetime display utility with colored output and millisecond precision
Documentation
// File: src\config.rs
// Author: Hadi Cahyadi <cumulus13@gmail.com>
// Date: 2026-05-09
// Description:
// License: MIT

use clap::Parser;

/// dtime - Professional DateTime Display Utility
#[derive(Parser, Debug, Clone)]
#[command(
    name = "dtime",
    version = env!("CARGO_PKG_VERSION"),
    // disable_version_flag = true,
    author = "Hadi Cahyadi <cumulus13@gmail.com>",
    about = "A professional cross-platform datetime display utility with colored output",
    long_about = "Display current date and time with millisecond precision, timezone information, and colored output. Supports multiple output formats including plain text, colored terminal, and JSON."
)]
pub struct Config {
    // #[arg(short = 'V', long = "version", action = ArgAction::SetTrue)]
    // version: bool,
    /// Output format
    #[arg(short = 'f', long = "format", default_value = "colored", value_parser = ["colored", "plain", "json"])]
    pub output_format: String,

    /// Disable colored output
    #[arg(short = 'n', long = "no-color")]
    pub no_color: bool,

    /// Show ISO 8601 format
    #[arg(short = 'i', long = "iso")]
    pub show_iso: bool,

    /// Continuous monitoring mode (updates every N seconds)
    #[arg(short = 'm', long = "monitor", value_name = "SECONDS")]
    pub monitor: Option<u64>,

    /// Custom timezone (IANA format, e.g., "Asia/Jakarta", "America/New_York")
    #[arg(short = 't', long = "timezone")]
    pub timezone: Option<String>,
}

impl Default for Config {
    fn default() -> Self {
        Self {
            output_format: "colored".to_string(),
            no_color: false,
            show_iso: false,
            monitor: None,
            timezone: None,
        }
    }
}

impl Config {
    /// Parse command line arguments
    pub fn from_args() -> Self {
        Parser::parse()
    }
}