Last active 1 month ago

nuno revised this gist 1 month ago. Go to revision

1 file changed, 77 insertions

gistfile1.txt(file created)

@@ -0,0 +1,77 @@
1 + #!/usr/bin/env bash
2 +
3 + # ============================================
4 + # Date Formats
5 + # ============================================
6 +
7 + FMT_DATE_ISO="%Y-%m-%d" # 2026-05-10
8 + FMT_DATE_EU="%d/%m/%Y" # 10/05/2026
9 + FMT_DATE_EU_DASH="%d-%m-%Y" # 10-05-2026
10 + FMT_DATETIME_ISO="%Y-%m-%d %H:%M" # 2026-05-10 22:39
11 + FMT_DATETIME_EU="%d/%m/%Y %H:%M" # 10/05/2026 22:39
12 +
13 + # Default — can be overridden in wgctl.conf
14 + FMT_DATE="${FMT_DATE_ISO}"
15 + FMT_DATETIME="${FMT_DATETIME_ISO}"
16 +
17 + # Load from config or use default
18 + _FMT_DATE_FORMAT="${DATE_FORMAT:-iso}"
19 +
20 + FMT_HELPER="${_CTX_ROOT}/core/fmt_helper.py"
21 +
22 + function fmt::date() {
23 + local ts="$1"
24 + date -d "@${ts}" "+${FMT_DATE}" 2>/dev/null || echo "$ts"
25 + }
26 +
27 + function fmt::datetime() {
28 + local ts="$1"
29 + date -d "@${ts}" "+${FMT_DATETIME}" 2>/dev/null || echo "$ts"
30 + }
31 +
32 + function fmt::datetime_iso() {
33 + local iso="$1"
34 + python3 "$FMT_HELPER" fmt_datetime "$iso" "$FMT_DATETIME" </dev/null
35 + }
36 +
37 + # fmt::datetime_short <unix_timestamp>
38 + # Returns a compact datetime — just time if today, short date+time if older.
39 + # Respects configured date format. Returns "—" for empty/zero timestamps.
40 + function fmt::datetime_short() {
41 + local ts="${1:-}"
42 + [[ -z "$ts" || "$ts" == "0" ]] && echo "—" && return 0
43 +
44 + local today ts_day
45 + today=$(date +%Y-%m-%d)
46 + ts_day=$(date -d "@${ts}" +%Y-%m-%d 2>/dev/null) || { echo "—"; return 0; }
47 +
48 + if [[ "$ts_day" == "$today" ]]; then
49 + date -d "@${ts}" +"%H:%M" 2>/dev/null || echo "—"
50 + else
51 + case "$_FMT_DATE_FORMAT" in
52 + iso) date -d "@${ts}" +"%m-%d %H:%M" 2>/dev/null || echo "—" ;;
53 + eu*) date -d "@${ts}" +"%d/%m %H:%M" 2>/dev/null || echo "—" ;;
54 + *) date -d "@${ts}" +"%m-%d %H:%M" 2>/dev/null || echo "—" ;;
55 + esac
56 + fi
57 + }
58 +
59 + function fmt::set_date_format() {
60 + local format="$1"
61 + case "$format" in
62 + iso)
63 + FMT_DATE="%Y-%m-%d"
64 + FMT_DATETIME="%Y-%m-%d %H:%M"
65 + ;;
66 + eu)
67 + FMT_DATE="%d/%m/%Y"
68 + FMT_DATETIME="%d/%m/%Y %H:%M"
69 + ;;
70 + eu-dash)
71 + FMT_DATE="%d-%m-%Y"
72 + FMT_DATETIME="%d-%m-%Y %H:%M"
73 + ;;
74 + *) log::error "Unknown date format: $format" ;;
75 + esac
76 + }
77 +
Newer Older