tspring 1.0.0

Terminal UI for Spring Boot - A modern TUI for managing Spring Boot applications
name: Sync Spring Initializr Metadata

on:
  schedule:
    - cron: '0 0 * * *' # Run nightly at midnight UTC
  workflow_dispatch: # Allow manual trigger via GitHub Actions UI

permissions:
  contents: write # Needed to push changes back to the repository

jobs:
  sync:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Create resources folder
        run: mkdir -p resources

      - name: Fetch and format Initializr metadata
        run: |
          echo "Fetching metadata from start.spring.io/metadata/client..."
          curl -sS -H "Accept: application/json" "https://start.spring.io/metadata/client" -o resources/initializr-metadata.raw.json
          jq . resources/initializr-metadata.raw.json > resources/initializr-metadata.json
          
          echo "Fetching dependencies from start.spring.io/dependencies..."
          curl -sS -H "Accept: application/vnd.initializr.v2.2+json" "https://start.spring.io/dependencies" -o resources/dependencies.raw.json
          jq . resources/dependencies.raw.json > resources/dependencies.json
          
          rm resources/*.raw.json

      - name: Commit and push changes
        run: |
          git config --global user.name "github-actions[bot]"
          git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
          git add resources/initializr-metadata.json resources/dependencies.json
          
          if git diff --staged --quiet; then
            echo "No changes in metadata found. Skipping commit."
          else
            git commit -m "chore: sync Spring Initializr metadata and dependencies [skip ci]"
            git push
            echo "Successfully updated and pushed new Initializr metadata."
          fi