commit
5d68fca7e5
|
|
@ -104,6 +104,8 @@ 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-timemachine.plugin.bash
|
||||
plugins/available/osx.plugin.bash
|
||||
plugins/available/percol.plugin.bash
|
||||
plugins/available/plenv.plugin.bash
|
||||
plugins/available/pyenv.plugin.bash
|
||||
|
|
|
|||
|
|
@ -1,20 +1,26 @@
|
|||
cite about-plugin
|
||||
# shellcheck shell=bash
|
||||
about-plugin 'OS X Time Machine functions'
|
||||
|
||||
if [[ "${OSTYPE}" != 'darwin'* ]]; then
|
||||
_log_warning "This plugin only works with Mac OS X"
|
||||
return 1
|
||||
fi
|
||||
|
||||
function time-machine-destination() {
|
||||
group "osx-timemachine"
|
||||
about "Shows the OS X Time Machine destination/mount point"
|
||||
|
||||
echo $(tmutil destinationinfo | grep "Mount Point" | sed -e 's/Mount Point : \(.*\)/\1/g')
|
||||
tmutil destinationinfo | grep "Mount Point" | sed -e 's/Mount Point : \(.*\)/\1/g'
|
||||
}
|
||||
|
||||
function time-machine-list-machines() {
|
||||
group "osx-timemachine"
|
||||
about "Lists the OS X Time Machine machines on the backup volume"
|
||||
|
||||
local tmdest="$(time-machine-destination)/Backups.backupdb"
|
||||
local tmdest
|
||||
tmdest="$(time-machine-destination)/Backups.backupdb"
|
||||
|
||||
find "$tmdest" -maxdepth 1 -mindepth 1 -type d | grep -v "/\." | while read line ; do
|
||||
find "$tmdest" -maxdepth 1 -mindepth 1 -type d | grep -v "/\." | while read -r line; do
|
||||
echo "${line##*/}"
|
||||
done
|
||||
}
|
||||
|
|
@ -26,10 +32,11 @@ function time-machine-list-all-backups() {
|
|||
example "time-machine-list-all-backups my-laptop"
|
||||
|
||||
# Use the local hostname if none provided
|
||||
local COMPUTERNAME=${1:-$(scutil --get ComputerName)}
|
||||
local BACKUP_LOCATION="$(time-machine-destination)/Backups.backupdb/$COMPUTERNAME"
|
||||
local COMPUTERNAME BACKUP_LOCATION
|
||||
COMPUTERNAME=${1:-$(scutil --get ComputerName)}
|
||||
BACKUP_LOCATION="$(time-machine-destination)/Backups.backupdb/$COMPUTERNAME"
|
||||
|
||||
find "$BACKUP_LOCATION" -maxdepth 1 -mindepth 1 -type d | while read line ; do
|
||||
find "$BACKUP_LOCATION" -maxdepth 1 -mindepth 1 -type d | while read -r line; do
|
||||
echo "$line"
|
||||
done
|
||||
}
|
||||
|
|
@ -41,19 +48,23 @@ function time-machine-list-old-backups() {
|
|||
example "time-machine-list-old-backups my-laptop"
|
||||
|
||||
# Use the local hostname if none provided
|
||||
local COMPUTERNAME=${1:-$(scutil --get ComputerName)}
|
||||
local BACKUP_LOCATION="$(time-machine-destination)/Backups.backupdb/$COMPUTERNAME"
|
||||
local COMPUTERNAME BACKUP_LOCATION
|
||||
COMPUTERNAME=${1:-$(scutil --get ComputerName)}
|
||||
BACKUP_LOCATION="$(time-machine-destination)/Backups.backupdb/$COMPUTERNAME"
|
||||
|
||||
# List all but the most recent one
|
||||
find "$BACKUP_LOCATION" -maxdepth 1 -mindepth 1 -type d -name 2\* | sed \$d | while read line ; do
|
||||
find "$BACKUP_LOCATION" -maxdepth 1 -mindepth 1 -type d -name 2\* | sed \$d | while read -r line; do
|
||||
echo "$line"
|
||||
done
|
||||
}
|
||||
|
||||
# Taken from here: http://stackoverflow.com/a/30547074/1228454
|
||||
function _tm_startsudo() {
|
||||
sudo -v
|
||||
( while true; do sudo -v; sleep 50; done; ) &
|
||||
local -x SUDO_COMMAND="plugin/osx-timemachine: keep 'sudo' token alive during long-run 'tmutil' commands"
|
||||
sudo "-${SUDO_ASKPASS:+A}v" # validate without running a command, using `ssh-askpass` if available.
|
||||
(while sudo "-${SUDO_ASKPASS:+A}v"; do
|
||||
sleep 50
|
||||
done) &
|
||||
SUDO_PID="$!"
|
||||
trap _tm_stopsudo SIGINT SIGTERM
|
||||
}
|
||||
|
|
@ -70,15 +81,15 @@ function time-machine-delete-old-backups() {
|
|||
example "time-machine-delete-old-backups my-laptop"
|
||||
|
||||
# Use the local hostname if none provided
|
||||
local COMPUTERNAME=${1:-$(scutil --get ComputerName)}
|
||||
local COMPUTERNAME=${1:-$(scutil --get ComputerName)} _old_backup
|
||||
|
||||
# Ask for sudo credentials only once
|
||||
_tm_startsudo
|
||||
|
||||
echo "$(time-machine-list-old-backups "$COMPUTERNAME")" | while read i ; do
|
||||
while read -r _old_backup; do
|
||||
# Delete the backup
|
||||
sudo tmutil delete "$i"
|
||||
done
|
||||
sudo tmutil delete "$_old_backup"
|
||||
done <<< "$(time-machine-list-old-backups "$COMPUTERNAME")"
|
||||
|
||||
_tm_stopsudo
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,23 +1,21 @@
|
|||
cite about-plugin
|
||||
# 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 [[ $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'
|
||||
|
||||
osascript 2>/dev/null <<EOF
|
||||
osascript 2> /dev/null << EOF
|
||||
tell application "System Events"
|
||||
tell process "Terminal" to keystroke "t" using command down
|
||||
end
|
||||
|
|
@ -30,58 +28,28 @@ 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'
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
function pman ()
|
||||
{
|
||||
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
|
||||
man -t "${1}" | open -fa 'Preview'
|
||||
}
|
||||
|
||||
function pri ()
|
||||
{
|
||||
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
|
||||
ri -T "${1}" | open -fa 'Preview'
|
||||
}
|
||||
|
||||
# Download a file and open it in Preview
|
||||
|
|
@ -90,12 +58,7 @@ function prevcurl() {
|
|||
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
|
||||
curl "$*" | open -fa 'Preview'
|
||||
}
|
||||
|
||||
function refresh-launchpad() {
|
||||
|
|
@ -103,49 +66,45 @@ function refresh-launchpad() {
|
|||
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
|
||||
}
|
||||
|
||||
function list-jvms(){
|
||||
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}) )
|
||||
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
|
||||
for ((i = 0; i < ${#JVMS[@]}; i++)); do
|
||||
if [[ -f "${JVMS[i]}/Contents/Info.plist" ]]; then
|
||||
JVMS_STATES[i]=enabled
|
||||
else
|
||||
JVMS_STATES[${i}]=disabled
|
||||
JVMS_STATES[i]=disabled
|
||||
fi
|
||||
echo "${i} ${JVMS[$i]} ${JVMS_STATES[$i]}"
|
||||
printf '%s\t%s\t%s\n' "${i}" "${JVMS[i]##*/}" "${JVMS_STATES[i]}"
|
||||
done
|
||||
}
|
||||
|
||||
function pick-default-jvm(){
|
||||
function pick-default-jvm() {
|
||||
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
|
||||
|
||||
# Declare variables
|
||||
local DEFAULT_JVM_DIR=""
|
||||
local DEFAULT_JVM=""
|
||||
local OPTION=""
|
||||
|
||||
# OPTION for default jdk and set variables
|
||||
while [[ ! "$OPTION" =~ ^[0-9]+$ || OPTION -ge "${#JVMS[@]}" ]]; do
|
||||
read -p "Enter Default JVM: " OPTION
|
||||
read -rp "Enter Default JVM: " OPTION
|
||||
if [[ ! "$OPTION" =~ ^[0-9]+$ ]]; then
|
||||
echo "Please enter a number"
|
||||
fi
|
||||
|
|
@ -155,22 +114,19 @@ function pick-default-jvm(){
|
|||
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"
|
||||
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"
|
||||
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'
|
||||
|
|
|
|||
Loading…
Reference in New Issue