mirror of
https://github.com/dwinkler1/np.git
synced 2026-02-19 22:40:57 -05:00
Fix runtime errors and improve robustness in host configs and scripts
- Fix KeyError in julia.nix when Project.toml lacks deps table - Fix incorrect uv args in python.nix (remove --run + --add-flags combination) - Remove redundant 'uv add ipython' from sync branch in python.nix - Fix relative paths in project-scripts.nix (./scripts -> ../scripts) - Fix initProject.sh to check file existence before git add - Add RVER validation in updateDeps.sh with proper error handling - Add tool availability checks in updateDeps.sh (uv, julia, devenv) - Add flake.nix backup before modification in updateDeps.sh - Ensure updateDeps.sh runs from repository root Co-authored-by: dwinkler1 <22460147+dwinkler1@users.noreply.github.com>
This commit is contained in:
parent
40095ac868
commit
2a5a1acd62
5 changed files with 84 additions and 38 deletions
|
|
@ -44,15 +44,24 @@ fi
|
|||
# Initialize git
|
||||
if [[ ! -d ".git" ]]; then
|
||||
git init
|
||||
echo "✓ Initialized Git repository and added: flake.nix, flake.lock"
|
||||
echo "✓ Initialized Git repository"
|
||||
fi
|
||||
# Check if files are already staged/tracked before adding
|
||||
if ! git diff --cached --name-only | grep -q "flake.nix\|flake.lock" &&
|
||||
! git ls-files --error-unmatch flake.nix flake.lock >/dev/null 2>&1; then
|
||||
echo "✓ Adding flake.nix, flake.lock to Git repository"
|
||||
git add flake.nix flake.lock
|
||||
else
|
||||
echo "✓ flake.nix, flake.lock already tracked/staged in Git"
|
||||
|
||||
# Check if files exist and are not already staged/tracked before adding
|
||||
if [[ -f "flake.nix" ]] && ! git diff --cached --name-only 2>/dev/null | grep -q "flake.nix" &&
|
||||
! git ls-files --error-unmatch flake.nix >/dev/null 2>&1; then
|
||||
echo "✓ Adding flake.nix to Git repository"
|
||||
git add flake.nix
|
||||
elif [[ -f "flake.nix" ]]; then
|
||||
echo "✓ flake.nix already tracked/staged in Git"
|
||||
fi
|
||||
|
||||
if [[ -f "flake.lock" ]] && ! git diff --cached --name-only 2>/dev/null | grep -q "flake.lock" &&
|
||||
! git ls-files --error-unmatch flake.lock >/dev/null 2>&1; then
|
||||
echo "✓ Adding flake.lock to Git repository"
|
||||
git add flake.lock
|
||||
elif [[ -f "flake.lock" ]]; then
|
||||
echo "✓ flake.lock already tracked/staged in Git"
|
||||
fi
|
||||
# Create .gitignore
|
||||
if [[ ! -f ".gitignore" ]]; then
|
||||
|
|
|
|||
|
|
@ -3,30 +3,77 @@ set -euo pipefail
|
|||
|
||||
echo "🔄 Updating project dependencies..."
|
||||
|
||||
# Ensure we're in the repository root
|
||||
if [[ ! -f "flake.nix" ]]; then
|
||||
# Try to find git root
|
||||
if git rev-parse --show-toplevel >/dev/null 2>&1; then
|
||||
cd "$(git rev-parse --show-toplevel)"
|
||||
if [[ ! -f "flake.nix" ]]; then
|
||||
echo "❌ Error: flake.nix not found in repository root"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "❌ Error: Not in a git repository and flake.nix not found"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Fetch latest R version from rstats-on-nix
|
||||
# This command chain: downloads CSV, extracts last line, gets 4th field (date), removes quotes
|
||||
RVER=$( wget -qO- 'https://raw.githubusercontent.com/ropensci/rix/refs/heads/main/inst/extdata/available_df.csv' | tail -n 1 | head -n 1 | cut -d',' -f4 | tr -d '"' ) &&\
|
||||
echo "📡 Fetching latest R version from rstats-on-nix..."
|
||||
RVER=$( wget -qO- 'https://raw.githubusercontent.com/ropensci/rix/refs/heads/main/inst/extdata/available_df.csv' | tail -n 1 | head -n 1 | cut -d',' -f4 | tr -d '"' )
|
||||
|
||||
# Validate RVER matches YYYY-MM-DD format
|
||||
if [[ ! "$RVER" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
|
||||
echo "❌ Error: Failed to fetch valid R version date. Got: '$RVER'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ R date is $RVER"
|
||||
|
||||
# Create backup of flake.nix before modifying
|
||||
cp flake.nix flake.nix.backup
|
||||
|
||||
# Update rixpkgs date in flake.nix
|
||||
sed -i "s|rixpkgs.url = \"github:rstats-on-nix/nixpkgs/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\";|rixpkgs.url = \"github:rstats-on-nix/nixpkgs/$RVER\";|" flake.nix
|
||||
echo "✅ R date is $RVER"
|
||||
if sed -i "s|rixpkgs.url = \"github:rstats-on-nix/nixpkgs/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\";|rixpkgs.url = \"github:rstats-on-nix/nixpkgs/$RVER\";|" flake.nix; then
|
||||
echo "✅ Updated rixpkgs date in flake.nix"
|
||||
rm flake.nix.backup
|
||||
else
|
||||
echo "⚠️ Warning: Failed to update flake.nix, restoring backup"
|
||||
mv flake.nix.backup flake.nix
|
||||
fi
|
||||
|
||||
nix flake update
|
||||
echo "✅ Flake inputs updated"
|
||||
|
||||
# Update Python dependencies if pyproject.toml exists and uv is available
|
||||
if [[ -f "pyproject.toml" ]]; then
|
||||
uv sync --upgrade
|
||||
echo "✅ Python dependencies updated"
|
||||
if command -v uv >/dev/null 2>&1; then
|
||||
uv sync --upgrade
|
||||
echo "✅ Python dependencies updated"
|
||||
else
|
||||
echo "ℹ️ pyproject.toml found but uv command not available, skipping Python update"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Update Julia dependencies if Project.toml exists and julia is available
|
||||
if [[ -f "Project.toml" ]]; then
|
||||
@defaultPackageName@-jl -e "using Pkg; Pkg.update()"
|
||||
echo "✅ Julia dependencies updated"
|
||||
if command -v @defaultPackageName@-jl >/dev/null 2>&1; then
|
||||
@defaultPackageName@-jl -e "using Pkg; Pkg.update()"
|
||||
echo "✅ Julia dependencies updated"
|
||||
else
|
||||
echo "ℹ️ Project.toml found but @defaultPackageName@-jl command not available, skipping Julia update"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Update devenv dependencies if devenv.nix exists and devenv is available
|
||||
if [[ -f "devenv.nix" ]]; then
|
||||
devenv update
|
||||
echo "✅ Devenv dependencies updated"
|
||||
if command -v devenv >/dev/null 2>&1; then
|
||||
devenv update
|
||||
echo "✅ Devenv dependencies updated"
|
||||
else
|
||||
echo "ℹ️ devenv.nix found but devenv command not available, skipping devenv update"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "🎉 All dependencies updated!"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue