sql-fun 0.1.0

SQL query/statement execution code generator
Documentation
#!/bin/bash

set -eux

MEMBER_PACKAGES=$(
  cargo metadata --format-version 1 \
  | jq -r '
      .packages[]
      | select(.source==null)
      | select(.publish !=[])
      | .name
    '
)

PUBLISH_EXCLUDE=$(
  cargo metadata --format-version 1 \
  | jq -r '
      .packages[]
      | select(.publish ==[])
      | "--exclude " + .name
    '
)

function crate-release-level {
  tomato get 'workspace.metadata.next-release' Cargo.toml \
  | jq --arg name ${1} -r '.[$name]'
}

BASELINE_REV=$(tomato get 'workspace.metadata.baseline' Cargo.toml)

function crate-kind {
  cargo metadata --format-version 1 \
  | jq \
    --arg name ${1} \
    -r '
      .packages[]
      | select(.name==$name)
      | .targets[].kind[] '
}

echo "${MEMBER_PACKAGES}" | while IFS= read -r crate_name; do
  echo "checking ${crate_name}"
  RELEASE_LEVEL=$(crate-release-level ${crate_name})
  if crate-kind ${crate_name} | grep -q "lib"; then
    cargo semver-checks --baseline-rev ${BASELINE_REV} --package ${crate_name} --release-type ${RELEASE_LEVEL}
  fi
done

CRATE_LIST=$(
  cargo metadata --format-version 1 \
  | jq -r '
      .packages[]
      | select(.source==null)
      | select(.publish !=[])
      | "--package " + .name
    '
)

cargo package --no-verify --allow-dirty ${CRATE_LIST}

cargo publish --dry-run --workspace ${PUBLISH_EXCLUDE} --locked --allow-dirty