|
name: Check files updates |
|
|
|
on: |
|
schedule: |
|
- cron: "*/30 * * * *" # Runs every 30 minutes |
|
workflow_dispatch: |
|
push: |
|
branches: |
|
- main |
|
|
|
jobs: |
|
check-updates: |
|
runs-on: self-hosted |
|
steps: |
|
- name: Checkout repository |
|
uses: actions/checkout@v4 |
|
with: |
|
token: ${{ secrets.PAT_TOKEN }} |
|
fetch-depth: 0 |
|
|
|
- name: Set up Python |
|
uses: actions/setup-python@v4 |
|
with: |
|
python-version: "3.10" |
|
|
|
- name: Switch to data branch |
|
run: | |
|
git checkout data || git checkout -b data |
|
|
|
- name: Copy files from main branch |
|
run: | |
|
if [ ! -f .checkout_exclude ]; then |
|
echo ".github" > .checkout_exclude |
|
fi |
|
|
|
# debug |
|
echo "Files to checkout exclude:" |
|
cat .checkout_exclude |
|
|
|
GIT_CHECKOUT_EXCLUDES=$(awk '{printf " :(exclude)%s", $0}' .checkout_exclude) |
|
git checkout main -- . $GIT_CHECKOUT_EXCLUDES |
|
|
|
- name: Create virtual environment |
|
run: python -m venv .venv |
|
|
|
- name: Install dependencies |
|
run: | |
|
source .venv/bin/activate |
|
pip install -r requirements.txt |
|
|
|
- name: Run script |
|
run: | |
|
source .venv/bin/activate |
|
python -m src |
|
rm -rf __pycache__ |
|
|
|
- name: Commit changes if any |
|
run: | |
|
git config --global user.email "[email protected]" |
|
git config --global user.name "GitHub Action" |
|
|
|
if [ ! -f .keep ]; then |
|
echo ".git" > .keep |
|
echo ".github" >> .keep |
|
echo "data" >> .keep |
|
echo ".keep" >> .keep |
|
fi |
|
|
|
# debug |
|
echo "Files to keep:" |
|
cat .keep |
|
echo "All files:" |
|
ls -la |
|
|
|
EXCLUDES=$(awk '{printf "! -name \"%s\" ", $0}' .keep) |
|
echo "Excludes: $EXCLUDES" |
|
eval "find . -maxdepth 1 -mindepth 1 $EXCLUDES -exec rm -rf {} +" |
|
|
|
# debug |
|
echo "All files after removal:" |
|
ls -la |
|
|
|
git add -A |
|
|
|
if git diff-index --quiet HEAD -- data && git diff --cached --quiet HEAD -- data; then |
|
echo "No changes in data/ folder; exiting." |
|
exit 0 |
|
else |
|
echo "Changes detected in data/ folder; continuing." |
|
fi |
|
|
|
git remote set-url origin https://${{ secrets.PAT_TOKEN }}@github.com/${{ github.repository }}.git |
|
git commit -m "Update tracked files" |
|
git push origin data |