From 75aabd5d201864146499abaf4d3123e65d5f8fbd Mon Sep 17 00:00:00 2001 From: John D Pell Date: Thu, 12 Aug 2021 12:13:58 -0700 Subject: [PATCH] plugin/osx: `shellcheck` && `shfmt` plugins/osx: dead code removal No need for gymnastics to determine if variable had been exported priort to modification. If it was, then it still is. See man bash(1). --- clean_files.txt | 1 + plugins/available/osx.plugin.bash | 231 ++++++++++++++---------------- 2 files changed, 112 insertions(+), 120 deletions(-) diff --git a/clean_files.txt b/clean_files.txt index 8c8b3fed..a70a44c2 100644 --- a/clean_files.txt +++ b/clean_files.txt @@ -103,6 +103,7 @@ plugins/available/jump.plugin.bash plugins/available/less-pretty-cat.plugin.bash plugins/available/node.plugin.bash plugins/available/nodenv.plugin.bash +plugins/available/osx.plugin.bash plugins/available/percol.plugin.bash plugins/available/plenv.plugin.bash plugins/available/pyenv.plugin.bash diff --git a/plugins/available/osx.plugin.bash b/plugins/available/osx.plugin.bash index ca1f66b8..555de8a3 100644 --- a/plugins/available/osx.plugin.bash +++ b/plugins/available/osx.plugin.bash @@ -1,23 +1,16 @@ -cite about-plugin +# shellcheck shell=bash about-plugin 'osx-specific functions' # OS X: Open new tabs in same directory -if [[ $OSTYPE == 'darwin'* ]]; then - if type update_terminal_cwd > /dev/null 2>&1 ; then - if ! [[ $PROMPT_COMMAND =~ (^|;)update_terminal_cwd($|;) ]] ; then - PROMPT_COMMAND="${PROMPT_COMMAND%;};update_terminal_cwd" - declared="$(declare -p PROMPT_COMMAND)" - [[ "$declared" =~ \ -[aAilrtu]*x[aAilrtu]*\ ]] 2>/dev/null - [[ $? -eq 0 ]] && export PROMPT_COMMAND - fi - fi +if _is_function update_terminal_cwd; then + safe_append_prompt_command 'update_terminal_cwd' fi function tab() { - about 'opens a new terminal tab' - group 'osx' + about 'opens a new terminal tab' + group 'osx' - osascript 2>/dev/null < /dev/null << EOF tell application "System Events" tell process "Terminal" to keystroke "t" using command down end @@ -30,147 +23,145 @@ EOF # renames the current os x terminal tab title function tabname { - printf "\e]1;$1\a" + printf '%b' "\e]1;$1\a" } # renames the current os x terminal window title function winname { - printf "\e]2;$1\a" + printf '%b' "\e]2;$1\a" } # this one switches your os x dock between 2d and 3d # thanks to savier.zwetschge.org function dock-switch() { - about 'switch dock between 2d and 3d' - param '1: "2d" or "3d"' - example '$ dock-switch 2d' - group 'osx' + about 'switch dock between 2d and 3d' + param '1: "2d" or "3d"' + example '$ dock-switch 2d' + group 'osx' - if [[ "$OSTYPE" = 'darwin'* ]]; then - - if [[ $1 = 3d ]] ; then - defaults write com.apple.dock no-glass -boolean NO - killall Dock - - elif [[ $1 = 2d ]] ; then - defaults write com.apple.dock no-glass -boolean YES - killall Dock - - else - echo "usage:" - echo "dock-switch 2d" - echo "dock-switch 3d." - fi - else - echo "Sorry, this only works on Mac OS X" - fi + case $OSTYPE in + *'darwin'*) + case $1 in + 3d) + defaults write com.apple.dock no-glass -boolean NO + killall Dock + ;; + 2d) + defaults write com.apple.dock no-glass -boolean YES + killall Dock + ;; + *) + echo "usage:" + echo "dock-switch 2d" + echo "dock-switch 3d." + ;; + esac + ;; + *) + echo "Sorry, this only works on Mac OS X" + ;; + esac } -function pman () -{ - about 'view man documentation in Preview' - param '1: man page to view' - example '$ pman bash' - group 'osx' - man -t "${1}" | open -fa $PREVIEW +function pman() { + about 'view man documentation in Preview' + param '1: man page to view' + example '$ pman bash' + group 'osx' + man -t "${1}" | open -fa 'Preview' } -function pri () -{ - about 'display information about Ruby classes, modules, or methods, in Preview' - param '1: Ruby method, module, or class' - example '$ pri Array' - group 'osx' - ri -T "${1}" | open -fa $PREVIEW +function pri() { + about 'display information about Ruby classes, modules, or methods, in Preview' + param '1: Ruby method, module, or class' + example '$ pri Array' + group 'osx' + ri -T "${1}" | open -fa 'Preview' } # Download a file and open it in Preview function prevcurl() { - about 'download a file and open it in Preview' - param '1: url' - group 'osx' + about 'download a file and open it in Preview' + param '1: url' + group 'osx' - if [[ ! $OSTYPE = 'darwin'* ]] - then - echo "This function only works with Mac OS X" - return 1 - fi - curl "$*" | open -fa $PREVIEW + if [[ ! $OSTYPE = 'darwin'* ]]; then + echo "This function only works with Mac OS X" + return 1 + fi + curl "$*" | open -fa 'Preview' } function refresh-launchpad() { - about 'Reset launchpad layout in macOS' - example '$ refresh-launchpad' - group 'osx' + about 'Reset launchpad layout in macOS' + example '$ refresh-launchpad' + group 'osx' - if [[ "$OSTYPE" = 'darwin'* ]];then - defaults write com.apple.dock ResetLaunchPad -bool TRUE - killall Dock - else - echo "Sorry, this only works on Mac OS X" - fi + if [[ "$OSTYPE" = 'darwin'* ]]; then + defaults write com.apple.dock ResetLaunchPad -bool TRUE + killall Dock + else + echo "Sorry, this only works on Mac OS X" + fi } -function list-jvms(){ - about 'List java virtual machines and their states in macOS' - example 'list-jvms' - group 'osx' +function list-jvms() { + about 'List java virtual machines and their states in macOS' + example 'list-jvms' + group 'osx' - JVMS_DIR="/Library/Java/JavaVirtualMachines" - JVMS=( $(ls ${JVMS_DIR}) ) - JVMS_STATES=() + local JVMS_DIR="/Library/Java/JavaVirtualMachines" + # The following variables are intended to impact the enclosing scope, not local. + JVMS=("${JVMS_DIR}"/*) + JVMS_STATES=() - # Map state of JVM - for (( i = 0; i < ${#JVMS[@]}; i++ )); do - if [[ -f "${JVMS_DIR}/${JVMS[$i]}/Contents/Info.plist" ]]; then - JVMS_STATES[${i}]=enabled - else - JVMS_STATES[${i}]=disabled - fi - echo "${i} ${JVMS[$i]} ${JVMS_STATES[$i]}" - done + # Map state of JVM + for ((i = 0; i < ${#JVMS[@]}; i++)); do + if [[ -f "${JVMS[i]}/Contents/Info.plist" ]]; then + JVMS_STATES[i]=enabled + else + JVMS_STATES[i]=disabled + fi + printf '%s\t%s\t%s\n' "${i}" "${JVMS[i]##*/}" "${JVMS_STATES[i]}" + done } -function pick-default-jvm(){ - about 'Pick the default Java Virtual Machines in system-wide scope in macOS' - example 'pick-default-jvm' +function pick-default-jvm() { + about 'Pick the default Java Virtual Machines in system-wide scope in macOS' + example 'pick-default-jvm' - # Call function for listing - list-jvms + # Declare variables + local JVMS JVMS_STATES + local DEFAULT_JVM_DIR DEFAULT_JVM OPTION - # Declare variables - local DEFAULT_JVM_DIR="" - local DEFAULT_JVM="" - local OPTION="" + # Call function for listing + list-jvms - # OPTION for default jdk and set variables - while [[ ! "$OPTION" =~ ^[0-9]+$ || OPTION -ge "${#JVMS[@]}" ]]; do - read -p "Enter Default JVM: " OPTION - if [[ ! "$OPTION" =~ ^[0-9]+$ ]]; then - echo "Please enter a number" - fi + # OPTION for default jdk and set variables + while [[ ! "$OPTION" =~ ^[0-9]+$ || OPTION -ge "${#JVMS[@]}" ]]; do + read -rp "Enter Default JVM: " OPTION + if [[ ! "$OPTION" =~ ^[0-9]+$ ]]; then + echo "Please enter a number" + fi - if [[ OPTION -ge "${#JVMS[@]}" ]]; then - echo "Please select one of the displayed JVMs" - fi - done + if [[ OPTION -ge "${#JVMS[@]}" ]]; then + echo "Please select one of the displayed JVMs" + fi + done - DEFAULT_JVM_DIR="${JVMS_DIR}/${JVMS[$OPTION]}" - DEFAULT_JVM="${JVMS[$OPTION]}" + DEFAULT_JVM_DIR="${JVMS[OPTION]}" + DEFAULT_JVM="${JVMS[OPTION]##*/}" - # Disable all jdk - for (( i = 0; i < ${#JVMS[@]}; i++ )); do - if [[ -f "${JVMS_DIR}/${JVMS[$i]}/Contents/Info.plist" ]]; then - sudo mv "${JVMS_DIR}/${JVMS[$i]}/Contents/Info.plist" "${JVMS_DIR}/${JVMS[$i]}/Contents/Info.plist.disable" - fi - done + # Disable all jdk + for ((i = 0; i < ${#JVMS[@]}; i++)); do + if [[ "${JVMS[i]}" != "${DEFAULT_JVM_DIR}" && -f "${JVMS[i]}/Contents/Info.plist" ]]; then + sudo mv "${JVMS[i]}/Contents/Info.plist" "${JVMS[i]}/Contents/Info.plist.disable" + fi + done - # Enable default jdk - if [[ -f "${DEFAULT_JVM_DIR}/Contents/Info.plist.disable" ]]; then - sudo mv "${DEFAULT_JVM_DIR}/Contents/Info.plist.disable" "${DEFAULT_JVM_DIR}/Contents/Info.plist" - echo "Enabled ${DEFAULT_JVM} as default JVM" - fi + # Enable default jdk + if [[ -f "${DEFAULT_JVM_DIR}/Contents/Info.plist.disable" ]]; then + sudo mv -vn "${DEFAULT_JVM_DIR}/Contents/Info.plist.disable" "${DEFAULT_JVM_DIR}/Contents/Info.plist" \ + && echo "Enabled ${DEFAULT_JVM} as default JVM" + fi } - -# Make this backwards compatible -alias pcurl='prevcurl'