aboutsummaryrefslogtreecommitdiff
path: root/make-noteless.sh
blob: 6b0ef4e1e42b67f9e4250af28739ad7230372607 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/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