--- a +++ b/.run_notebooks.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +# Check if the base directory is provided as an argument +if [ "$#" -ne 1 ]; then + echo "Usage: $0 <base_notebook_directory>" + exit 1 +fi + +# Base directory for notebooks +base_dir=$1 + +# Define notebook directories or patterns +declare -a notebooks=( + "$base_dir/examples/plotting/*.ipynb" + "$base_dir/examples/problems/*.ipynb" + "$base_dir/examples/solvers/*.ipynb" +) + +# Initialize an array to hold valid notebook paths +declare -a valid_notebooks + +# Gather all valid notebook files from the patterns +echo "Gathering notebooks..." +for pattern in "${notebooks[@]}"; do + for nb in $pattern; do + if [[ -f "$nb" ]]; then # Check if the file exists + valid_notebooks+=("$nb") # Add to the list of valid notebooks + fi + done +done + +# Check if we have any notebooks to run +if [ ${#valid_notebooks[@]} -eq 0 ]; then + echo "No notebooks found to run." + exit 1 +fi + +# Echo the notebooks that will be run for clarity +echo "Preparing to run the following notebooks:" +for nb in "${valid_notebooks[@]}"; do + echo "$nb" +done + +# Initialize a flag to track the success of all commands +all_success=true + +# Execute all valid notebooks +for nb in "${valid_notebooks[@]}"; do + echo "Running $nb" + jupytext -k moscot --execute "$nb" || { + echo "Failed to run $nb" + all_success=false + } +done + +# Check if any executions failed +if [ "$all_success" = false ]; then + echo "One or more notebooks failed to execute." + exit 1 +fi + +echo "All notebooks executed successfully."