77 lines
1.3 KiB
Plaintext
77 lines
1.3 KiB
Plaintext
|
#!/bin/bash
|
||
|
|
||
|
SONGS_PATH="content/"
|
||
|
|
||
|
usage() {
|
||
|
cat <<EOF
|
||
|
Usage: $0 <command> [options]
|
||
|
|
||
|
Commands:
|
||
|
help Show this help message and exit
|
||
|
new [name] Create a new song [with the specified name]
|
||
|
edit <name> Edit song with a text editor
|
||
|
iedit <name> Interactive edit with PDF preview
|
||
|
|
||
|
Examples:
|
||
|
$0 help
|
||
|
$0 new [song-name]
|
||
|
$0 edit <song-name>
|
||
|
$0 iedit <song-name>
|
||
|
|
||
|
EOF
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
create_new_song() {
|
||
|
if [ -z "$name" ]; then
|
||
|
read -p "Song name (file-name-in-path): " name
|
||
|
fi
|
||
|
read -p "Song title: " title
|
||
|
read -p "Artist: " artist
|
||
|
read -p "Album: " album
|
||
|
|
||
|
mkdir -p "$SONGS_PATH/$name"
|
||
|
echo -e "{title: $title}\n{artist: $artist}" > "$SONGS_PATH/$name/$name.cho"
|
||
|
echo -e "+++\ntitle = \"$title\"\n[taxonomies]\nalbum = [\"$album\"]\nartist = [\"$artist\"]\n+++" > "$SONGS_PATH/$name/index.md"
|
||
|
echo "Song $name created."
|
||
|
}
|
||
|
|
||
|
if [ "$#" -lt 1 ]; then
|
||
|
usage
|
||
|
fi
|
||
|
|
||
|
case "$1" in
|
||
|
new)
|
||
|
if [ "$#" -eq 2 ]; then
|
||
|
name="$2"
|
||
|
fi
|
||
|
create_new_song
|
||
|
;;
|
||
|
edit)
|
||
|
if [ "$#" -eq 2 ]; then
|
||
|
xdg-open "content/$2/$2.cho"
|
||
|
else
|
||
|
echo -e "Missing song name\n"
|
||
|
usage
|
||
|
fi
|
||
|
;;
|
||
|
iedit)
|
||
|
if [ "$#" -eq 2 ]; then
|
||
|
touch "content/$2/$2.pdf"
|
||
|
xdg-open "content/$2/$2.pdf" &
|
||
|
xdg-open "content/$2/$2.cho"
|
||
|
else
|
||
|
echo -e "Missing song name\n"
|
||
|
usage
|
||
|
fi
|
||
|
;;
|
||
|
help)
|
||
|
usage
|
||
|
;;
|
||
|
*)
|
||
|
echo -e "Invalid argument: $1\n"
|
||
|
usage
|
||
|
;;
|
||
|
esac
|
||
|
|