@@ -4,9 +4,10 @@ set -euo pipefail
44# Development launcher for the GRS app.
55#
66# Usage:
7- # ./dev.sh Start Vite frontend + Julia backend (browser mode)
8- # ./dev.sh --tauri Start via Tauri (desktop window, Julia spawned by Rust)
9- # ./dev.sh --sync-version Update all package files from VERSION
7+ # ./dev.sh Start Vite frontend + Julia backend (browser mode)
8+ # ./dev.sh --tauri Start via Tauri (desktop window, Julia spawned by Rust)
9+ # ./dev.sh --sync-version Update all package files from VERSION
10+ # ./dev.sh --update-manifests Regenerate Manifest-v1.11.toml and Manifest-v1.12.toml
1011
1112SCRIPT_DIR=" $( cd " $( dirname " $0 " ) " && pwd) "
1213FRONTEND_DIR=" $SCRIPT_DIR /frontend"
@@ -61,6 +62,26 @@ if [ "${1:-}" = "--sync-version" ]; then
6162 exit 0
6263fi
6364
65+ if [ " ${1:- } " = " --update-manifests" ]; then
66+ CHANNELS=$( juliaup status 2> /dev/null | awk ' NR>2 && $0 !~ /^-/ { for(i=1;i<=NF;i++) if ($i ~ /^[0-9]+\.[0-9]+$/ || $i == "release" || $i == "lts") { print $i; break } }' )
67+ if [ -z " $CHANNELS " ]; then
68+ echo " [dev.sh] Could not detect juliaup channels. Is juliaup installed?"
69+ exit 1
70+ fi
71+ for CHANNEL in $CHANNELS ; do
72+ MINOR=$( julia +${CHANNEL} --version 2> /dev/null | sed ' s/julia version \([0-9]*\.[0-9]*\).*/\1/' )
73+ if [ -z " $MINOR " ]; then
74+ echo " [dev.sh] Could not determine version for channel ${CHANNEL} , skipping."
75+ continue
76+ fi
77+ echo " [dev.sh] Updating Manifest-v${MINOR} .toml (channel: ${CHANNEL} )..."
78+ rm -f " $BACKEND_DIR /Manifest-v${MINOR} .toml"
79+ touch " $BACKEND_DIR /Manifest-v${MINOR} .toml"
80+ (cd " $BACKEND_DIR " && julia +${CHANNEL} --project=. -e ' using Pkg; Pkg.resolve(); Pkg.instantiate()' )
81+ done
82+ exit 0
83+ fi
84+
6485# ============================================================================
6586# Prerequisite checks
6687# ============================================================================
@@ -102,11 +123,16 @@ if [ ! -d "$FRONTEND_DIR/node_modules" ]; then
102123 (cd " $FRONTEND_DIR " && npm install)
103124fi
104125
105- # --- Backend: Julia Pkg.instantiate ---
126+ # --- Backend: Julia Pkg setup ---
127+
128+ JULIA_MINOR=$( echo " $JULIA_VERSION " | sed ' s/\([0-9]*\.[0-9]*\).*/\1/' )
129+ VERSIONED_MANIFEST=" $BACKEND_DIR /Manifest-v${JULIA_MINOR} .toml"
106130
107- if [ ! -f " $BACKEND_DIR /Manifest.toml" ]; then
108- echo " [dev.sh] Instantiating Julia backend dependencies..."
109- (cd " $BACKEND_DIR " && julia --project=. -e ' using Pkg; Pkg.instantiate()' )
131+ if [ ! -f " $VERSIONED_MANIFEST " ] || [ " $BACKEND_DIR /Project.toml" -nt " $VERSIONED_MANIFEST " ]; then
132+ echo " [dev.sh] Resolving Julia backend dependencies for v${JULIA_MINOR} ..."
133+ rm -f " $VERSIONED_MANIFEST "
134+ touch " $VERSIONED_MANIFEST "
135+ (cd " $BACKEND_DIR " && julia --project=. -e ' using Pkg; Pkg.resolve(); Pkg.instantiate()' )
110136fi
111137
112138# ============================================================================
0 commit comments