#!/usr/bin/env bash

set -e

for CRATE_PATH in crates/*; do
    CRATE_NAME=$(basename "${CRATE_PATH}")
    CARGO_TOML="${CRATE_PATH}/Cargo.toml"
    if [ ! -f "$CARGO_TOML" ]; then
        continue
    fi

    CI_CONFIG_YML="${CRATE_PATH}/ci.config.yml"
    WORKFLOW_YML=.github/workflows/${CRATE_NAME}.yml
    echo ${WORKFLOW_YML}

    CRATE=$(yq .package.name "$CARGO_TOML")
    RUST_VERSION=$(yq .package.rust-version "$CARGO_TOML")
    CONFIG=$( [ -f "$CI_CONFIG_YML" ] && yq -o=json "$CI_CONFIG_YML" || echo '{}' )
    jsonnet ci.jsonnet \
        -V crate="$CRATE" \
        -V rust_version="$RUST_VERSION" \
        -V config="$CONFIG" \
        | yq -P '
            (.. | select(tag == "!!map" and has("_version"))) |= (
              .uses line_comment = ._version | del(._version)
            )
          ' \
        > "${WORKFLOW_YML}"
done