added some stuff
This commit is contained in:
parent
96146bd50f
commit
b190db6546
8 changed files with 475 additions and 35 deletions
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
/home/eeleater/dotfiles/zulu/path
|
||||||
|
/home/eeleater/dotfiles/zulu/fpath
|
||||||
|
/home/eeleater/dotfiles/zulu/cdpath
|
||||||
|
/home/eeleater/dotfiles/zulu/manpath
|
||||||
|
/home/eeleater/dotfiles/zulu/alias
|
127
lib/bin/is
Executable file
127
lib/bin/is
Executable file
|
@ -0,0 +1,127 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Copyright (c) 2016 Józef Sokołowski
|
||||||
|
# Distributed under the MIT License
|
||||||
|
#
|
||||||
|
# For most current version checkout repository:
|
||||||
|
# https://github.com/qzb/is.sh
|
||||||
|
#
|
||||||
|
|
||||||
|
is() {
|
||||||
|
if [ "$1" == "--help" ]; then
|
||||||
|
cat << EOF
|
||||||
|
Conditions:
|
||||||
|
is equal VALUE_A VALUE_B
|
||||||
|
is matching REGEXP VALUE
|
||||||
|
is substring VALUE_A VALUE_B
|
||||||
|
is empty VALUE
|
||||||
|
is number VALUE
|
||||||
|
is gt NUMBER_A NUMBER_B
|
||||||
|
is lt NUMBER_A NUMBER_B
|
||||||
|
is ge NUMBER_A NUMBER_B
|
||||||
|
is le NUMBER_A NUMBER_B
|
||||||
|
is file PATH
|
||||||
|
is dir PATH
|
||||||
|
is link PATH
|
||||||
|
is existing PATH
|
||||||
|
is readable PATH
|
||||||
|
is writeable PATH
|
||||||
|
is executable PATH
|
||||||
|
is available COMMAND
|
||||||
|
is older PATH_A PATH_B
|
||||||
|
is newer PATH_A PATH_B
|
||||||
|
is true VALUE
|
||||||
|
is false VALUE
|
||||||
|
|
||||||
|
Negation:
|
||||||
|
is not equal VALUE_A VALUE_B
|
||||||
|
EOF
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$1" == "--version" ]; then
|
||||||
|
echo "is.sh 1.1.0"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
local condition="$1"
|
||||||
|
local value_a="$2"
|
||||||
|
local value_b="$3"
|
||||||
|
|
||||||
|
if [ "$condition" == "not" ]; then
|
||||||
|
shift 1
|
||||||
|
! is "${@}"
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$condition" == "a" ] || [ "$condition" == "an" ] || [ "$condition" == "the" ]; then
|
||||||
|
shift 1
|
||||||
|
is "${@}"
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$condition" in
|
||||||
|
file)
|
||||||
|
[ -f "$value_a" ]; return $?;;
|
||||||
|
dir|directory)
|
||||||
|
[ -d "$value_a" ]; return $?;;
|
||||||
|
link|symlink)
|
||||||
|
[ -L "$value_a" ]; return $?;;
|
||||||
|
existent|existing|exist|exists)
|
||||||
|
[ -e "$value_a" ]; return $?;;
|
||||||
|
readable)
|
||||||
|
[ -r "$value_a" ]; return $?;;
|
||||||
|
writeable)
|
||||||
|
[ -w "$value_a" ]; return $?;;
|
||||||
|
executable)
|
||||||
|
[ -x "$value_a" ]; return $?;;
|
||||||
|
available|installed)
|
||||||
|
which "$value_a"; return $?;;
|
||||||
|
empty)
|
||||||
|
[ -z "$value_a" ]; return $?;;
|
||||||
|
number)
|
||||||
|
echo "$value_a" | grep -E '^[0-9]+(\.[0-9]+)?$'; return $?;;
|
||||||
|
older)
|
||||||
|
[ "$value_a" -ot "$value_b" ]; return $?;;
|
||||||
|
newer)
|
||||||
|
[ "$value_a" -nt "$value_b" ]; return $?;;
|
||||||
|
gt)
|
||||||
|
is not a number "$value_a" && return 1;
|
||||||
|
is not a number "$value_b" && return 1;
|
||||||
|
awk "BEGIN {exit $value_a > $value_b ? 0 : 1}"; return $?;;
|
||||||
|
lt)
|
||||||
|
is not a number "$value_a" && return 1;
|
||||||
|
is not a number "$value_b" && return 1;
|
||||||
|
awk "BEGIN {exit $value_a < $value_b ? 0 : 1}"; return $?;;
|
||||||
|
ge)
|
||||||
|
is not a number "$value_a" && return 1;
|
||||||
|
is not a number "$value_b" && return 1;
|
||||||
|
awk "BEGIN {exit $value_a >= $value_b ? 0 : 1}"; return $?;;
|
||||||
|
le)
|
||||||
|
is not a number "$value_a" && return 1;
|
||||||
|
is not a number "$value_b" && return 1;
|
||||||
|
awk "BEGIN {exit $value_a <= $value_b ? 0 : 1}"; return $?;;
|
||||||
|
eq|equal)
|
||||||
|
[ "$value_a" = "$value_b" ] && return 0;
|
||||||
|
is not a number "$value_a" && return 1;
|
||||||
|
is not a number "$value_b" && return 1;
|
||||||
|
awk "BEGIN {exit $value_a == $value_b ? 0 : 1}"; return $?;;
|
||||||
|
match|matching)
|
||||||
|
echo "$value_b" | grep -xE "$value_a"; return $?;;
|
||||||
|
substr|substring)
|
||||||
|
echo "$value_b" | grep -F "$value_a"; return $?;;
|
||||||
|
true)
|
||||||
|
[ "$value_a" == true ] || [ "$value_a" == 0 ]; return $?;;
|
||||||
|
false)
|
||||||
|
[ "$value_a" != true ] && [ "$value_a" != 0 ]; return $?;;
|
||||||
|
esac > /dev/null
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if is not equal "${BASH_SOURCE[0]}" "$0"; then
|
||||||
|
export -f is
|
||||||
|
else
|
||||||
|
is "${@}"
|
||||||
|
exit $?
|
||||||
|
fi
|
318
lib/bin/revolver
Executable file
318
lib/bin/revolver
Executable file
|
@ -0,0 +1,318 @@
|
||||||
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
|
local -A _revolver_spinners
|
||||||
|
_revolver_spinners=(
|
||||||
|
'dots' '0.08 ⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏'
|
||||||
|
'dots2' '0.08 ⣾ ⣽ ⣻ ⢿ ⡿ ⣟ ⣯ ⣷'
|
||||||
|
'dots3' '0.08 ⠋ ⠙ ⠚ ⠞ ⠖ ⠦ ⠴ ⠲ ⠳ ⠓'
|
||||||
|
'dots4' '0.08 ⠄ ⠆ ⠇ ⠋ ⠙ ⠸ ⠰ ⠠ ⠰ ⠸ ⠙ ⠋ ⠇ ⠆'
|
||||||
|
'dots5' '0.08 ⠋ ⠙ ⠚ ⠒ ⠂ ⠂ ⠒ ⠲ ⠴ ⠦ ⠖ ⠒ ⠐ ⠐ ⠒ ⠓ ⠋'
|
||||||
|
'dots6' '0.08 ⠁ ⠉ ⠙ ⠚ ⠒ ⠂ ⠂ ⠒ ⠲ ⠴ ⠤ ⠄ ⠄ ⠤ ⠴ ⠲ ⠒ ⠂ ⠂ ⠒ ⠚ ⠙ ⠉ ⠁'
|
||||||
|
'dots7' '0.08 ⠈ ⠉ ⠋ ⠓ ⠒ ⠐ ⠐ ⠒ ⠖ ⠦ ⠤ ⠠ ⠠ ⠤ ⠦ ⠖ ⠒ ⠐ ⠐ ⠒ ⠓ ⠋ ⠉ ⠈'
|
||||||
|
'dots8' '0.08 ⠁ ⠁ ⠉ ⠙ ⠚ ⠒ ⠂ ⠂ ⠒ ⠲ ⠴ ⠤ ⠄ ⠄ ⠤ ⠠ ⠠ ⠤ ⠦ ⠖ ⠒ ⠐ ⠐ ⠒ ⠓ ⠋ ⠉ ⠈ ⠈'
|
||||||
|
'dots9' '0.08 ⢹ ⢺ ⢼ ⣸ ⣇ ⡧ ⡗ ⡏'
|
||||||
|
'dots10' '0.08 ⢄ ⢂ ⢁ ⡁ ⡈ ⡐ ⡠'
|
||||||
|
'dots11' '0.1 ⠁ ⠂ ⠄ ⡀ ⢀ ⠠ ⠐ ⠈'
|
||||||
|
'dots12' '0.08 "⢀⠀" "⡀⠀" "⠄⠀" "⢂⠀" "⡂⠀" "⠅⠀" "⢃⠀" "⡃⠀" "⠍⠀" "⢋⠀" "⡋⠀" "⠍⠁" "⢋⠁" "⡋⠁" "⠍⠉" "⠋⠉" "⠋⠉" "⠉⠙" "⠉⠙" "⠉⠩" "⠈⢙" "⠈⡙" "⢈⠩" "⡀⢙" "⠄⡙" "⢂⠩" "⡂⢘" "⠅⡘" "⢃⠨" "⡃⢐" "⠍⡐" "⢋⠠" "⡋⢀" "⠍⡁" "⢋⠁" "⡋⠁" "⠍⠉" "⠋⠉" "⠋⠉" "⠉⠙" "⠉⠙" "⠉⠩" "⠈⢙" "⠈⡙" "⠈⠩" "⠀⢙" "⠀⡙" "⠀⠩" "⠀⢘" "⠀⡘" "⠀⠨" "⠀⢐" "⠀⡐" "⠀⠠" "⠀⢀" "⠀⡀"'
|
||||||
|
'line' '0.13 - \\ | /'
|
||||||
|
'line2' '0.1 ⠂ - – — – -'
|
||||||
|
'pipe' '0.1 ┤ ┘ ┴ └ ├ ┌ ┬ ┐'
|
||||||
|
'simpleDots' '0.4 ". " ".. " "..." " "'
|
||||||
|
'simpleDotsScrolling' '0.2 ". " ".. " "..." " .." " ." " "'
|
||||||
|
'star' '0.07 ✶ ✸ ✹ ✺ ✹ ✷'
|
||||||
|
'star2' '0.08 + x *'
|
||||||
|
'flip' "0.07 _ _ _ - \` \` ' ´ - _ _ _"
|
||||||
|
'hamburger' '0.1 ☱ ☲ ☴'
|
||||||
|
'growVertical' '0.12 ▁ ▃ ▄ ▅ ▆ ▇ ▆ ▅ ▄ ▃'
|
||||||
|
'growHorizontal' '0.12 ▏ ▎ ▍ ▌ ▋ ▊ ▉ ▊ ▋ ▌ ▍ ▎'
|
||||||
|
'balloon' '0.14 " " "." "o" "O" "@" "*" " "'
|
||||||
|
'balloon2' '0.12 . o O ° O o .'
|
||||||
|
'noise' '▓ ▒ ░'
|
||||||
|
'bounce' '0.1 ⠁ ⠂ ⠄ ⠂'
|
||||||
|
'boxBounce' '0.12 ▖ ▘ ▝ ▗'
|
||||||
|
'boxBounce2' '0.1 ▌ ▀ ▐ ▄'
|
||||||
|
'triangle' '0.05 ◢ ◣ ◤ ◥'
|
||||||
|
'arc' '0.1 ◜ ◠ ◝ ◞ ◡ ◟'
|
||||||
|
'circle' '0.12 ◡ ⊙ ◠'
|
||||||
|
'squareCorners' '0.18 ◰ ◳ ◲ ◱'
|
||||||
|
'circleQuarters' '0.12 ◴ ◷ ◶ ◵'
|
||||||
|
'circleHalves' '0.05 ◐ ◓ ◑ ◒'
|
||||||
|
'squish' '0.1 ╫ ╪'
|
||||||
|
'toggle' '0.25 ⊶ ⊷'
|
||||||
|
'toggle2' '0.08 ▫ ▪'
|
||||||
|
'toggle3' '0.12 □ ■'
|
||||||
|
'toggle4' '0.1 ■ □ ▪ ▫'
|
||||||
|
'toggle5' '0.1 ▮ ▯'
|
||||||
|
'toggle6' '0.3 ဝ ၀'
|
||||||
|
'toggle7' '0.08 ⦾ ⦿'
|
||||||
|
'toggle8' '0.1 ◍ ◌'
|
||||||
|
'toggle9' '0.1 ◉ ◎'
|
||||||
|
'toggle10' '0.1 ㊂ ㊀ ㊁'
|
||||||
|
'toggle11' '0.05 ⧇ ⧆'
|
||||||
|
'toggle12' '0.12 ☗ ☖'
|
||||||
|
'toggle13' '0.08 = * -'
|
||||||
|
'arrow' '0.1 ← ↖ ↑ ↗ → ↘ ↓ ↙'
|
||||||
|
'arrow2' '0.12 ▹▹▹▹▹ ▸▹▹▹▹ ▹▸▹▹▹ ▹▹▸▹▹ ▹▹▹▸▹ ▹▹▹▹▸'
|
||||||
|
'bouncingBar' '0.08 "[ ]" "[ =]" "[ ==]" "[ ===]" "[====]" "[=== ]" "[== ]" "[= ]"'
|
||||||
|
'bouncingBall' '0.08 "( ● )" "( ● )" "( ● )" "( ● )" "( ●)" "( ● )" "( ● )" "( ● )" "( ● )" "(● )"'
|
||||||
|
'pong' '0.08 "▐⠂ ▌" "▐⠈ ▌" "▐ ⠂ ▌" "▐ ⠠ ▌" "▐ ⡀ ▌" "▐ ⠠ ▌" "▐ ⠂ ▌" "▐ ⠈ ▌" "▐ ⠂ ▌" "▐ ⠠ ▌" "▐ ⡀ ▌" "▐ ⠠ ▌" "▐ ⠂ ▌" "▐ ⠈ ▌" "▐ ⠂▌" "▐ ⠠▌" "▐ ⡀▌" "▐ ⠠ ▌" "▐ ⠂ ▌" "▐ ⠈ ▌" "▐ ⠂ ▌" "▐ ⠠ ▌" "▐ ⡀ ▌" "▐ ⠠ ▌" "▐ ⠂ ▌" "▐ ⠈ ▌" "▐ ⠂ ▌" "▐ ⠠ ▌" "▐ ⡀ ▌" "▐⠠ ▌"'
|
||||||
|
'shark' '0.12 "▐|\\____________▌" "▐_|\\___________▌" "▐__|\\__________▌" "▐___|\\_________▌" "▐____|\\________▌" "▐_____|\\_______▌" "▐______|\\______▌" "▐_______|\\_____▌" "▐________|\\____▌" "▐_________|\\___▌" "▐__________|\\__▌" "▐___________|\\_▌" "▐____________|\\▌" "▐____________/|▌" "▐___________/|_▌" "▐__________/|__▌" "▐_________/|___▌" "▐________/|____▌" "▐_______/|_____▌" "▐______/|______▌" "▐_____/|_______▌" "▐____/|________▌" "▐___/|_________▌" "▐__/|__________▌" "▐_/|___________▌" "▐/|____________▌"'
|
||||||
|
)
|
||||||
|
|
||||||
|
###
|
||||||
|
# Output usage information and exit
|
||||||
|
###
|
||||||
|
function _revolver_usage() {
|
||||||
|
echo "\033[0;33mUsage:\033[0;m"
|
||||||
|
echo " revolver [options] <command> <message>"
|
||||||
|
echo
|
||||||
|
echo "\033[0;33mOptions:\033[0;m"
|
||||||
|
echo " -h, --help Output help text and exit"
|
||||||
|
echo " -v, --version Output version information and exit"
|
||||||
|
echo " -s, --style Set the spinner style"
|
||||||
|
echo
|
||||||
|
echo "\033[0;33mCommands:\033[0;m"
|
||||||
|
echo " start <message> Start the spinner"
|
||||||
|
echo " update <message> Update the message"
|
||||||
|
echo " stop Stop the spinner"
|
||||||
|
echo " demo Display an demo of each style"
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
# The main revolver process, which contains the loop
|
||||||
|
###
|
||||||
|
function _revolver_process() {
|
||||||
|
local dir statefile state msg pid="$1" spinner_index=0
|
||||||
|
|
||||||
|
# Find the directory and load the statefile
|
||||||
|
dir=${REVOLVER_DIR:-"${ZDOTDIR:-$HOME}/.revolver"}
|
||||||
|
statefile="$dir/$pid"
|
||||||
|
|
||||||
|
# The frames that, when animated, will make up
|
||||||
|
# our spinning indicator
|
||||||
|
frames=(${(@z)_revolver_spinners[$style]})
|
||||||
|
interval=${(@z)frames[1]}
|
||||||
|
shift frames
|
||||||
|
|
||||||
|
# Create a never-ending loop
|
||||||
|
while [[ 1 -eq 1 ]]; do
|
||||||
|
# If the statefile has been removed, exit the script
|
||||||
|
# to prevent it from being orphaned
|
||||||
|
if [[ ! -f $statefile ]]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for the existence of the parent process
|
||||||
|
$(kill -s 0 $pid 2&>/dev/null)
|
||||||
|
|
||||||
|
# If process doesn't exist, exit the script
|
||||||
|
# to prevent it from being orphaned
|
||||||
|
if [[ $? -ne 0 ]]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Load the current state, and parse it to get
|
||||||
|
# the message to be displayed
|
||||||
|
state=($(cat $statefile))
|
||||||
|
|
||||||
|
msg="${(@)state:1}"
|
||||||
|
|
||||||
|
# Output the current spinner frame, and add a
|
||||||
|
# slight delay before the next one
|
||||||
|
_revolver_spin
|
||||||
|
sleep ${interval:-"0.1"}
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
# Output the spinner itself, along with a message
|
||||||
|
###
|
||||||
|
function _revolver_spin() {
|
||||||
|
local dir statefile state pid frame
|
||||||
|
|
||||||
|
# ZSH arrays start at 1, so we need to bump the index if it's 0
|
||||||
|
if [[ $spinner_index -eq 0 ]]; then
|
||||||
|
spinner_index+=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Calculate the screen width
|
||||||
|
lim=$(tput cols)
|
||||||
|
|
||||||
|
# Clear the line and move the cursor to the start
|
||||||
|
printf ' %.0s' {1..$lim}
|
||||||
|
echo -n "\r"
|
||||||
|
|
||||||
|
# Echo the current frame and message, and overwrite
|
||||||
|
# the rest of the line with white space
|
||||||
|
msg="\033[0;38;5;242m${msg}\033[0;m"
|
||||||
|
frame="${${(@z)frames}[$spinner_index]//\"}"
|
||||||
|
printf '%*.*b' ${#msg} $lim "$frame $msg$(printf '%0.1s' " "{1..$lim})"
|
||||||
|
|
||||||
|
# Return to the beginning of the line
|
||||||
|
echo -n "\r"
|
||||||
|
|
||||||
|
# Set the spinner index to the next frame
|
||||||
|
spinner_index=$(( $(( $spinner_index + 1 )) % $(( ${#frames} + 1 )) ))
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
# Stop the current spinner process
|
||||||
|
###
|
||||||
|
function _revolver_stop() {
|
||||||
|
local dir statefile state pid
|
||||||
|
|
||||||
|
# Find the directory and load the statefile
|
||||||
|
dir=${REVOLVER_DIR:-"${ZDOTDIR:-$HOME}/.revolver"}
|
||||||
|
statefile="$dir/$PPID"
|
||||||
|
|
||||||
|
# If the statefile does not exist, raise an error.
|
||||||
|
# The spinner process itself performs the same check
|
||||||
|
# and kills itself, so it should never be orphaned
|
||||||
|
if [[ ! -f $statefile ]]; then
|
||||||
|
echo '\033[0;31mRevolver process could not be found\033[0;m'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get the current state, and parse it to find the PID
|
||||||
|
# of the spinner process
|
||||||
|
state=($(cat $statefile))
|
||||||
|
pid="$state[1]"
|
||||||
|
|
||||||
|
# Clear the line and move the cursor to the start
|
||||||
|
printf ' %.0s' {1..$(tput cols)}
|
||||||
|
echo -n "\r"
|
||||||
|
|
||||||
|
# If a PID has been found, kill the process
|
||||||
|
[[ ! -z $pid ]] && kill "$pid" > /dev/null
|
||||||
|
unset pid
|
||||||
|
|
||||||
|
# Remove the statefile
|
||||||
|
rm $statefile
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
# Update the message being displayed
|
||||||
|
function _revolver_update() {
|
||||||
|
local dir statefile state pid msg="$1"
|
||||||
|
|
||||||
|
# Find the directory and load the statefile
|
||||||
|
dir=${REVOLVER_DIR:-"${ZDOTDIR:-$HOME}/.revolver"}
|
||||||
|
statefile="$dir/$PPID"
|
||||||
|
|
||||||
|
# If the statefile does not exist, raise an error.
|
||||||
|
# The spinner process itself performs the same check
|
||||||
|
# and kills itself, so it should never be orphaned
|
||||||
|
if [[ ! -f $statefile ]]; then
|
||||||
|
echo '\033[0;31mRevolver process could not be found\033[0;m'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get the current state, and parse it to find the PID
|
||||||
|
# of the spinner process
|
||||||
|
state=($(cat $statefile))
|
||||||
|
pid="$state[1]"
|
||||||
|
|
||||||
|
# Clear the line and move the cursor to the start
|
||||||
|
printf ' %.0s' {1..$(tput cols)}
|
||||||
|
echo -n "\r"
|
||||||
|
|
||||||
|
# Echo the new message to the statefile, to be
|
||||||
|
# picked up by the spinner process
|
||||||
|
echo "$pid $msg" >! $statefile
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
# Create a new spinner with the specified message
|
||||||
|
###
|
||||||
|
function _revolver_start() {
|
||||||
|
local dir statefile msg="$1"
|
||||||
|
|
||||||
|
# Find the directory and create it if it doesn't exist
|
||||||
|
dir=${REVOLVER_DIR:-"${ZDOTDIR:-$HOME}/.revolver"}
|
||||||
|
if [[ ! -d $dir ]]; then
|
||||||
|
mkdir -p $dir
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create the filename for the statefile
|
||||||
|
statefile="$dir/$PPID"
|
||||||
|
|
||||||
|
touch $statefile
|
||||||
|
if [[ ! -f $statefile ]]; then
|
||||||
|
echo '\033[0;31mRevolver process could not create state file\033[0;m'
|
||||||
|
echo "Check that the directory $dir is writable"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Start the spinner process in the background
|
||||||
|
_revolver_process $PPID &!
|
||||||
|
|
||||||
|
# Save the current state to the statefile
|
||||||
|
echo "$! $msg" >! $statefile
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
# Demonstrate each of the included spinner styles
|
||||||
|
###
|
||||||
|
function _revolver_demo() {
|
||||||
|
for style in "${(@k)_revolver_spinners[@]}"; do
|
||||||
|
revolver --style $style start $style
|
||||||
|
sleep 2
|
||||||
|
revolver stop
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
###
|
||||||
|
# Handle command input
|
||||||
|
###
|
||||||
|
function _revolver() {
|
||||||
|
# Get the context from the first parameter
|
||||||
|
local help version style ctx="$1"
|
||||||
|
|
||||||
|
# Parse CLI options
|
||||||
|
zparseopts -D \
|
||||||
|
h=help -help=help \
|
||||||
|
v=version -version=version \
|
||||||
|
s:=style -style:=style
|
||||||
|
|
||||||
|
# Output usage information and exit
|
||||||
|
if [[ -n $help ]]; then
|
||||||
|
_revolver_usage
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Output version information and exit
|
||||||
|
if [[ -n $version ]]; then
|
||||||
|
echo '0.2.0'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z $style ]]; then
|
||||||
|
style='dots'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n $style ]]; then
|
||||||
|
shift style
|
||||||
|
ctx="$1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z $_revolver_spinners[$style] ]]; then
|
||||||
|
echo $(color red "Spinner '$style' is not recognised")
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $ctx in
|
||||||
|
start|update|stop|demo)
|
||||||
|
# Check if a valid command is passed,
|
||||||
|
# and if so, run it
|
||||||
|
_revolver_${ctx} "${(@)@:2}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# If the context is not recognised,
|
||||||
|
# throw an error and exit
|
||||||
|
echo "Command $ctx is not recognised"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
_revolver "$@"
|
60
zsh/zshrc
60
zsh/zshrc
|
@ -1,16 +1,24 @@
|
||||||
# Exports
|
# Exports & Completionpath
|
||||||
export ZSH=${HOME}/dotfiles/lib/ohmyzsh
|
export DOT=${HOME}/dotfiles
|
||||||
ZSH_THEME="mortalscumbag"
|
export OWN=${DOT}/zsh
|
||||||
DISABLE_AUTO_UPDATE="true"
|
export LIB=${DOT}/lib
|
||||||
export GOPATH=${HOME}/go
|
export OMZ=${LIB}/ohmyzsh
|
||||||
export PATH="${GOPATH}/bin:${HOME}/.gem/ruby/2.3.0/bin:${HOME}/dotfiles/lib/util:${HOME}/dotfiles/lib/bin:${HOME}/dotfiles/lib/dasht/bin:${PATH}:/opt/android-sdk/build-tools/26.0.0/"
|
export ZSH=${OMZ}
|
||||||
export DASHT_DOCSETS_DIR=$HOME/.local/share/Zeal/Zeal/docsets
|
export ZUL=${DOT}/zulu
|
||||||
|
export ZUC=${ZUL}/config/zulu
|
||||||
|
export PATH="${HOME}/dotfiles/lib/bin:/opt/android-sdk/build-tools/26.0.0/:${PATH}"
|
||||||
export EDITOR='nano'
|
export EDITOR='nano'
|
||||||
export TERM=linux
|
export TERM=linux
|
||||||
|
fpath=(${LIB}/completions/src $fpath)
|
||||||
|
|
||||||
|
# Settings & Dircolors
|
||||||
|
ZSH_THEME="mortalscumbag"
|
||||||
|
DISABLE_AUTO_UPDATE="true"
|
||||||
|
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets)
|
||||||
|
eval `dircolors ${OWN}/dircolors`
|
||||||
|
|
||||||
# Plugins
|
# Plugins
|
||||||
plugins=(gem bundler git vagrant docker python ansible)
|
plugins=(git vagrant docker python ansible extract systemd systemadmin tmux command-not-found)
|
||||||
plugins+=(systemd systemadmin tmux command-not-found extract)
|
|
||||||
case $(uname -n) in
|
case $(uname -n) in
|
||||||
"megumi")
|
"megumi")
|
||||||
plugins+=(archlinux)
|
plugins+=(archlinux)
|
||||||
|
@ -21,32 +29,14 @@ case $(uname -n) in
|
||||||
"git")
|
"git")
|
||||||
plugins+=(debian)
|
plugins+=(debian)
|
||||||
;;
|
;;
|
||||||
"test")
|
|
||||||
plugins+=(debian)
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# OMZ
|
# Source the needed Parts
|
||||||
source ${ZSH}/oh-my-zsh.sh
|
#source ${ZUL}/core/zulu # Zulu
|
||||||
|
source ${OMZ}/oh-my-zsh.sh # Oh My ZSH
|
||||||
|
source ${LIB}/highlighting/zsh-syntax-highlighting.zsh # Syntax Highlighting
|
||||||
|
source ${HOME}/.fzf.zsh # FZF
|
||||||
|
for file in ${OWN}/aliases.d/*.zsh; do source $file; done # Aliases
|
||||||
|
|
||||||
# Fix MobaXterm Home/End key with ZSH
|
# Init Zulu
|
||||||
bindkey '^[[H' beginning-of-line
|
#zulu init
|
||||||
bindkey '^[[F' end-of-line
|
|
||||||
|
|
||||||
# Syntax Highlighting
|
|
||||||
source ${HOME}/dotfiles/lib/highlighting/zsh-syntax-highlighting.zsh
|
|
||||||
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets)
|
|
||||||
|
|
||||||
# Aliases
|
|
||||||
for file in ${HOME}/dotfiles/zsh/aliases.d/*.zsh; do
|
|
||||||
source $file
|
|
||||||
done
|
|
||||||
|
|
||||||
# FZF
|
|
||||||
[ -f ${HOME}/.fzf.zsh ] && source ${HOME}/.fzf.zsh
|
|
||||||
|
|
||||||
# Dircolors
|
|
||||||
eval `dircolors ${HOME}/dotfiles/zsh/dircolors`
|
|
||||||
|
|
||||||
# Completions Path
|
|
||||||
fpath=(${HOME}/dotfiles/lib/completions/src $fpath)
|
|
||||||
|
|
0
zulu/bin/.gitkeep
Normal file
0
zulu/bin/.gitkeep
Normal file
0
zulu/init/.gitkeep
Normal file
0
zulu/init/.gitkeep
Normal file
0
zulu/packages/.gitkeep
Normal file
0
zulu/packages/.gitkeep
Normal file
0
zulu/share/.gitkeep
Normal file
0
zulu/share/.gitkeep
Normal file
Loading…
Add table
Reference in a new issue