# Shebang
snippet #!
	#!/bin/sh

snippet s#!
	#!/bin/sh
	set -eu

snippet safe
	set -eu

snippet bash
	#!/usr/bin/env bash

snippet sbash
	#!/usr/bin/env bash
	set -euo pipefail
	IFS=$'\n\t'

snippet if
	if [ $1 ]; then
		${0:${VISUAL}}
	fi
snippet elif
	elif [ $1 ]; then
		${0:${VISUAL}}
snippet for
	for (( ${2:i} = 0; $2 < ${1:count}; $2++ )); do
		${0:${VISUAL}}
	done
snippet fori
	for ${1:needle} in ${2:haystack} ; do
		${0:${VISUAL}}
	done
snippet wh
	while [ $1 ]; do
		${0:${VISUAL}}
	done
snippet wht
	while true; do
		${0:${VISUAL}}
	done
snippet until
	until [ $1 ]; do
		${0:${VISUAL}}
	done
snippet case
	case ${1:word} in
		${2:pattern})
			${0};;
	esac
snippet go
	while getopts '${1:o}' ${2:opts}
	do
		case $$2 in
		${3:o0})
			${0:#staments};;
		esac
	done
# Set SCRIPT_DIR variable to directory script is located.
snippet sdir
	SCRIPT_DIR="\$( cd "\$( dirname "\${BASH_SOURCE[0]}" )" && pwd )"
# getopt
snippet getopt
	__ScriptVersion="${1:version}"

	#===  FUNCTION  ================================================================
	#         NAME:  usage
	#  DESCRIPTION:  Display usage information.
	#===============================================================================
	function usage ()
	{
		echo "Usage :  \$${0:0} [options] [--]

	    Options:
	    -h|help       Display this message
	    -v|version    Display script version"

	}    # ----------  end of function usage  ----------

	#-----------------------------------------------------------------------
	#  Handle command line arguments
	#-----------------------------------------------------------------------

	while getopts ":hv" opt
	do
	  case \$opt in

		h|help     )  usage; exit 0   ;;

		v|version  )  echo "\$${0:0} -- Version \$__ScriptVersion"; exit 0   ;;

		* )  echo -e "\\n  Option does not exist : \$OPTARG\\n"
			  usage; exit 1   ;;

	  esac    # --- end of case ---
	done
	shift \$(($OPTIND-1))
snippet root
	if [ \$(id -u) -ne 0 ]; then exec sudo \$0; fi

snippet fun-sh
	${1:function_name}() {
		$0
	}

snippet fun
	function ${1:function_name}() {
		$0
	}
