gistfile1.txt
· 2.1 KiB · Text
Sin formato
#!/usr/bin/env bash
# ============================================
# Date Formats
# ============================================
FMT_DATE_ISO="%Y-%m-%d" # 2026-05-10
FMT_DATE_EU="%d/%m/%Y" # 10/05/2026
FMT_DATE_EU_DASH="%d-%m-%Y" # 10-05-2026
FMT_DATETIME_ISO="%Y-%m-%d %H:%M" # 2026-05-10 22:39
FMT_DATETIME_EU="%d/%m/%Y %H:%M" # 10/05/2026 22:39
# Default — can be overridden in wgctl.conf
FMT_DATE="${FMT_DATE_ISO}"
FMT_DATETIME="${FMT_DATETIME_ISO}"
# Load from config or use default
_FMT_DATE_FORMAT="${DATE_FORMAT:-iso}"
FMT_HELPER="${_CTX_ROOT}/core/fmt_helper.py"
function fmt::date() {
local ts="$1"
date -d "@${ts}" "+${FMT_DATE}" 2>/dev/null || echo "$ts"
}
function fmt::datetime() {
local ts="$1"
date -d "@${ts}" "+${FMT_DATETIME}" 2>/dev/null || echo "$ts"
}
function fmt::datetime_iso() {
local iso="$1"
python3 "$FMT_HELPER" fmt_datetime "$iso" "$FMT_DATETIME" </dev/null
}
# fmt::datetime_short <unix_timestamp>
# Returns a compact datetime — just time if today, short date+time if older.
# Respects configured date format. Returns "—" for empty/zero timestamps.
function fmt::datetime_short() {
local ts="${1:-}"
[[ -z "$ts" || "$ts" == "0" ]] && echo "—" && return 0
local today ts_day
today=$(date +%Y-%m-%d)
ts_day=$(date -d "@${ts}" +%Y-%m-%d 2>/dev/null) || { echo "—"; return 0; }
if [[ "$ts_day" == "$today" ]]; then
date -d "@${ts}" +"%H:%M" 2>/dev/null || echo "—"
else
case "$_FMT_DATE_FORMAT" in
iso) date -d "@${ts}" +"%m-%d %H:%M" 2>/dev/null || echo "—" ;;
eu*) date -d "@${ts}" +"%d/%m %H:%M" 2>/dev/null || echo "—" ;;
*) date -d "@${ts}" +"%m-%d %H:%M" 2>/dev/null || echo "—" ;;
esac
fi
}
function fmt::set_date_format() {
local format="$1"
case "$format" in
iso)
FMT_DATE="%Y-%m-%d"
FMT_DATETIME="%Y-%m-%d %H:%M"
;;
eu)
FMT_DATE="%d/%m/%Y"
FMT_DATETIME="%d/%m/%Y %H:%M"
;;
eu-dash)
FMT_DATE="%d-%m-%Y"
FMT_DATETIME="%d-%m-%Y %H:%M"
;;
*) log::error "Unknown date format: $format" ;;
esac
}
| 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 | |
| 78 |