#!/usr/bin/env zsh
#
# Copyright (c) YEAR USER_NAME

# An example of type-agnostic script/function, i.e.: the file can be run as a +x
# script or as an autoload function.

# Set the base and typically useful options
emulate -LR zsh
setopt extendedglob warncreateglobal typesetsilent noshortloops rcquotes noautopushd

# Run as script? ZSH_SCRIPT is a Zsh 5.3 addition
if [[ $0 != template-script || -n $ZSH_SCRIPT ]]; then
    # Handle $0 according to the Zsh Plugin Standard:
    # https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
    0=${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}
    0=${${(M)0##/*}:-$PWD/$0}

    # Such global variable is expected to be typeset'd -g in the plugin.zsh
    # file. Here it's restored in case of the function being run as a script.
    typeset -gA Plugins
    Plugins[MY_PLUGIN_DIR]=${0:h}

    # In case of the script using other scripts from the plugin, either set up
    # $fpath and autoload, or add the directory to $PATH.
    fpath+=( $Plugins[MY_PLUGIN_DIR] )
    autoload …

    # OR
    path+=( $Plugins[MY_PLUGIN_DIR] )
fi

# The script/function contents possibly using $Plugins[MY_PLUGIN_DIR] …
# …

# Use alternate marks [[[ and ]]] as the original ones can confuse nested
# substitutions, e.g.: ${${${VAR}}}

# Local Variables:
# mode: Shell-Script
# sh-indentation: 2
# indent-tabs-mode: nil
# sh-basic-offset: 2
# End:
# vim: ft=zsh sw=2 ts=2 et foldmarker=[[[,]]] foldmethod=marker
