# .github/workflows/release.yml

name: Test, Lint, Release and Publish

on:
  push:
    branches:
      - main

jobs:
  release-please:
    runs-on: ubuntu-latest
    steps:
      - uses: GoogleCloudPlatform/release-please-action@v2
        id: release
        with:
          release-type: ruby
          package-name: vagrant-zones
          bump-minor-pre-major: true
          bump-patch-for-minor-pre-major: true
          version-file: "lib/vagrant-zones/version.rb"

      # Checkout code if release was created
      - uses: actions/checkout@v2
        if: ${{ steps.release.outputs.release_created }}

      # Setup ruby if a release was created
      - name: Set up Ruby 2.7
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: 2.7
        if: ${{ steps.release.outputs.release_created }}

      # Bundle install
      - run: bundle install
        if: ${{ steps.release.outputs.release_created }}
        
      # Check if Passing Lint Requirements
      - name: Run Rake tests
        id: tests
        run: bundle exec rake
        if: ${{ steps.release.outputs.release_created }}
        

      # Publish to GPR
      - name: Publish to GPR
        run: |
          mkdir -p $HOME/.gem
          touch $HOME/.gem/credentials
          chmod 0600 $HOME/.gem/credentials
          printf -- "---\n:github: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
          gem build *.gemspec
          gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem
        env:
          GEM_HOST_API_KEY: "Bearer ${{secrets.GITHUB_TOKEN}}"
          OWNER: ${{ github.repository_owner }}
        if: steps.tests.outputs.exit_code == 0 && steps.release.outputs.release_created

      # Publish to Ruby Gems
      - name: Publish to RubyGems
        run: |
          mkdir -p $HOME/.gem
          touch $HOME/.gem/credentials
          chmod 0600 $HOME/.gem/credentials
          printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
          gem build *.gemspec
          gem push *.gem
        env:
          GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
        if: steps.tests.outputs.exit_code == 0 && steps.release.outputs.release_created