mirror of
https://github.com/marvinscham/masterthesis-playground.git
synced 2025-12-06 18:20:53 +01:00
Restructure
This commit is contained in:
64
convert_jupytext.sh
Normal file
64
convert_jupytext.sh
Normal file
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
Usage:
|
||||
jupytext_convert.sh to-py # Convert all *.ipynb -> nb_*.py (py:percent)
|
||||
jupytext_convert.sh to-ipynb # Convert all nb_*.py -> *.ipynb
|
||||
|
||||
Notes:
|
||||
- Skips .ipynb_checkpoints.
|
||||
- Output .py files are prefixed with "nb_" so you can filter with nb_*.py.
|
||||
- Requires 'jupytext' in PATH (pip install jupytext).
|
||||
EOF
|
||||
}
|
||||
|
||||
require_jupytext() {
|
||||
if ! command -v jupytext >/dev/null 2>&1; then
|
||||
echo "Error: jupytext not found in PATH. Install with 'pip install jupytext'." >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
to_py() {
|
||||
echo "Converting *.ipynb -> nb_*.py (py:percent)..."
|
||||
# Find notebooks, skip .ipynb_checkpoints
|
||||
find . -type f -name "*.ipynb" ! -path "*/.ipynb_checkpoints/*" -print0 |
|
||||
while IFS= read -r -d '' nb; do
|
||||
dir=$(dirname "$nb")
|
||||
base=$(basename "$nb" .ipynb)
|
||||
out="$dir/nb_${base}.py"
|
||||
echo " - $nb -> $out"
|
||||
jupytext --to py:percent -o "$out" "$nb"
|
||||
done
|
||||
echo "Done."
|
||||
}
|
||||
|
||||
to_ipynb() {
|
||||
echo "Converting nb_*.py -> *.ipynb..."
|
||||
find . -type f -name "nb_*.py" -print0 |
|
||||
while IFS= read -r -d '' py; do
|
||||
dir=$(dirname "$py")
|
||||
base=$(basename "$py" .py)
|
||||
# Strip the nb_ prefix when producing the .ipynb filename
|
||||
bare="${base#nb_}"
|
||||
out="$dir/${bare}.ipynb"
|
||||
echo " - $py -> $out"
|
||||
jupytext --to ipynb -o "$out" "$py"
|
||||
done
|
||||
echo "Done."
|
||||
}
|
||||
|
||||
main() {
|
||||
[[ $# -eq 1 ]] || { usage; exit 1; }
|
||||
require_jupytext
|
||||
case "$1" in
|
||||
py) to_py ;;
|
||||
nb) to_ipynb ;;
|
||||
-h|--help) usage ;;
|
||||
*) echo "Unknown command: $1"; usage; exit 1 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user