From 20d704e9f99b2c764238961cd658499f9d5967e7 Mon Sep 17 00:00:00 2001 From: Salt Date: Tue, 27 Nov 2018 23:32:44 -0600 Subject: [PATCH] .functions: Make more appealing to shellcheck Still doesn't load properly on sh, though --- .functions | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/.functions b/.functions index 9427f97b..13912b52 100644 --- a/.functions +++ b/.functions @@ -10,20 +10,21 @@ proj() { echo "proj: requires argument" return 1 fi - projname="${1//[^ a-zA-Z0-9.]/}" + # POSIX mandates this external call to sed + projname="echo \"$1\" | sed 's/[^ a-zA-Z0-9.]//g'" projdir="$HOME/Projects/$projname" # Ensure we have a ~/Projects directory mkdir -p "$HOME/Projects" > /dev/null 2>&1 # cd into the project or make it if necessary if [ -d "$projdir" ]; then # It exists - cd "$projdir" + cd "$projdir" || return 50 else # It does not exist echo "Creating new project \"$projname\"" mkdir -p "$projdir" - cd "$projdir" - if which git > /dev/null 2>&1; then + cd "$projdir" || return 51 + if command -v git > /dev/null 2>&1; then # Initialize git echo "Initializing git with .gitignore" git init > /dev/null 2>&1 @@ -35,22 +36,31 @@ proj() { fi } # Autocompletion for bash -complete -F _proj proj > /dev/null 2>&1 && +# A note on the shellcheck disable: that's fine, because this is also a test +# If it fails, we don't even define a completion function +# shellcheck disable=2039 +complete -F _proj proj > /dev/null 2>&1 && \ _proj() { [ "${#COMP_WORDS[@]}" != "2" ] && return 0 - for dir in $HOME/Projects/*; do + for dir in "$HOME"/Projects/*; do reply="$(basename "$dir")" reply="${reply//[^ a-zA-Z0-9.]/}" + # shellcheck disable=2179 COMPREPLY+=" $reply" done unset reply + # shellcheck disable=2178 COMPREPLY=($(compgen -W "$COMPREPLY" "${COMP_WORDS[COMP_CWORD]}")) return 0 } # Autocompletion for zsh -compdef _proj proj > /dev/null 2>&1 && +compdef _proj proj > /dev/null 2>&1 && \ _proj() { - for dir in $HOME/Projects/*; do + #! /usr/bin/env zsh + # It's okay, shellcheck + # We zsh now + # shellcheck disable=2039 + for dir in "$HOME"/Projects/*; do temp="$(basename "$dir")" temp="${reply//[^ a-zA-Z0-9.]/}" reply+=" $temp"