77 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/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 "Category: " category
 | 
						|
 | 
						|
	mkdir -p "$SONGS_PATH/$name"
 | 
						|
	echo -e "{title: $title}\n{artist: $artist}" > "$SONGS_PATH/$name/$name.cho"
 | 
						|
	echo -e "+++\ntitle = \"$title\"\n[taxonomies]\ncategory = [\"$category\"]\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
 | 
						|
 |