220 lines
6.4 KiB
Bash
220 lines
6.4 KiB
Bash
# shellcheck shell=bash
|
|
about-plugin 'osx-specific functions'
|
|
|
|
if [[ "${OSTYPE}" != 'darwin'* ]]
|
|
then
|
|
_log_warning "This plugin only works with Mac OS X."
|
|
return 1
|
|
fi
|
|
|
|
# OS X: Open new tabs in same directory
|
|
if _is_function update_terminal_cwd
|
|
then
|
|
safe_append_prompt_command 'update_terminal_cwd'
|
|
fi
|
|
|
|
function tab()
|
|
{
|
|
############ STACK_TRACE_BUILDER #####################
|
|
Function_Name="${FUNCNAME[0]}"
|
|
Function_PATH="${Function_PATH}/${Function_Name}"
|
|
######################################################
|
|
about 'opens a new terminal tab'
|
|
group 'osx'
|
|
|
|
osascript 2> /dev/null << EOF
|
|
tell application "System Events"
|
|
tell process "Terminal" to keystroke "t" using command down
|
|
end
|
|
tell application "Terminal"
|
|
activate
|
|
do script with command " cd \"$PWD\"; $*" in window 0
|
|
end tell
|
|
EOF
|
|
############### Stack_TRACE_BUILDER ################
|
|
Function_PATH="$( dirname ${Function_PATH} )"
|
|
####################################################
|
|
}
|
|
|
|
|
|
# renames the current os x terminal tab title
|
|
function tabname()
|
|
{
|
|
############ STACK_TRACE_BUILDER #####################
|
|
Function_Name="${FUNCNAME[0]}"
|
|
Function_PATH="${Function_PATH}/${Function_Name}"
|
|
######################################################
|
|
printf '%b' "\e]1;$1\a"
|
|
############### Stack_TRACE_BUILDER ################
|
|
Function_PATH="$( dirname ${Function_PATH} )"
|
|
####################################################
|
|
}
|
|
|
|
|
|
# renames the current os x terminal window title
|
|
function winname()
|
|
{
|
|
############ STACK_TRACE_BUILDER #####################
|
|
Function_Name="${FUNCNAME[0]}"
|
|
Function_PATH="${Function_PATH}/${Function_Name}"
|
|
######################################################
|
|
printf '%b' "\e]2;$1\a"
|
|
############### Stack_TRACE_BUILDER ################
|
|
Function_PATH="$( dirname ${Function_PATH} )"
|
|
####################################################
|
|
}
|
|
|
|
|
|
function pman()
|
|
{
|
|
############ STACK_TRACE_BUILDER #####################
|
|
Function_Name="${FUNCNAME[0]}"
|
|
Function_PATH="${Function_PATH}/${Function_Name}"
|
|
######################################################
|
|
about 'view man documentation in Preview'
|
|
param '1: man page to view'
|
|
example '$ pman bash'
|
|
group 'osx'
|
|
man -t "${1}" | open -fa 'Preview'
|
|
############### Stack_TRACE_BUILDER ################
|
|
Function_PATH="$( dirname ${Function_PATH} )"
|
|
####################################################
|
|
}
|
|
|
|
function pri()
|
|
{
|
|
############ STACK_TRACE_BUILDER #####################
|
|
Function_Name="${FUNCNAME[0]}"
|
|
Function_PATH="${Function_PATH}/${Function_Name}"
|
|
######################################################
|
|
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'
|
|
############### Stack_TRACE_BUILDER ################
|
|
Function_PATH="$( dirname ${Function_PATH} )"
|
|
####################################################
|
|
}
|
|
|
|
|
|
# Download a file and open it in Preview
|
|
function prevcurl()
|
|
{
|
|
############ STACK_TRACE_BUILDER #####################
|
|
Function_Name="${FUNCNAME[0]}"
|
|
Function_PATH="${Function_PATH}/${Function_Name}"
|
|
######################################################
|
|
about 'download a file and open it in Preview'
|
|
param '1: url'
|
|
group 'osx'
|
|
|
|
curl "$*" | open -fa 'Preview'
|
|
############### Stack_TRACE_BUILDER ################
|
|
Function_PATH="$( dirname ${Function_PATH} )"
|
|
####################################################
|
|
}
|
|
|
|
|
|
function refresh-launchpad()
|
|
{
|
|
############ STACK_TRACE_BUILDER #####################
|
|
Function_Name="${FUNCNAME[0]}"
|
|
Function_PATH="${Function_PATH}/${Function_Name}"
|
|
######################################################
|
|
about 'Reset launchpad layout in macOS'
|
|
example '$ refresh-launchpad'
|
|
group 'osx'
|
|
|
|
defaults write com.apple.dock ResetLaunchPad -bool TRUE
|
|
killall Dock
|
|
############### Stack_TRACE_BUILDER ################
|
|
Function_PATH="$( dirname ${Function_PATH} )"
|
|
####################################################
|
|
}
|
|
|
|
|
|
function list-jvms()
|
|
{
|
|
############ STACK_TRACE_BUILDER #####################
|
|
Function_Name="${FUNCNAME[0]}"
|
|
Function_PATH="${Function_PATH}/${Function_Name}"
|
|
######################################################
|
|
about 'List java virtual machines and their states in macOS'
|
|
example 'list-jvms'
|
|
group 'osx'
|
|
|
|
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[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
|
|
############### Stack_TRACE_BUILDER ################
|
|
Function_PATH="$( dirname ${Function_PATH} )"
|
|
####################################################
|
|
}
|
|
|
|
|
|
function pick-default-jvm()
|
|
{
|
|
############ STACK_TRACE_BUILDER #####################
|
|
Function_Name="${FUNCNAME[0]}"
|
|
Function_PATH="${Function_PATH}/${Function_Name}"
|
|
######################################################
|
|
about 'Pick the default Java Virtual Machines in system-wide scope in macOS'
|
|
example 'pick-default-jvm'
|
|
|
|
# Declare variables
|
|
local JVMS JVMS_STATES
|
|
local DEFAULT_JVM_DIR DEFAULT_JVM OPTION
|
|
|
|
# Call function for listing
|
|
list-jvms
|
|
|
|
# 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
|
|
|
|
DEFAULT_JVM_DIR="${JVMS[OPTION]}"
|
|
DEFAULT_JVM="${JVMS[OPTION]##*/}"
|
|
|
|
# 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 -vn "${DEFAULT_JVM_DIR}/Contents/Info.plist.disable" "${DEFAULT_JVM_DIR}/Contents/Info.plist" \
|
|
&& echo "Enabled ${DEFAULT_JVM} as default JVM"
|
|
fi
|
|
############### Stack_TRACE_BUILDER ################
|
|
Function_PATH="$( dirname ${Function_PATH} )"
|
|
####################################################
|
|
}
|
|
|