feat(config): add automatic timezone detection from IP API
- commit
- eb97f5a0a710cac109528e4e5257881ed82d27a9
- author
- bnema · · 2025-10-19 16:26 UTC
- committer
- bnema · · 2025-10-19 16:56 UTC
- parent
- 22f5800
- signature
- unsigned
1 file · +22 -4
M install/config/system.sh +22 -4
| @@ -4,10 +4,28 @@ | |||
| 4 | 4 | gum style --foreground 6 --padding "1 0 0 $PADDING_LEFT" "System Configuration" | |
| 5 | 5 | echo | |
| 6 | 6 | ||
| 7 | - | # Ask for timezone | |
| 8 | - | ARCHUP_TIMEZONE=$(gum input --placeholder "Enter timezone (e.g., America/New_York)" \ | |
| 9 | - | --prompt "Timezone: " \ | |
| 10 | - | --padding "0 0 0 $PADDING_LEFT") | |
| 7 | + | # Fetch timezone from IP | |
| 8 | + | DETECTED_TIMEZONE=$(curl -s "https://ipapi.co/timezone/" 2>/dev/null) | |
| 9 | + | ||
| 10 | + | if [ -n "$DETECTED_TIMEZONE" ]; then | |
| 11 | + | # Show detected timezone and ask for confirmation | |
| 12 | + | gum style --foreground 3 --padding "0 0 0 $PADDING_LEFT" "Detected timezone: $DETECTED_TIMEZONE" | |
| 13 | + | ||
| 14 | + | if gum confirm --padding "0 0 0 $PADDING_LEFT" "Is this correct?"; then | |
| 15 | + | ARCHUP_TIMEZONE="$DETECTED_TIMEZONE" | |
| 16 | + | else | |
| 17 | + | # Ask for manual timezone entry | |
| 18 | + | ARCHUP_TIMEZONE=$(gum input --placeholder "Enter timezone (e.g., America/New_York)" \ | |
| 19 | + | --prompt "Timezone: " \ | |
| 20 | + | --padding "0 0 0 $PADDING_LEFT") | |
| 21 | + | fi | |
| 22 | + | else | |
| 23 | + | # Fallback to manual entry if API fails | |
| 24 | + | gum style --foreground 3 --padding "0 0 0 $PADDING_LEFT" "Unable to detect timezone automatically" | |
| 25 | + | ARCHUP_TIMEZONE=$(gum input --placeholder "Enter timezone (e.g., America/New_York)" \ | |
| 26 | + | --prompt "Timezone: " \ | |
| 27 | + | --padding "0 0 0 $PADDING_LEFT") | |
| 28 | + | fi | |
| 11 | 29 | ||
| 12 | 30 | if [ -z "$ARCHUP_TIMEZONE" ]; then | |
| 13 | 31 | ARCHUP_TIMEZONE="UTC" | |
| @@ -4,10 +4,28 @@ | |||||
| 4 | gum style --foreground 6 --padding "1 0 0 $PADDING_LEFT" "System Configuration" | 4 | gum style --foreground 6 --padding "1 0 0 $PADDING_LEFT" "System Configuration" | ||
| 5 | echo | 5 | echo | ||
| 6 | 6 | ||||
| 7 | - | # Ask for timezone | 7 | + | # Fetch timezone from IP |
| 8 | - | ARCHUP_TIMEZONE=$(gum input --placeholder "Enter timezone (e.g., America/New_York)" \ | 8 | + | DETECTED_TIMEZONE=$(curl -s "https://ipapi.co/timezone/" 2>/dev/null) |
| 9 | - | --prompt "Timezone: " \ | 9 | + | |
| 10 | - | --padding "0 0 0 $PADDING_LEFT") | 10 | + | if [ -n "$DETECTED_TIMEZONE" ]; then |
| 11 | + | # Show detected timezone and ask for confirmation | |||
| 12 | + | gum style --foreground 3 --padding "0 0 0 $PADDING_LEFT" "Detected timezone: $DETECTED_TIMEZONE" | |||
| 13 | + | ||||
| 14 | + | if gum confirm --padding "0 0 0 $PADDING_LEFT" "Is this correct?"; then | |||
| 15 | + | ARCHUP_TIMEZONE="$DETECTED_TIMEZONE" | |||
| 16 | + | else | |||
| 17 | + | # Ask for manual timezone entry | |||
| 18 | + | ARCHUP_TIMEZONE=$(gum input --placeholder "Enter timezone (e.g., America/New_York)" \ | |||
| 19 | + | --prompt "Timezone: " \ | |||
| 20 | + | --padding "0 0 0 $PADDING_LEFT") | |||
| 21 | + | fi | |||
| 22 | + | else | |||
| 23 | + | # Fallback to manual entry if API fails | |||
| 24 | + | gum style --foreground 3 --padding "0 0 0 $PADDING_LEFT" "Unable to detect timezone automatically" | |||
| 25 | + | ARCHUP_TIMEZONE=$(gum input --placeholder "Enter timezone (e.g., America/New_York)" \ | |||
| 26 | + | --prompt "Timezone: " \ | |||
| 27 | + | --padding "0 0 0 $PADDING_LEFT") | |||
| 28 | + | fi | |||
| 11 | 29 | ||||
| 12 | if [ -z "$ARCHUP_TIMEZONE" ]; then | 30 | if [ -z "$ARCHUP_TIMEZONE" ]; then | ||
| 13 | ARCHUP_TIMEZONE="UTC" | 31 | ARCHUP_TIMEZONE="UTC" | ||