#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

name: Bot tests
on:
  issue_comment:
    types: [created]

jobs:
  bot:
    runs-on: ubuntu-latest

    steps:
      - name: clone repository
        uses: actions/checkout@v2

      - name: bot actions
        uses: actions/github-script@v1
        env:
          PROVIDER: 'apache'
          REPOSITORY: 'bookkeeper'
          RERUN_CMD: 'rerun failure checks'
        with:
          github-token: ${{secrets.BKBOT_TOKEN}}
          script: |
            const path = require('path')
            const scriptPath = path.resolve('.github/actions/bot/src/run.js')
            require(scriptPath)({core}, {context}, {github})