name: Sync Linguist on: workflow_dispatch jobs: sync-linguist: runs-on: ubuntu-latest steps: - uses: actions/setup-go@v2 - uses: actions/checkout@v2 - name: Create a branch id: branch run: | set -euo pipefail IFS=$'\n\t' branch_name=$(feature/sync-linguist-$(date +%s)) git checkout -b $branch_name echo "::set-output name=branch_name::$branch_name" - uses: actions/checkout@v2 with: repository: github/linguist path: .linguist fetch-depth: 0 - name: check out latest release id: linguist-release # the `grep -v "-"` is to exclude any pre-release versions. # Linguist doesn't have any right now, but just in case. run: | set -euo pipefail IFS=$'\n\t' cd .linguist latest=$(git tag --list | \ grep -v "-" | \ sort --version-sort --reverse | \ head -1) echo "::set-output name=linguist_version::$latest" git checkout $latest cd .. - name: Generate code run: make code-generate - name: Commit changes id: commit run: | set -euo pipefail IFS=$'\n\t' if [[ -n "$(git status --porcelain)" ]]; then git config user.name github-actions git config user.email github-actions@github.com git add . git commit -m "Updated Linguist to ${{ steps.linguist-release.outputs.linguist_version }}" git push --set-upstream origin ${{ steps.branch.outputs.branch_name }} echo "::set-output name=needs_pr::true" else echo "::set-output name=needs_pr::false" fi - name: Create Pull Request id: open-pr uses: repo-sync/pull-request@v2 if: ${{ steps.commit.needs_pr == 'true' }} with: destination_branch: "master" github_token: ${{ secrets.GITHUB_TOKEN }} - name: output-url if: ${{ steps.commit.needs_pr == 'true' }} run: echo ${{ steps.open-pr.outputs.pr_url }} - name: No PR Created if: ${{ steps.commit.needs_pr == 'false' }} run: echo "No changes for ${{ steps.linguist-release.outputs.linguist_version }}"