added some stuff

This commit is contained in:
Nikolas Weger 2017-07-19 17:25:23 +02:00
parent 96146bd50f
commit b190db6546
8 changed files with 475 additions and 35 deletions

5
.gitignore vendored Normal file
View 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
View 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
View 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 "$@"

View file

@ -1,16 +1,24 @@
# Exports
export ZSH=${HOME}/dotfiles/lib/ohmyzsh
ZSH_THEME="mortalscumbag"
DISABLE_AUTO_UPDATE="true"
export GOPATH=${HOME}/go
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 DASHT_DOCSETS_DIR=$HOME/.local/share/Zeal/Zeal/docsets
# Exports & Completionpath
export DOT=${HOME}/dotfiles
export OWN=${DOT}/zsh
export LIB=${DOT}/lib
export OMZ=${LIB}/ohmyzsh
export ZSH=${OMZ}
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 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=(gem bundler git vagrant docker python ansible)
plugins+=(systemd systemadmin tmux command-not-found extract)
plugins=(git vagrant docker python ansible extract systemd systemadmin tmux command-not-found)
case $(uname -n) in
"megumi")
plugins+=(archlinux)
@ -21,32 +29,14 @@ case $(uname -n) in
"git")
plugins+=(debian)
;;
"test")
plugins+=(debian)
;;
esac
# OMZ
source ${ZSH}/oh-my-zsh.sh
# Source the needed Parts
#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
bindkey '^[[H' beginning-of-line
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)
# Init Zulu
#zulu init

0
zulu/bin/.gitkeep Normal file
View file

0
zulu/init/.gitkeep Normal file
View file

0
zulu/packages/.gitkeep Normal file
View file

0
zulu/share/.gitkeep Normal file
View file