60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/zsh
 | |
| use office/latex
 | |
| #####################################################################
 | |
| 
 | |
| TEMPLATE_DIR="${0:a:h}/templates"
 | |
| 
 | |
| MAIN() {
 | |
| 	local DOCUMENT_DIR="$EXECUTION_DIR"
 | |
| 	local TEMPLATE=$(GET_TEMPLATES | FZF 'select a template')
 | |
| 	[ ! $TEMPLATE ] && ABORT
 | |
| 	SUCCESS "selected template '$TEMPLATE'"
 | |
| 
 | |
| 	INPUT DOC_TITLE 'document title' || ABORT
 | |
| 
 | |
| 	local DOCUMENT_FILE="$DOCUMENT_DIR/$(SLUGIFY_TITLE).tex"
 | |
| 	[ -f "$DOCUMENT_FILE" ] && FAIL 1 "'$(basename $DOCUMENT_FILE)' already exists"
 | |
| 
 | |
| 	INPUT DOC_ID    'document id/subtitle'
 | |
| 	INPUT AUTHOR    'author name'
 | |
| 	INPUT AUTHOR_ID 'author id/title'
 | |
| 
 | |
| 	{
 | |
| 		PRINT_TITLE_INFO 
 | |
| 		cat "$TEMPLATE_DIR/$TEMPLATE/template.tex"
 | |
| 	} > "$DOCUMENT_FILE"
 | |
| 	cp "$TEMPLATE_DIR/gitignore" "$DOCUMENT_DIR/.gitignore"
 | |
| 	for FILE in $(find "$TEMPLATE_DIR/$TEMPLATE" -type f | grep -v '/template.tex$')
 | |
| 	do
 | |
| 		cp "$FILE" "$DOCUMENT_DIR/" || return 2
 | |
| 	done
 | |
| 	[[ ! $TEMPLATE =~ ^basic$ ]] \
 | |
| 		&& mkdir "$DOCUMENT_DIR/sections" "$DOCUMENT_DIR/graphics"
 | |
| 
 | |
| 	SUCCESS "finished generating '$(basename $DOCUMENT_FILE)' from '$TEMPLATE'"
 | |
| }
 | |
| 
 | |
| #####################################################################
 | |
| 
 | |
| GET_TEMPLATES() {
 | |
| 	find "$TEMPLATE_DIR" -type d | sed "s^$TEMPLATE_DIR/*^^; /^$/d"
 | |
| }
 | |
| 
 | |
| PRINT_TITLE_INFO() {
 | |
| 	local DATESTRING=$(date '+%B %_d, %Y' | sed 's/ \{1,\}/ /g')
 | |
| 	sed "
 | |
| 		s^LATEX-DOC-TITLE^$DOC_TITLE^
 | |
| 		s^LATEX-DOC-DATE^$DATESTRING^
 | |
| 		s^LATEX-DOC-ID^$DOC_ID^
 | |
| 		s^LATEX-AUTHOR-NAME^$AUTHOR^
 | |
| 		s^LATEX-AUTHOR-ID^$AUTHOR_ID^
 | |
| 	" "$TEMPLATE_DIR/main.tex"
 | |
| }
 | |
| 
 | |
| SLUGIFY_TITLE() {
 | |
| 	echo $DOC_TITLE | sed "s^['\"\\/,\!@#\$%^&*()]*^^g; s^\s\+^-^g;"
 | |
| }
 | |
| 
 | |
| #####################################################################
 | |
| MAIN $@
 |