# 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.

{% import 'macros.jinja' as macros with context %}

{{ macros.github_header() }}

jobs:
  as-cran:
    name: "rchk"
    runs-on: ubuntu-22.04
    strategy:
      fail-fast: false
    env:
      ARROW_R_DEV: "FALSE"
      RSPM: "https://packagemanager.rstudio.com/cran/__linux__/jammy/latest"
    steps:
      {{ macros.github_checkout_arrow()|indent }}

      - uses: r-lib/actions/setup-r@v2
      - uses: r-lib/actions/setup-pandoc@v2
      - uses: r-lib/actions/setup-r-dependencies@v2
        with:
          working-directory: 'arrow/r'
          extra-packages: |
            any::rcmdcheck
      - name: Build arrow package
        run: |
          R CMD build --no-build-vignettes arrow/r
          mkdir packages
          mv arrow_*.tar.gz packages
      - name: rchk
        run: |
          docker run -v `pwd`/packages:/rchk/packages kalibera/rchk:latest /rchk/packages/arrow_*.tar.gz |& tee rchk.out
      - name: Confirm that rchk has no errors
        # Suspicious call, [UP], and [PB] are all of the error types currently at
        # https://github.com/kalibera/cran-checks/tree/HEAD/rchk/results
        # though this might not be exhaustive, there does not appear to be a way to have rchk return an error code
        # CRAN also will remove some of the outputs (especially those related to Rcpp and strptime, e.g.
        # ERROR: too many states (abstraction error?))
        # https://github.com/kalibera/rchk
        run: |
          if [ $(grep -Fc "Suspicious call" rchk.out) -gt 0 ] || [ $(grep -Fc "[UP]" rchk.out) -gt 0 ] || [ $(grep -Fc "[PB]" rchk.out) -gt 0 ]; then
            echo "Found rchk errors"
            cat rchk.out
            exit 1
          fi
        if: always()
      - name: Dump rchk output logs
        run: cat rchk.out
        if: always()
