#!/usr/bin/env bash # ------------------------------------------------------------------------------ # # Program: initpost.sh # Author: Vitor Britto # Description: script to create an initial structure for my posts. # # Usage: ./initpost.sh [options] # # Options: # -h, --help output instructions # -c, --create create post # # Alias: alias newpost="bash ~/path/to/script/initpost.sh" # # Example: # ./initpost.sh -c How to replace strings with sed # # Important Notes: # - This script was created to generate new markdown files for my blog. # # ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------ # | VARIABLES | # ------------------------------------------------------------------------------ # CORE: Do not change these lines # ---------------------------------------------------------------- POST_TITLE="${@:2:$(($#-1))}" POST_NAME="$(echo ${@:2:$(($#-1))} | sed -e 's/ /-/g' | sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/")" CURRENT_DATE="$(date -u +'%Y-%m-%d')" TIME=$(date -u +"%T") FILE_NAME="${CURRENT_DATE}-${POST_NAME}.md" # ---------------------------------------------------------------- # SETTINGS: your configuration goes here # ---------------------------------------------------------------- # Set your destination folder BINPATH=$(cd `dirname $0`; pwd) POSTPATH="${BINPATH}/_posts" DIST_FOLDER="$POSTPATH" # Set your blog URL BLOG_URL="https://jekflix.rossener.com/" # Set your assets URL ASSETS_URL="assets/img/" # ---------------------------------------------------------------- # ------------------------------------------------------------------------------ # | UTILS | # ------------------------------------------------------------------------------ # Header logging e_header() { printf "$(tput setaf 38)→ %s$(tput sgr0)\n" "$@" } # Success logging e_success() { printf "$(tput setaf 76)✔ %s$(tput sgr0)\n" "$@" } # Error logging e_error() { printf "$(tput setaf 1)✖ %s$(tput sgr0)\n" "$@" } # Warning logging e_warning() { printf "$(tput setaf 3)! %s$(tput sgr0)\n" "$@" } # ------------------------------------------------------------------------------ # | MAIN FUNCTIONS | # ------------------------------------------------------------------------------ # Everybody need some help initpost_help() { cat < Options: -h, --help output instructions -c, --create create post Example: ./initpost.sh -c How to replace strings with sed Important Notes: - This script was created to generate new text files to my blog. Copyright (c) Vitor Britto Licensed under the MIT license. ------------------------------------------------------------------------------ EOT } # Initial Content initpost_content() { echo "---" echo "date: ${CURRENT_DATE} ${TIME}" echo "layout: post" echo "title: \"${POST_TITLE}\"" echo "subtitle:" echo "description:" echo "image:" echo "optimized_image:" echo "category:" echo "tags:" echo "author:" echo "paginate: false" echo "---" } # Create file initpost_file() { if [ ! -f "$FILE_NAME" ]; then e_header "Creating template..." initpost_content > "${DIST_FOLDER}/${FILE_NAME}" e_success "Initial post successfully created!" else e_warning "File already exist." exit 1 fi } # ------------------------------------------------------------------------------ # | INITIALIZE PROGRAM | # ------------------------------------------------------------------------------ main() { # Show help if [[ "${1}" == "-h" || "${1}" == "--help" ]]; then initpost_help ${1} exit fi # Create if [[ "${1}" == "-c" || "${1}" == "--create" ]]; then initpost_file $* exit fi } # Initialize main $*