#!/usr/bin/env sh ###################################################################### # @author : garhve (dev@garhve.com) # @file : blog # @created : Friday Dec 09, 2022 16:09:42 CST # # @description : simplify blog publishing, it only can use in blog dir ###################################################################### # usage: prog funct push() { read -r -p "Do you want to push?[y/n] " ans if [ "$ans" == 'y' ]; then zola build git add . if [ ! -z "$(git status | grep 'Changes to be committed')" ]; then read -r -p "commit message: " msg git commit -m "$msg" git push origin main fi echo -e "push done" fi } edit() { path="content/post" # --- get editing file choice=1 declare -a arr for file in $path/*; do [[ "$file" == *"_index.md" ]] && continue echo -ne "($choice)\x1b[0;32m${file##*/}\x1b[0m " # n get rid of trailing new line, e strip backslash arr[$choice]="$file" choice=$((choice+1)) done echo "" read -r -p "please choose file by number you want to edit from above: " num [[ "$num" == "q" ]] && exit 0 vim "${arr[$num]}" # --- end echo -e "edit done\n" push echo -e "\nall done" } new() { read -r -p "blog name: " name path="content/post/$name" if [ ! -f "$path".md ]; then # get basic format d="$(date +%F)" read -r -p "category: " category read -r -p "tag: " tags read -r -p "math support [y/n]: " m if [ "${m,,}" == 'y' ]; then math_support="true" else math_support="false" fi cat << EOF > "$path".md +++ title = "$name" date = $d [taxonomies] categories = ["$category"] tags = ["$tags"] [extra] math = $math_support +++ EOF vim "$path".md [ "$?" -eq 0 ] && echo "creation done" [ "$?" -ne 0 ] && echo "creation fail, please check error" && exit 1 else echo "File exist" fi read -r -p "do you want to edit now?[y/n] " ans [ "${ans,,}" == 'y' ] && vim "$path/$name.md" && echo "edit done" push echo -e "\nall done" } list() { echo -e "\x1b[1;34mList content:\x1b[0m" tree ./content/post } funct="new/edit/push/ls" [ $# -lt 1 ] && echo "usage: $(basename $0) $funct" [ $1 == "new" ] && new [ $1 == "edit" ] && edit [ $1 == "push" ] && push [ $1 == "ls" ] && list