dprint-plugin-sql 0.2.0

SQL formatter for dprint via sqlformat-rs.
Documentation
name: CI

on: [push, pull_request]

jobs:
  build:
    name: ${{ matrix.config.kind }} ${{ matrix.config.os }}
    runs-on: ${{ matrix.config.os }}
    strategy:
      matrix:
        config:
          - os: ubuntu-latest
            kind: test_release
          - os: ubuntu-latest
            kind: test_debug

    env:
      CARGO_INCREMENTAL: 0
      RUST_BACKTRACE: full

    steps:
    - uses: actions/checkout@v3
    - uses: dsherret/rust-toolchain-file@v1
    - name: Install wasm32 target
      if: matrix.config.kind == 'test_release'
      run: rustup target add wasm32-unknown-unknown

    - uses: Swatinem/rust-cache@v2
      with:
        save-if: ${{ github.ref == 'refs/heads/main' }}

    - name: Build debug
      if: matrix.config.kind == 'test_debug'
      run: cargo build --verbose
    - name: Build release
      if: matrix.config.kind == 'test_release'
      run: cargo build --target wasm32-unknown-unknown --features wasm --release --verbose

    - name: Test debug
      if: matrix.config.kind == 'test_debug'
      run: cargo test --verbose
    - name: Test release
      if: matrix.config.kind == 'test_release'
      run: cargo test --release --verbose

    - name: Get tag version
      if: matrix.config.kind == 'test_release' && startsWith(github.ref, 'refs/tags/')
      id: get_tag_version
      run: echo ::set-output name=TAG_VERSION::${GITHUB_REF/refs\/tags\//}

    # NPM
    - uses: actions/setup-node@v2
      if: matrix.config.kind == 'test_release'
      with:
        node-version: '18.x'
        registry-url: 'https://registry.npmjs.org'

    - name: Setup and test npm deployment
      if: matrix.config.kind == 'test_release'
      run: |

        cd deployment/npm
        npm install
        node setup.js ${{ steps.get_tag_version.outputs.TAG_VERSION }}
        npm run test

    - name: npm publish
      if: matrix.config.kind == 'test_release' && startsWith(github.ref, 'refs/tags/')
      env:
        NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
      run: |

        cd deployment/npm
        npm publish --access public
        git reset --hard

      # CARGO PUBLISH
    - name: Cargo login
      if: matrix.config.kind == 'test_release' && startsWith(github.ref, 'refs/tags/')
      run: cargo login ${{ secrets.CRATES_TOKEN }}

    - name: Cargo publish
      if: matrix.config.kind == 'test_release' && startsWith(github.ref, 'refs/tags/')
      run: cargo publish

      # GITHUB RELEASE
    - name: Pre-release
      if: matrix.config.kind == 'test_release' && startsWith(github.ref, 'refs/tags/')
      run: |

        # update config schema to have version
        sed -i 's/sql\/0.0.0/sql\/${{ steps.get_tag_version.outputs.TAG_VERSION }}/' deployment/schema.json
        # rename the wasm file
        (cd target/wasm32-unknown-unknown/release/ && mv dprint_plugin_sql.wasm plugin.wasm)
    - name: Release
      uses: softprops/action-gh-release@v1
      if: matrix.config.kind == 'test_release' && startsWith(github.ref, 'refs/tags/')
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        files: |

          target/wasm32-unknown-unknown/release/plugin.wasm
          deployment/schema.json
        body: |

          ## Install

          [Install](https://dprint.dev/install/) and [setup](https://dprint.dev/setup/) dprint.

          Then in your project's dprint configuration file:

          1. Specify the plugin url in the `"plugins"` array.
          2. Add a `"sql"` configuration property if desired.
             ```jsonc
             {
               // ...etc...
               "sql": {
                 // sql config goes here
               },
               "plugins": [
                 "https://plugins.dprint.dev/sql-${{ steps.get_tag_version.outputs.TAG_VERSION }}.wasm"
               ]
             }
             ```

          ## JS Formatting API

            * [JS Formatter](https://github.com/dprint/js-formatter) - Browser/Deno and Node
            * [npm package](https://www.npmjs.com/package/@dprint/sql)
        draft: false