# 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:
  devdocs:
    name: 'R devdocs {{ "${{ matrix.os }}" }}'
    runs-on: {{ "${{ matrix.os }}" }}
    strategy:
      fail-fast: false
      matrix:
        os: [macOS-latest, ubuntu-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:
          packages: "rmarkdown, knitr, sessioninfo"
      - name: Session info
        run: |
          options(width = 100)
          pkgs <- installed.packages()[, "Package"]
          sessioninfo::session_info(pkgs, include_base = TRUE)
        shell: Rscript {0}
      - name: Write the install script
        env:
          RUN_DEVDOCS: TRUE
          DEVDOCS_MACOS: {{ "${{contains(matrix.os, 'macOS')}}" }}
          DEVDOCS_UBUNTU: {{ "${{contains(matrix.os, 'ubuntu')}}" }}
        run: |
          # This isn't actually rendering the docs, but will save arrow/r/vignettes/developers/script.sh
          # which can be sourced to install arrow.
          rmarkdown::render("arrow/r/vignettes/developers/setup.Rmd")
        shell: Rscript {0}
      - name: Install from the devdocs
        env:
          LIBARROW_BINARY: FALSE
          ARROW_R_DEV: TRUE
        run: |
          bash arrow/r/vignettes/developers/script.sh
        shell: bash
      - name: Ensure that the Arrow package is loadable and we have the correct one
        run: |
          echo $LD_LIBRARY_PATH
          R --no-save <<EOF
          Sys.getenv("LD_LIBRARY_PATH")
          library(arrow)
          arrow_info()
          EOF
        shell: bash -l {0}
      - name: Save the install script
        uses: actions/upload-artifact@v4
        with:
          name: {{ "devdocs-script_os-${{ matrix.os }}_sysinstall-${{ matrix.system-install }}" }}
          path: arrow/r/vignettes/developers/script.sh
        if: always()
