sqlite-ulid 0.2.1

A SQLite extension for working with ULIDs
Documentation
name: "build"
on:
  push:
    branches:
      - main
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 static
      - name: Upload artifacts
        uses: actions/upload-artifact@v3
        with:
          name: sqlite-ulid-ubuntu
          path: dist/debug/*
  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-ulid-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-ulid-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-ulid-ubuntu
          path: dist/debug/
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-ulid-ubuntu
          path: npm/sqlite-ulid-linux-x64/lib
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-ulid-ubuntu-wheels
          path: dist/debug/
      - run: pip3 install --find-links dist/debug/ sqlite_ulid
      - run: make test-loadable
      - run: make test-python
      # for test-npm
      - uses: actions/setup-node@v3
        with:
          cache: "npm"
          cache-dependency-path: npm/sqlite-ulid/package.json
      - run: npm install
        working-directory: npm/sqlite-ulid
      - 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_ULID_PATH: ${{ github.workspace }}/dist/debug/ulid0
      - run: go run demo.go
        working-directory: examples/go
        env:
          CGO_LDFLAGS: -L${{ github.workspace }}/dist/debug
  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 static
      - name: Upload artifacts
        uses: actions/upload-artifact@v3
        with:
          name: sqlite-ulid-macos
          path: dist/debug/*
  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-ulid-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-ulid-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-ulid-macos
          path: dist/debug/
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-ulid-macos
          path: npm/sqlite-ulid-darwin-x64/lib
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-ulid-macos-wheels
          path: dist/debug/
      - run: brew install python
      - run: /usr/local/opt/python@3/libexec/bin/pip install --find-links dist/debug/ sqlite_ulid
      - 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-ulid/package.json
      - run: npm install
        working-directory: npm/sqlite-ulid
      - 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_ULID_PATH: ${{ github.workspace }}/dist/debug/ulid0
      - run: go run demo.go
        working-directory: examples/go
        env:
          CGO_LDFLAGS: -L${{ github.workspace }}/dist/debug
  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 static target=aarch64-apple-darwin
      - name: Upload artifacts
        uses: actions/upload-artifact@v3
        with:
          name: sqlite-ulid-macos-arm
          path: dist/debug/*
  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-ulid-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-ulid-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: 1.67.0
          override: true
          default: true
      - run: rustup target add x86_64-pc-windows-gnu
      - run: rustup set default-host x86_64-pc-windows-gnu
      - run: cargo --version
      - run: make loadable static target=x86_64-pc-windows-gnu
        env:
          RUSTFLAGS: "--print=native-static-libs --print=link-args"
      - run: ls dist/debug
      - run: ls target/debug
      - name: Upload artifacts
        uses: actions/upload-artifact@v3
        with:
          name: sqlite-ulid-windows
          path: dist/debug/*
  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-ulid-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-ulid-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-ulid-windows
          path: dist/debug/
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-ulid-windows
          path: npm/sqlite-ulid-windows-x64/lib
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-ulid-windows-wheels
          path: dist/debug/
      - run: pip install --find-links dist/debug/ sqlite_ulid
      - run: make test-loadable
      - run: make test-python
      # for test-npm
      - uses: actions/setup-node@v3
        with:
          cache: "npm"
          cache-dependency-path: npm/sqlite-ulid/package.json
      - run: npm install
        working-directory: npm/sqlite-ulid
      - 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_ULID_PATH: ${{ github.workspace }}/dist/debug/ulid0
  test-macos-c:
    runs-on: macos-latest
    needs: [build-macos-extension]
    steps:
      - uses: actions/checkout@v3
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-ulid-macos
          path: dist/debug/
      - run: brew install sqlite
      - run: make demo
        working-directory: examples/c
      - run: examples/c/demo
  test-ubuntu-c:
    runs-on: ubuntu-20.04
    needs: [build-ubuntu-extension]
    steps:
      - uses: actions/checkout@v3
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-ulid-ubuntu
          path: dist/debug/
      - run: make demo CFLAGS="-pthread -ldl"
        working-directory: examples/c
      - run: examples/c/demo
  test-windows-c:
    runs-on: windows-latest
    needs: [build-windows-extension]
    steps:
      - uses: actions/checkout@v3
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-ulid-windows
          path: dist/debug/
      - run: |
          mkdir -p ${{ github.workspace }}/sqlite
          cd ${{ github.workspace }}/sqlite
          curl -LO https://www.sqlite.org/2023/sqlite-amalgamation-3420000.zip
          unzip sqlite-amalgamation-3420000.zip
          mv sqlite-amalgamation-3420000/* .
          curl -LO https://www.sqlite.org/2023/sqlite-tools-linux-x86-3420000.zip
          unzip sqlite-tools-linux-x86-3420000.zip
      - run: make demo CFLAGS="-I${{ github.workspace }}\sqlite -L${{ github.workspace }}\sqlite"
        working-directory: examples/c
      - run: examples/c/demo
  test-windows-go:
    runs-on: windows-latest
    needs: [build-windows-extension]
    steps:
      - uses: actions/checkout@v3
      - uses: actions/download-artifact@v3
        with:
          name: sqlite-ulid-windows
          path: dist/debug/
      # sqlite3ext.h aint in windows github action runner, to download it ourself
      - run: |
          mkdir -p ${{ github.workspace }}/sqlite
          cd ${{ github.workspace }}/sqlite
          curl -LO https://www.sqlite.org/2023/sqlite-amalgamation-3420000.zip
          unzip sqlite-amalgamation-3420000.zip
          mv sqlite-amalgamation-3420000/* .
      - run: echo "${{ github.workspace }}\dist\debug" >> $GITHUB_PATH
      - run: ls ${{ github.workspace }}\dist\debug
      - run: ls ${{ github.workspace }}\sqlite
      - name: Setup tmate session
        uses: mxschmitt/action-tmate@v3
        with:
          limit-access-to-actor: true
      - run: go run demo.go
        working-directory: examples/go
        env:
          CGO_LDFLAGS: -L${{ github.workspace }}\dist\debug
          CGO_CFLAGS: -I${{ github.workspace }}\sqlite
          CGO_ENABLED: 1
          CC: x86_64-w64-mingw32-gcc