#include <os/ArgumentParser.h>
#include <os/File.h>
#include <stddef.h>
#include <stdlib.h>
#include <time.h>

Result<int> luna_main(int argc, char** argv)
{
    StringView date;

    os::ArgumentParser parser;
    parser.add_description("Display the current (or another) date and time."_sv);
    parser.add_system_program_info("date"_sv);
    parser.add_value_argument(date, 'd', "date"_sv, "the UNIX timestamp to display instead of the current time"_sv);
    parser.parse(argc, argv);

    time_t now;
    if (date.is_empty()) { now = time(NULL); }
    else { now = strtol(date.chars(), nullptr, 10); }

    os::print("%s", ctime(&now));

    return 0;
}