name: build-with-truffleruby-head

on:
  push:
  pull_request:
  workflow_dispatch:
  schedule:
    - cron: "30 14 * * *"

jobs:
  ruby-versions:
    uses: ruby/actions/.github/workflows/ruby_versions.yml@master
    with:
      engine: cruby-truffleruby
      min_version: 2.6

  reline:
    needs: ruby-versions
    name: >-
      reline ${{ matrix.os }} ${{ matrix.ruby }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        ruby: [truffleruby-head]
        os: [ubuntu-latest, macos-latest]
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v4
      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: ${{ matrix.ruby }}
      - name: Install dependencies
        run: bundle install
      - name: rake test
        env:
          TERM: xterm-256color
        run: bundle exec rake test
      - name: rake test (frozen string literal)
        env:
          TERM: xterm-256color
        run: bundle exec rake test RUBYOPT="--enable-frozen-string-literal"

  irb:
    needs: ruby-versions
    name: >-
      irb ${{ matrix.ruby }}  ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        ruby: [truffleruby-head]
        os: [ubuntu-latest]
        exclude:
          - ruby: 2.6
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v4
      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: ${{ matrix.ruby }}
      - name: Install libvterm
        run: |
          sudo apt install -y libtool-bin
          wget http://www.leonerd.org.uk/code/libvterm/libvterm-0.1.4.tar.gz
          tar xvzf libvterm-0.1.4.tar.gz
          cd libvterm-0.1.4
          sed -i -e 's/^PREFIX=.*$/PREFIX=\/usr/g' Makefile
          make
          sudo make install
      - name: Install dependencies
        run: bundle install
      - name: Install reline
        run: rake install
      - name: Download ruby/irb
        run: |
          git clone https://github.com/ruby/irb
      - name: Run irb test
        working-directory: ./irb
        run: |
          bundle install
          bundle exec rake test

  vterm-yamatanooroti:
    needs: ruby-versions
    name: >-
      vterm-yamatanooroti ${{ matrix.os }} ${{ matrix.ruby }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        ruby: [truffleruby-head]
        os: [ubuntu-latest]
    timeout-minutes: 30
    steps:
      - uses: actions/checkout@v4
      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: ${{ matrix.ruby }}
      - name: Install libvterm
        run: |
          sudo apt-get install -y libvterm-dev
      - name: Install dependencies
        run: WITH_VTERM=1 bundle install
      - name: rake test_yamatanooroti
        run: WITH_VTERM=1 bundle exec rake test_yamatanooroti
