#!/bin/bash

set -euo pipefail

CUE_MODULES_DIR=$HOME/workspace/cue-workspace/publish

switch_to_pkg() {
    startdir=$PWD
    for dep in $(cue export -e deps cue.mod/module.cue | yq -o tsv '. | keys'); do
        name=$(echo "$dep" | cut -d@ -f1)
        dir=$(dirname "$name")
        mod=$(basename "$name")
        mkdir -vp "cue.mod/pkg/$dir"
        cd "cue.mod/pkg/$dir"
        ln -vs "$CUE_MODULES_DIR/$mod" .
        cd "$startdir"
        cue mod edit --drop-require "$dep"
    done
    echo "done"
}

switch_to_registry() {
    rm -rfv cue.mod/pkg
    echo "cue mod tidy"
    cue mod tidy
    echo "done"
}

main() {

    if [[ ! -d cue.mod ]]; then
        echo "cue.mod not found"
        exit
    fi

    if [[ ! -d "$CUE_MODULES_DIR/libmcs" ]]; then
        echo "CUE_MODULES_DIR/libmcs not found"
        exit
    fi

    if [[ -d cue.mod/pkg ]]; then
        echo "switch to registry"
        switch_to_registry
        exit
    else
        echo "switch to pkg directory"
        switch_to_pkg
        exit
    fi
}

main
