81 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
. $HOME/.bin/_config
 | 
						|
 | 
						|
usage() {
 | 
						|
    printf 'Usage: %s <option> <file.ext>\n' "$TYPE";
 | 
						|
    printf 'Options:  new     - create new %s file\n' "$TYPE"
 | 
						|
    printf '          ls      - list %ss\n' "$TYPE"
 | 
						|
    printf '          edit    - edit %s file\n' "$TYPE"
 | 
						|
    printf '          rm      - delete %s file\n' "$TYPE"
 | 
						|
}
 | 
						|
 | 
						|
chkfile() {
 | 
						|
    [ ! -z "$2" ] \
 | 
						|
        && usage \
 | 
						|
        && exit 2
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
new() {
 | 
						|
    chkfile
 | 
						|
    printf "New Entry:\n"
 | 
						|
    printf "$1\n$dash\n\nChangelog:\n* $date: Created\n" > "/tmp/tmp-$date-$1" && \
 | 
						|
    vim "/tmp/tmp-$date-$1" \
 | 
						|
    && scp "/tmp/tmp-$date-$1" \
 | 
						|
        $USER@$DOMAIN:"$RPATH/posts/$date-$1"
 | 
						|
}
 | 
						|
 | 
						|
list() {
 | 
						|
    printf "Blog Index:\n"
 | 
						|
    ssh $USER@$DOMAIN "find $RPATH/posts -type f -maxdepth 1 \
 | 
						|
                    -exec printf '{}|' \; -exec head -1 '{}' \; \
 | 
						|
                    | sed 's,.*/,,'| sort | column -s'|' -t "
 | 
						|
}
 | 
						|
 | 
						|
edit() {
 | 
						|
    chkfile
 | 
						|
    printf "Edit Entry:\n"
 | 
						|
    [ -z $1 ] && printf "Usage: editblog <file.gph>\n" && return
 | 
						|
    printf "Opening $1\n"
 | 
						|
    local date=$(date +"%Y-%m-%d")
 | 
						|
    scp -q $USER@$DOMAIN:"$RPATH/posts/$1" "/tmp/tmp-$1" && \
 | 
						|
    printf "* $date: \n" >> "/tmp/tmp-$1" && \
 | 
						|
    vim "/tmp/tmp-$1" && \
 | 
						|
    scp -q "/tmp/tmp-$1" $USER@$DOMAIN:"$RPATH/posts/$1" && \
 | 
						|
    rm "/tmp/tmp-$1" && \
 | 
						|
    printf "Saved $1\n"
 | 
						|
}
 | 
						|
 | 
						|
date=$(date +"%Y-%m-%d")
 | 
						|
dash="------------------------------------------------------------------------"
 | 
						|
 | 
						|
### MAIN PROGRAM ###
 | 
						|
 | 
						|
# the filename is used as type
 | 
						|
case $0 in
 | 
						|
    *blog) TYPE=blog;
 | 
						|
        ;;
 | 
						|
    *journal) TYPE=journal;
 | 
						|
        ;;
 | 
						|
    *) printf 'Filename must be "blog" or "journal"\n'; exit 1;
 | 
						|
        ;;
 | 
						|
esac
 | 
						|
 | 
						|
# where should the files go?
 | 
						|
[ "$TYPE" == "blog" ] \
 | 
						|
    && DIR=posts
 | 
						|
[ "$TYPE" == "journal" ] \
 | 
						|
    && DIR=journal
 | 
						|
 | 
						|
case $1 in
 | 
						|
    new) new $2;
 | 
						|
        ;;
 | 
						|
    edit) edit $2;
 | 
						|
        ;;
 | 
						|
    ls) list;
 | 
						|
        ;;
 | 
						|
    *)  usage;
 | 
						|
        exit 2;
 | 
						|
        ;;
 | 
						|
esac
 |