name: Update API docs on: # Trigger on push to branches `master` and `3.5`. push: branches: [ master, 3.5 ] # Trigger on pull request events for PRs that have `master` as their target branch pull_request: branches: [ master ] # Allow running the workflow manually workflow_dispatch: defaults: run: # GitHub Actions adds `errexit` and `pipefail` by default, but we add `xtrace` # to improve debugging some of the longer scripts. shell: /bin/bash -o errexit -o pipefail -o xtrace {0} jobs: main: runs-on: ubuntu-20.04 steps: # Create a cache invalidation key based on the current year + week. # This way, packages will be checked for updates once every week. - name: Get Date id: get-date run: echo "::set-output name=date::$(/bin/date -u "+%Y%W")" - name: Cache apt packages id: cache-apt uses: actions/cache@v2 with: path: /var/cache/apt/archives # The trailing number serves as a version flag that can be incremented # to invalidate the cache after changing the list of packages. key: ${{ github.workflow }}-${{ runner.os }}-${{ steps.get-date.outputs.date }}-apt-3 - name: Download apt packages if: steps.cache-apt.outputs.cache-hit != 'true' run: | sudo apt-get update sudo apt-get install --download-only -y --no-install-recommends \ asciidoctor \ cmake \ dbus-x11 \ gettext \ gir1.2-gtk-3.0 \ gir1.2-pango-1.0 \ git \ libdbus-1-dev \ libgirepository1.0-dev \ libnotify-bin \ libpango1.0-dev \ libstartup-notification0-dev \ libx11-xcb-dev \ libxcb-cursor-dev \ libxcb-icccm4-dev \ libxcb-keysyms1-dev \ libxcb-randr0-dev \ libxcb-shape0-dev \ libxcb-util0-dev \ libxcb-xfixes0-dev \ libxcb-xinerama0-dev \ libxcb-xkb-dev \ libxcb-xrm-dev \ libxcb-xtest0-dev \ libxdg-basedir-dev \ libxkbcommon-dev \ libxkbcommon-x11-dev \ xutils-dev \ liblua5.3-dev \ lua5.3 - name: Install downloaded packages run: | sudo dpkg -i /var/cache/apt/archives/*.deb - name: Cache luarocks id: cache-luarocks uses: actions/cache@v2 with: path: /tmp/luarocks key: ${{ github.workflow }}-${{ runner.os }}-luarocks-3.5.0 - name: Install fresh Luarocks if: steps.cache-luarocks.outputs.cache-hit != 'true' run: | wget -O /tmp/luarocks.tar.gz https://github.com/luarocks/luarocks/archive/v3.5.0.tar.gz mkdir /tmp/luarocks tar -xf /tmp/luarocks.tar.gz -C /tmp/luarocks --strip-components=1 cd /tmp/luarocks ./configure make build sudo make install - name: Install cached Luarocks if: steps.cache-luarocks.outputs.cache-hit == 'true' run: | cd /tmp/luarocks sudo make install - name: Install rocks run: | sudo -H luarocks install lgi sudo -H luarocks install ldoc - uses: actions/checkout@v2 - name: Build Awesome version string run: | # If this workflow is triggered by a pull request, we get a base branch. # Otherwise, check if the current commit has a meaningful name. if [ -n "${{ github.base_ref }}" ]; then AWESOME_VERSION="${{ github.base_ref }}" else AWESOME_VERSION="$(git rev-parse --abbrev-ref HEAD)" fi AWESOME_VERSION="${AWESOME_VERSION}-g$(git rev-parse --short HEAD)" if [ "${{ github.event_name }}" == "pull_request" && -n "${{ matrix.test_prev_commits }}" ]; then AWESOME_VERSION="${AWESOME_VERSION}-PR${{ github.event.number }}" elif [ "${{ github.event_name }}" == "pull_request" ]; then AWESOME_VERSION="v9999-PR${{ github.event.number }}" fi echo "AWESOME_VERSION=${AWESOME_VERSION}" >> ${GITHUB_ENV} - name: Create Build Environment run: cmake -E make_directory -B "${{ github.workspace }}/build" - name: Configure CMake run: | cmake -S ${{ github.workspace }} -B "${{ github.workspace}}/build" \ -DAWESOME_VERSION=$AWESOME_VERSION \ -DGENERATE_DOC=ON \ -DGENERATE_MANPAGES=ON \ -DDO_COVERAGE=OFF - name: Build run: cd "${{ github.workspace }}/build" && make - name: Run apidoc script env: PR_NUMBER: ${{ github.event.number }} APIDOC_TOKEN: ${{ secrets.APIDOC_TOKEN || github.token }} run: .github/scripts/apidoc.sh # vim: filetype=yaml:expandtab:shiftwidth=2:tabstop=2