#!/bin/sh
set -e
if [ "$1" = --remove ]; then
exec find . -name "*-NOTELESS.ipynb" -delete
fi
if ! command -v jq >/dev/null; then
exec guix shell jq -- "$0" "$@"
fi
if [ $# -lt 1 ]; then
exec find . -name "*.ipynb" -and \
'!' -wholename "*/.ipynb_checkpoints/*" -and \
'!' -name "*-NOTELESS.ipynb" \
-exec "$0" '{}' \;
fi
for FILE in "$@"; do
DST="$(printf %s "$FILE" |
sed 's/\(-NOTES[.]md\|\(-NOTELESS\)\?[.]ipynb\)$/-NOTELESS.ipynb/')"
NOTEBOOK="$(printf %s "$FILE" |
sed 's/\(-NOTES[.]md\|\(-NOTELESS\)\?[.]ipynb\)$/.ipynb/')"
jq --indent 1 --sort-keys '
. + {
cells: [
.cells[] | select(
.cell_type != "markdown" or
((.source[0]? + "") | test("^_notes_") | not)
)
]
}
' < "$NOTEBOOK" > "$DST"
done