---
name: CI

on:
  push:

jobs:
  bb-lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Setup Babashka
        uses: turtlequeue/setup-babashka@v1.3.0
        with:
          babashka-version: "0.8.1"

      - name: Datalog rules linter
        run: script/lint_rules.clj resources/rules.edn

      - name: Datalog queries linter
        run: script/lint_queries.clj resources/queries.edn
  clj-lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - uses: actions/setup-java@v2.4.0
        with:
          java-version: 17
          distribution: 'zulu'

      - name: Setup Clojure
        uses: DeLaGuardo/setup-clojure@3.6
        with:
          tools-deps: "1.10.3.1058"

      - name: Run style linter
        run: clojure -M:cljfmt check src

      - name: Run code linter
        run: clojure -M:clj-kondo
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - uses: actions/setup-node@v3
        with:
          node-version: '16'

      - run: npm install @logseq/nbb-logseq -g

      - name: Run tests
        run: nbb-logseq -cp src:test:resources test/test_runner.cljs
  publish:
    needs: [test, bb-lint, clj-lint]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0

      # Setup .npmrc file to publish to GitHub Packages
      - uses: actions/setup-node@v3
        with:
          node-version: '16'
          registry-url: 'https://registry.npmjs.org'

      - name: Setup Babashka
        uses: turtlequeue/setup-babashka@v1.3.0
        with:
          babashka-version: "0.8.1"

      - name: Publish package if a release tag
        run: bb ci:publish
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
