.github/workflows: add action to update tapioca definitions
- Tapioca is a companion gem to Sorbet that generates RBI files for the Ruby gems in a project. - Whenever Dependabot updates a gem, Tapioca has to regenerate that gem's RBI files so that Sorbet can accurately assess the state of the typing of a codebase. - We also must regenerate Sorbet's view of [things defined at runtime](https://sorbet.org/docs/rbi#the-hidden-definition-rbi): this is what it calls `hidden-definitions`. - Obviously, this got tedious to do manually. So here's an Action that runs every three days and raises a PR if there are any changes. Co-authored-by: Vidushee Amoli <vidushee.amoli@gmail.com> Co-authored-by: Issy Long <me@issyl0.co.uk> Co-authored-by: Jonathan Chang <jchang641@gmail.com> Co-authored-by: Mike McQuaid <mike@mikemcquaid.com>
This commit is contained in:
		
							parent
							
								
									14ec695c1d
								
							
						
					
					
						commit
						982c7adaf2
					
				
							
								
								
									
										57
									
								
								.github/workflows/tapioca-update.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								.github/workflows/tapioca-update.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,57 @@
 | 
			
		||||
name: Tapioca Update
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    paths:
 | 
			
		||||
      - .github/workflows/tapioca-update.yml
 | 
			
		||||
  schedule:
 | 
			
		||||
    - cron: '0 0 */3 * *' # every three days
 | 
			
		||||
env:
 | 
			
		||||
  HOMEBREW_SORBET: 1
 | 
			
		||||
jobs:
 | 
			
		||||
  update-tapioca:
 | 
			
		||||
    if: github.repository == 'Homebrew/brew'
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Set up Homebrew
 | 
			
		||||
        id: set-up-homebrew
 | 
			
		||||
        uses: Homebrew/actions/setup-homebrew@master
 | 
			
		||||
 | 
			
		||||
      - name: Configure Git user
 | 
			
		||||
        uses: Homebrew/actions/git-user-config@master
 | 
			
		||||
        with:
 | 
			
		||||
          username: BrewTestBot
 | 
			
		||||
 | 
			
		||||
      - name: Set up Ruby
 | 
			
		||||
        uses: ruby/setup-ruby@v1
 | 
			
		||||
        with:
 | 
			
		||||
          ruby-version: 2.6.3
 | 
			
		||||
 | 
			
		||||
      - name: Update Tapioca Definitions
 | 
			
		||||
        run: |
 | 
			
		||||
          cd "$GITHUB_WORKSPACE/Library/Homebrew"
 | 
			
		||||
          bundle install
 | 
			
		||||
          bundle exec tapioca sync --exclude json
 | 
			
		||||
          bundle exec srb rbi hidden-definitions
 | 
			
		||||
          if ! git diff --exit-code -- sorbet; then
 | 
			
		||||
            BRANCH="tapioca-update"
 | 
			
		||||
            if ! git ls-remote --exit-code --heads origin "$BRANCH"; then
 | 
			
		||||
              git checkout -b "$BRANCH"
 | 
			
		||||
              git commit -am "sorbet: Update gem RBI files using Tapioca
 | 
			
		||||
 | 
			
		||||
              Autogenerated by [a scheduled GitHub Action](https://github.com/Homebrew/brew/actions?query=workflow%3A%22Tapioca+Update%22)."
 | 
			
		||||
            fi
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: Push commits
 | 
			
		||||
        uses: Homebrew/actions/git-try-push@master
 | 
			
		||||
        with:
 | 
			
		||||
          token: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
          branch: tapioca-update
 | 
			
		||||
          directory: Library/Homebrew/
 | 
			
		||||
 | 
			
		||||
      - name: Open a PR
 | 
			
		||||
        env:
 | 
			
		||||
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
        run: |
 | 
			
		||||
          cd "$GITHUB_WORKSPACE/Library/Homebrew"
 | 
			
		||||
          hub pull-request -m "$(git log -1 --format='%s')"
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user