sqlite-regex 0.2.3

A SQLite extension for working with regular expressions
Documentation
name: "build"
on:
  push:
    branches:
      - main
      - pip-install
permissions:
  contents: read
jobs:
  build-ubuntu-extension:
    name: Building ubuntu
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v3
      - uses: actions/cache@v3
        with:
          path: |
            ~/.cargo/bin/
            ~/.cargo/registry/index/
            ~/.cargo/registry/cache/
            ~/.cargo/git/db/
            target/
          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
      - run: make loadable
      - name: Upload artifacts
        uses: actions/upload-artifact@v3
        with:
          name: sqlite-regex-ubuntu
          path: dist/debug/regex0.so
  build-ubuntu-python:
    runs-on: ubuntu-20.04
    needs: [build-ubuntu-extension]
    steps:
      - uses: actions/checkout@v3
      - name: Download workflow artifacts
        uses: actions/download-artifact@v3
        with:
          name: sqlite-regex-ubuntu
          path: dist/debug/
      - uses: actions/setup-python@v3
      - run: pip install wheel
      - run: make python
      - run: make datasette
      - uses: actions/upload-artifact@v3
        with:
          name: sqlite-regex-ubuntu-wheels
          path: dist/debug/wheels/*.whl
  test-ubuntu:
    runs-on: ubuntu-20.04
    needs: [build-ubuntu-extension, build-ubuntu-python]
    env:
      DENO_DIR: deno_cache
    steps:
      - uses: actions/checkout@v3
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-regex-ubuntu
          path: dist/debug/
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-regex-ubuntu
          path: npm/sqlite-regex-linux-x64/lib
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-regex-ubuntu-wheels
          path: dist/debug/
      - run: pip install --find-links dist/debug/ sqlite_regex
      - run: make test-loadable
      - run: make test-python
      # for test-npm
      - uses: actions/setup-node@v3
        with:
          cache: "npm"
          cache-dependency-path: npm/sqlite-regex/package.json
      - run: npm install
        working-directory: npm/sqlite-regex
      - run: make test-npm
      # for test-deno
      - uses: denoland/setup-deno@v1
        with:
          deno-version: v1.30
      - name: Cache Deno dependencies
        uses: actions/cache@v3
        with:
          path: ${{ env.DENO_DIR }}
          key: ${{ runner.os }}-${{ hashFiles('deno/deno.lock') }}
      - run: make test-deno
        env:
          DENO_SQLITE_REGEX_PATH: ${{ github.workspace }}/dist/debug/regex0
  build-macos-extension:
    name: Building macos-latest
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/cache@v3
        with:
          path: |
            ~/.cargo/bin/
            ~/.cargo/registry/index/
            ~/.cargo/registry/cache/
            ~/.cargo/git/db/
            target/
          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
      - run: make loadable
      - name: Upload artifacts
        uses: actions/upload-artifact@v3
        with:
          name: sqlite-regex-macos
          path: dist/debug/regex0.dylib
  build-macos-python:
    runs-on: macos-latest
    needs: [build-macos-extension]
    steps:
      - uses: actions/checkout@v3
      - name: Download workflow artifacts
        uses: actions/download-artifact@v3
        with:
          name: sqlite-regex-macos
          path: dist/debug/
      - uses: actions/setup-python@v3
      - run: pip install wheel
      - run: make python
      - run: make datasette
      - uses: actions/upload-artifact@v3
        with:
          name: sqlite-regex-macos-wheels
          path: dist/debug/wheels/*.whl
  test-macos:
    runs-on: macos-latest
    needs: [build-macos-extension, build-macos-python]
    env:
      DENO_DIR: deno_cache
    steps:
      - uses: actions/checkout@v3
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-regex-macos
          path: dist/debug/
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-regex-macos
          path: npm/sqlite-regex-darwin-x64/lib
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-regex-macos-wheels
          path: dist/debug/
      - run: brew install python
      - run: /usr/local/opt/python@3/libexec/bin/pip install --find-links dist/debug/ sqlite_regex
      - run: make test-loadable python=/usr/local/opt/python@3/libexec/bin/python
      - run: make test-python python=/usr/local/opt/python@3/libexec/bin/python
      # for test-npm
      - uses: actions/setup-node@v3
        with:
          cache: "npm"
          cache-dependency-path: npm/sqlite-regex/package.json
      - run: npm install
        working-directory: npm/sqlite-regex
      - run: make test-npm
      # for test-deno
      - uses: denoland/setup-deno@v1
        with:
          deno-version: v1.30
      - name: Cache Deno dependencies
        uses: actions/cache@v3
        with:
          path: ${{ env.DENO_DIR }}
          key: ${{ runner.os }}-${{ hashFiles('deno/deno.lock') }}
      - run: make test-deno
        env:
          DENO_SQLITE_REGEX_PATH: ${{ github.workspace }}/dist/debug/regex0
  build-macos-arm-extension:
    name: Building macos arm extension
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/cache@v3
        with:
          path: |
            ~/.cargo/bin/
            ~/.cargo/registry/index/
            ~/.cargo/registry/cache/
            ~/.cargo/git/db/
            target/
          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
      - run: rustup target add aarch64-apple-darwin
      - run: make loadable target=aarch64-apple-darwin
      - name: Upload artifacts
        uses: actions/upload-artifact@v3
        with:
          name: sqlite-regex-macos-arm
          path: dist/debug/regex0.dylib
  build-macos-arm-python:
    runs-on: macos-latest
    needs: [build-macos-arm-extension]
    steps:
      - uses: actions/checkout@v3
      - name: Download workflow artifacts
        uses: actions/download-artifact@v3
        with:
          name: sqlite-regex-macos-arm
          path: dist/debug/
      - uses: actions/setup-python@v3
      - run: pip install wheel
      - run: make python IS_MACOS_ARM=1
      - run: make datasette
      - uses: actions/upload-artifact@v3
        with:
          name: sqlite-regex-macos-arm-wheels
          path: dist/debug/wheels/*.whl
  build-windows-extension:
    name: Building windows extension
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/cache@v3
        with:
          path: |
            ~/.cargo/bin/
            ~/.cargo/registry/index/
            ~/.cargo/registry/cache/
            ~/.cargo/git/db/
            target/
          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
      - run: make loadable
      - name: Upload artifacts
        uses: actions/upload-artifact@v3
        with:
          name: sqlite-regex-windows
          path: dist/debug/regex0.dll
  build-windows-python:
    runs-on: windows-latest
    needs: [build-windows-extension]
    steps:
      - uses: actions/checkout@v3
      - name: Download workflow artifacts
        uses: actions/download-artifact@v3
        with:
          name: sqlite-regex-windows
          path: dist/debug/
      - uses: actions/setup-python@v3
      - run: pip install wheel
      - run: make python
      - run: make datasette
      - uses: actions/upload-artifact@v3
        with:
          name: sqlite-regex-windows-wheels
          path: dist/debug/wheels/*.whl
  test-windows:
    runs-on: windows-latest
    needs: [build-windows-extension, build-windows-python]
    env:
      DENO_DIR: deno_cache
    steps:
      - uses: actions/checkout@v3
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-regex-windows
          path: dist/debug/
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-regex-windows
          path: npm/sqlite-regex-windows-x64/lib
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-regex-windows-wheels
          path: dist/debug/
      - run: pip install --find-links dist/debug/ sqlite_regex
      - run: make test-loadable
      - run: make test-python
      # for test-npm
      - uses: actions/setup-node@v3
        with:
          cache: "npm"
          cache-dependency-path: npm/sqlite-regex/package.json
      - run: npm install
        working-directory: npm/sqlite-regex
      - run: make test-npm
      # for test-deno
      - uses: denoland/setup-deno@v1
        with:
          deno-version: v1.30
      - name: Cache Deno dependencies
        uses: actions/cache@v3
        with:
          path: ${{ env.DENO_DIR }}
          key: ${{ runner.os }}-${{ hashFiles('deno/deno.lock') }}
      - run: make test-deno
        env:
          DENO_SQLITE_REGEX_PATH: ${{ github.workspace }}/dist/debug/regex0
  upload_test_pypi:
    if: ${{ contains(github.event.head_commit.message, '@test_pypi') }}
    needs: [test-ubuntu, test-macos, test-windows, build-macos-arm-python]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-regex-windows-wheels
          path: dist
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-regex-ubuntu-wheels
          path: dist
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-regex-macos-wheels
          path: dist
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-regex-macos-arm-wheels
          path: dist
      - uses: pypa/gh-action-pypi-publish@release/v1
        with:
          password: ${{ secrets.TEST_PYPI_API_TOKEN }}
          repository_url: https://test.pypi.org/legacy/
          skip_existing: true