yoi/scripts/import-objectives-and-staging-to-sqlite-20260726.sh

67 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
usage() {
cat <<'EOF'
Usage: scripts/import-objectives-and-staging-to-sqlite-20260726.sh [--workspace PATH] [--database PATH] [--apply]
Imports legacy .yoi/objectives records and .yoi/memory/_staging JSON files into
Workspace SQLite authority by invoking yoi-workspace-server import-objectives.
By default this is a dry-run of the command line only. Pass --apply to execute.
EOF
}
workspace="$(pwd)"
database="${YOI_SERVER_DB:-$HOME/.local/share/yoi/server/server.db}"
apply=0
while [[ $# -gt 0 ]]; do
case "$1" in
--workspace)
workspace="$2"
shift 2
;;
--workspace=*)
workspace="${1#--workspace=}"
shift
;;
--database)
database="$2"
shift 2
;;
--database=*)
database="${1#--database=}"
shift
;;
--apply)
apply=1
shift
;;
-h|--help)
usage
exit 0
;;
*)
echo "unknown argument: $1" >&2
usage >&2
exit 2
;;
esac
done
cmd=(cargo run -q -p yoi-workspace-server -- import-objectives --workspace "$workspace" --database "$database")
printf 'Workspace: %s\n' "$workspace"
printf 'Database: %s\n' "$database"
printf 'Command: '
printf '%q ' "${cmd[@]}"
printf '\n'
if [[ "$apply" -ne 1 ]]; then
echo 'Dry run only. Re-run with --apply to import.'
exit 0
fi
"${cmd[@]}"