aboutsummaryrefslogtreecommitdiff
#!/bin/sh

set -e

command -v jq > /dev/null || exec guix shell jq -- "$0" "$@"

if [ $# -lt 1 ]; then
    exec find . -name "*.ipynb" -and '!' -wholename "*/.ipynb_checkpoints/*" \
         -exec "$0" '{}' \;
fi

for NOTEBOOK in "$@"; do
    TMP="$(printf %s "$NOTEBOOK" | sed 's/[.]ipynb$/-TMP.ipynb/')"

    jq --indent 1 --sort-keys '
        . + {
            cells: [
                .cells[] |
                (. +
                 if .cell_type == "code" then
                     {outputs: [], execution_count: null}
                 else
                     {}
                 end)
            ]
        }
    ' < "$NOTEBOOK" > "$TMP"

    mv "$TMP" "$NOTEBOOK"
done