File size: 2,344 Bytes
181c77c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
699cdb6
181c77c
699cdb6
181c77c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
699cdb6
181c77c
 
 
699cdb6
181c77c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/bin/bash

# Check necessary environment variables
if [ -z "$G_NAME" ] || [ -z "$G_TOKEN" ]; then
    echo "Missing required environment variables G_NAME or G_TOKEN"
    exit 1
fi

# Parse repository name and username
IFS='/' read -r GITHUB_USER GITHUB_REPO <<< "$G_NAME"

# Build GitHub repository clone URL with token
REPO_URL="https://${G_TOKEN}@github.com/${G_NAME}.git"
mkdir -p ./data/github_data

# Clone repository
echo "Cloning repository..."
git clone "$REPO_URL" ./data/github_data || {
    echo "Clone failed, please check if G_NAME and G_TOKEN are correct."
    exit 1
}

SOURCE_DB="$HOME/.omniroute/storage.sqlite"
mkdir -p "$HOME/.omniroute"

# Initial pull — blocking, must complete before omniroute starts
if [ -f ./data/github_data/storage.sqlite ]; then
    cp ./data/github_data/storage.sqlite "$SOURCE_DB"
    echo "Successfully pulled from GitHub repository"
else
    echo "storage.sqlite not found in GitHub repository, will push during sync"
fi

# Sync GitHub every 2 minutes using America/Detroit time
sync_data() {
    while true; do
        CURRENT_TIME=$(TZ=America/Detroit date '+%Y-%m-%d %H:%M:%S')
        echo "Current time $CURRENT_TIME - Starting GitHub sync..."

        cd ./data/github_data || { echo "Failed to change directory"; exit 1; }

        git config user.name "y4shg"
        git config user.email "y.ghule77@gmail.com"

        git checkout main 2>/dev/null || git checkout master

        if [ -f "$SOURCE_DB" ]; then
            cp "$SOURCE_DB" ./storage.sqlite
        else
            echo "Database not yet initialized"
        fi

        # Stage and commit if changes exist
        if [[ -n $(git status -s) ]]; then
            git add storage.sqlite
            git commit -m "Auto sync storage.sqlite $(TZ=America/Detroit date '+%Y-%m-%d %H:%M:%S')"
        fi

        # ALWAYS try to push if commits exist (with upstream tracking)
        if git status | grep -q "ahead of"; then
            echo "Local commits ahead — pushing..."
            git push -u origin HEAD && echo "GitHub push successful" || echo "GitHub push failed"
        else
            echo "GitHub: No new commits to push"
        fi

        cd ../..
        echo "Waiting 2 minutes until next sync..."
        sleep 120
    done
}

# Start background sync loop then exit so omniroute can start
sync_data &