moros 0.12.0

MOROS: Obscure Rust Operating System
Documentation
use crate::api;
use crate::api::clock::DATE_TIME_ZONE;
use crate::api::console::Style;
use crate::api::process::ExitCode;
use time::validate_format_string;

pub fn main(args: &[&str]) -> Result<(), ExitCode> {
    if args.len() > 2 {
        return Err(ExitCode::UsageError);
    }
    let format = if args.len() > 1 {
        args[1]
    } else {
        DATE_TIME_ZONE
    };
    if format == "-h" || format == "--help" {
        return help();
    }
    match validate_format_string(format) {
        Ok(()) => {
            println!("{}", api::time::now().format(format));
            Ok(())
        }
        Err(e) => {
            error!("{}", e);
            Err(ExitCode::Failure)
        }
    }
}

fn help() -> Result<(), ExitCode> {
    let csi_option = Style::color("aqua");
    let csi_title = Style::color("yellow");
    let csi_reset = Style::reset();
    println!(
        "{}Usage:{} date {}[<format>]{}",
        csi_title, csi_reset, csi_option, csi_reset
    );
    Ok(())
}