name: "Lint whitespace and languages"
on:
  workflow_dispatch: ~
  push:
    paths:
      - ".github/workflows/**"
      - "src/main/**.java"
      - "**.json"
      - "build.gradle"
      - "scripts/format_whitespace.py"
      - "scripts/manage_languages.py"
    branches:
      - "development"
jobs:
  Make-Lint-Commits:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - name: Setup Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.10'
      - name: Run Whitespace Linter
        run: python scripts/format_whitespace.py
      - run: git config --global user.name "github-actions"
      - run: git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
      - run: git stash
      - run: git checkout LintRatchet
      # - run: git merge development
      - run: git reset --hard development
      - run: git stash pop || true

      - name: Commit any whitespace changes
        run: git add -u && git commit -m 'Fix whitespace [skip actions]' || true

      - name: Update Languages
        run: python scripts/manage_languages.py -u

      - name: Commit any language changes
        run: git add -u && git commit -m 'Update languages [skip actions]' || true

      - name: Bump version to a release
        # a.b.c-dev -> a.b.c
        # If any breaking changes, a.b.c-dev -> a.(b+1).0
        run: |
            export BREAKING=`git log $(git describe --tags --abbrev=0)..HEAD --pretty=format:"%s" --grep="BREAKING"`
            if [[ $BREAKING ]]; then export NEXT_VERSION=`sed -nr "s/^version = '(.*\.)([0-9]+)\.[0-9]+(-dev)?'"'/echo "\1$((\2+1)).0"/ep' build.gradle`; else export NEXT_VERSION=`sed -nr "s/^version = '(.*)-dev'/\1/p" build.gradle`; fi
            export CHANGELOG=`git log $(git describe --tags --abbrev=0)..HEAD --pretty=format:"%s"`
            perl -pi -e "s/version = '.*'/version = '$NEXT_VERSION'/g" build.gradle
            git add build.gradle && git commit -m "Version $NEXT_VERSION" -m "$CHANGELOG"

      - name: Bump version to next dev
        # a.b.c -> a.b.(c+1)-dev
        run: |
            export NEXT_VERSION=`sed -nr "s/^version = '(.*)([0-9]+)'"'/echo "\1$((\2+1))-dev"/ep' build.gradle`
            perl -pi -e "s/version = '.*'/version = '$NEXT_VERSION'/g" build.gradle
            git add build.gradle && git commit -m "Version $NEXT_VERSION [skip actions]"

      - name: Force-push changes to LintRatchet
        run: git push --set-upstream --force origin LintRatchet