From 436450a5ad640da127d5db59b411b9a09ba4e2f1 2021-03-02 18:36:35 From: Branko Majic <branko@majic.rs> Date: 2021-03-02 18:36:35 Subject: [PATCH] Noticket: [TEMPLATE.sh.tpl] Update snippet syntax for latest(ish) YASnippet: - Use correct syntax for dynamic values. - Perform the necessary escaping for the YASnippet syntax. - Introduces quiet and debug mode options. --- diff --git a/templates/TEMPLATE.sh.tpl b/templates/TEMPLATE.sh.tpl index e432d72f4efc417f8d89576e06aeccc1d9c1cdbb..c18fb86c02ac1a83c34232933730e1b61ea271b2 100644 --- a/templates/TEMPLATE.sh.tpl +++ b/templates/TEMPLATE.sh.tpl @@ -1,8 +1,14 @@ +# -*- mode: snippet -*- +# name: Bash script template with standard CLI processing and helper functions. +# key: bash-script +# contributor: Branko Majic <branko@majic.rs> +# type: snippet +# -- #!/bin/bash # -# (>>>FILE<<<) +# `(file-name-nondirectory (buffer-file-name))` # -# Copyright (C) (>>>YEAR<<<), Branko Majic <branko@majic.rs> +# Copyright (C) `(format-time-string "%Y")`, Branko Majic <branko@majic.rs> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -21,21 +27,27 @@ # Treat unset variables as errors. set -u -program="(>>>FILE<<<)" -version="(>>>VERSION<<<)" +program="`(file-name-nondirectory (buffer-file-name))`" +version="${1:version}" function usage() { cat <<EOF -$program $version, (>>>SHORT_DESC<<<) +\$program \$version, ${2:short description } -Usage: $program [OPTIONS] (>>>ARGUMENTS<<<) +Usage: \$program [OPTIONS] ${3:arguments} -$program (>>>LONG_DESC<<<) +\$program ${4:long description} -$program accepts the following options: +\$program accepts the following options: - -v show script version and licensing information - -h show usage help + -q + Quiet mode. + -d + Enable debug mode. + -v + Show script version and licensing information. + -h + Show usage help. Please report bugs and send feature requests to <branko@majic.rs>. @@ -44,10 +56,10 @@ EOF function version() { cat <<EOF -$program, version $version +\$program, version \$version +-----------------------------------------------------------------------+ -| Copyright (C) (>>>YEAR<<<), Branko Majic <branko@majic.rs> | +| Copyright (C) `(format-time-string "%Y")`, Branko Majic <branko@majic.rs> | | | | This program is free software: you can redistribute it and/or modify | | it under the terms of the GNU General Public License as published by | @@ -68,15 +80,15 @@ EOF # Set-up colours for message printing if we're not piping and terminal is # capable of outputting the colors. -_color_terminal=$(tput colors 2>&1) -if [[ -t 1 ]] && (( _color_terminal > 0 )); then - _text_bold=$(tput bold) - _text_white=$(tput setaf 7) - _text_blue=$(tput setaf 6) - _text_green=$(tput setaf 2) - _text_yellow=$(tput setaf 3) - _text_red=$(tput setaf 1) - _text_reset=$(tput sgr0) +_color_terminal=\$(tput colors 2>&1) +if [[ -t 1 ]] && (( \${_color_terminal} > 0 )); then + _text_bold=\$(tput bold) + _text_white=\$(tput setaf 7) + _text_blue=\$(tput setaf 6) + _text_green=\$(tput setaf 2) + _text_yellow=\$(tput setaf 3) + _text_red=\$(tput setaf 1) + _text_reset=\$(tput sgr0) else _text_bold="" _text_white="" @@ -89,42 +101,53 @@ fi # Set-up functions for printing coloured messages. function debug() { - echo "${_text_bold}${_text_blue}[DEBUG]${_text_reset}" "$@" + if [[ $debug != 0 ]]; then + echo "\${_text_bold}\${_text_blue}[DEBUG]\${_text_reset}" "\$@" + fi } function info() { - echo "${_text_bold}${_text_white}[INFO] ${_text_reset}" "$@" + echo "\${_text_bold}\${_text_white}[INFO] \${_text_reset}" "\$@" } function success() { - echo "${_text_bold}${_text_green}[OK] ${_text_reset}" "$@" + echo "\${_text_bold}\${_text_green}[OK] \${_text_reset}" "\$@" } function warning() { - echo "${_text_bold}${_text_yellow}[WARN] ${_text_reset}" "$@" + echo "\${_text_bold}\${_text_yellow}[WARN] \${_text_reset}" "\$@" } function error() { - echo "${_text_bold}${_text_red}[ERROR]${_text_reset}" "$@" >&2 + echo "\${_text_bold}\${_text_red}[ERROR]\${_text_reset}" "\$@" >&2 } +# Define error codes. +SUCCESS=0 +ERROR_ARGUMENTS=1 + +# Disable debug and quiet modes by default. +debug=0 +quiet=0 + # If no arguments were given, just show usage help. -if [[ -z $1 ]]; then +if [[ -z \$1 ]]; then usage - exit 0 + exit "$SUCCESS" fi # Parse the arguments -while getopts "vh" opt; do - case "$opt" in +while getopts "qdvh" opt; do + case "\$opt" in + q) quiet=1;; + d) debug=1;; v) version - exit 0;; + exit "$SUCCESS";; h) usage - exit 0;; + exit "$SUCCESS";; *) usage - exit 1;; + exit "$ERROR_ARGUMENTS";; esac done -i=$OPTIND -shift $((i-1)) - +i=\$OPTIND +shift \$((\$i-1))