#!/bin/sh set -eu usage() { cat <<-'EOF' Usage: dynmake.sh dynmake.sh -h EOF } help() { cat <<-'EOF' Options: -h, --help show this message EOF } for flag in "$@"; do case "$flag" in --) break ;; --help) usage help exit ;; *) ;; esac done while getopts 'h' flag; do case "$flag" in h) usage help exit ;; *) usage >&2 exit 2 ;; esac done shift $((OPTIND - 1)) assert_arg() { if [ -z "$1" ]; then printf 'Missing %s.\n' "$2" >&2 exit 2 fi } varlist() { sed -e 's/^/ /' \ -e 's/$/ \\/' } # # Pastebins # pastebins() { find src/content/pastebin/ -name '*.md' } printf 'pastebins.md = \\\n' pastebins | varlist printf '\n' pastebins | sed 's/^\(.*\)\.md$/\1.html: \1.env/' # # torrent files # torrents() { find resources/ \ -name '*.flac' -or \ -name '*.ogg' -or \ -name '*.webm' } printf 'torrent-files = \\\n' torrents | sed 's|$|.torrent|' | varlist printf '\n' torrents | awk '{ printf "%s.torrent: %s\n", $0, $0 }' # # Lilypond files # lilyponds() { find music/ -name '*.ly' } printf 'lilypond.ly = \\\n' lilyponds | varlist printf '\n' lilyponds | sed 's/^\(.*\)\.ly$/\1.pdf: \1.midi/'