Add zsh/oh my zsh/w10k
This commit is contained in:
62
zsh/.oh-my-zsh/tools/check_for_upgrade.sh
Normal file
62
zsh/.oh-my-zsh/tools/check_for_upgrade.sh
Normal file
@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env zsh
|
||||
|
||||
zmodload zsh/datetime
|
||||
|
||||
function _current_epoch() {
|
||||
echo $(( $EPOCHSECONDS / 60 / 60 / 24 ))
|
||||
}
|
||||
|
||||
function _update_zsh_update() {
|
||||
echo "LAST_EPOCH=$(_current_epoch)" >! ${ZSH_CACHE_DIR}/.zsh-update
|
||||
}
|
||||
|
||||
function _upgrade_zsh() {
|
||||
env ZSH=$ZSH sh $ZSH/tools/upgrade.sh
|
||||
# update the zsh file
|
||||
_update_zsh_update
|
||||
}
|
||||
|
||||
epoch_target=$UPDATE_ZSH_DAYS
|
||||
if [[ -z "$epoch_target" ]]; then
|
||||
# Default to old behavior
|
||||
epoch_target=13
|
||||
fi
|
||||
|
||||
# Cancel upgrade if the current user doesn't have write permissions for the
|
||||
# oh-my-zsh directory.
|
||||
[[ -w "$ZSH" ]] || return 0
|
||||
|
||||
# Cancel upgrade if git is unavailable on the system
|
||||
whence git >/dev/null || return 0
|
||||
|
||||
if mkdir "$ZSH/log/update.lock" 2>/dev/null; then
|
||||
if [ -f ${ZSH_CACHE_DIR}/.zsh-update ]; then
|
||||
. ${ZSH_CACHE_DIR}/.zsh-update
|
||||
|
||||
if [[ -z "$LAST_EPOCH" ]]; then
|
||||
_update_zsh_update
|
||||
rmdir $ZSH/log/update.lock # TODO: fix later
|
||||
return 0
|
||||
fi
|
||||
|
||||
epoch_diff=$(($(_current_epoch) - $LAST_EPOCH))
|
||||
if [ $epoch_diff -gt $epoch_target ]; then
|
||||
if [ "$DISABLE_UPDATE_PROMPT" = "true" ]; then
|
||||
_upgrade_zsh
|
||||
else
|
||||
echo "[Oh My Zsh] Would you like to update? [Y/n]: \c"
|
||||
read line
|
||||
if [[ "$line" == Y* ]] || [[ "$line" == y* ]] || [ -z "$line" ]; then
|
||||
_upgrade_zsh
|
||||
else
|
||||
_update_zsh_update
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# create the zsh file
|
||||
_update_zsh_update
|
||||
fi
|
||||
|
||||
rmdir $ZSH/log/update.lock
|
||||
fi
|
281
zsh/.oh-my-zsh/tools/install.sh
Executable file
281
zsh/.oh-my-zsh/tools/install.sh
Executable file
@ -0,0 +1,281 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# This script should be run via curl:
|
||||
# sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
|
||||
# or wget:
|
||||
# sh -c "$(wget -qO- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
|
||||
#
|
||||
# As an alternative, you can first download the install script and run it afterwards:
|
||||
# wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh
|
||||
# sh install.sh
|
||||
#
|
||||
# You can tweak the install behavior by setting variables when running the script. For
|
||||
# example, to change the path to the Oh My Zsh repository:
|
||||
# ZSH=~/.zsh sh install.sh
|
||||
#
|
||||
# Respects the following environment variables:
|
||||
# ZSH - path to the Oh My Zsh repository folder (default: $HOME/.oh-my-zsh)
|
||||
# REPO - name of the GitHub repo to install from (default: ohmyzsh/ohmyzsh)
|
||||
# REMOTE - full remote URL of the git repo to install (default: GitHub via HTTPS)
|
||||
# BRANCH - branch to check out immediately after install (default: master)
|
||||
#
|
||||
# Other options:
|
||||
# CHSH - 'no' means the installer will not change the default shell (default: yes)
|
||||
# RUNZSH - 'no' means the installer will not run zsh after the install (default: yes)
|
||||
#
|
||||
# You can also pass some arguments to the install script to set some these options:
|
||||
# --skip-chsh: has the same behavior as setting CHSH to 'no'
|
||||
# --unattended: sets both CHSH and RUNZSH to 'no'
|
||||
# For example:
|
||||
# sh install.sh --unattended
|
||||
#
|
||||
set -e
|
||||
|
||||
# Default settings
|
||||
ZSH=${ZSH:-~/.oh-my-zsh}
|
||||
REPO=${REPO:-ohmyzsh/ohmyzsh}
|
||||
REMOTE=${REMOTE:-https://github.com/${REPO}.git}
|
||||
BRANCH=${BRANCH:-master}
|
||||
|
||||
# Other options
|
||||
CHSH=${CHSH:-yes}
|
||||
RUNZSH=${RUNZSH:-yes}
|
||||
|
||||
|
||||
command_exists() {
|
||||
command -v "$@" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
error() {
|
||||
echo ${RED}"Error: $@"${RESET} >&2
|
||||
}
|
||||
|
||||
setup_color() {
|
||||
# Only use colors if connected to a terminal
|
||||
if [ -t 1 ]; then
|
||||
RED=$(printf '\033[31m')
|
||||
GREEN=$(printf '\033[32m')
|
||||
YELLOW=$(printf '\033[33m')
|
||||
BLUE=$(printf '\033[34m')
|
||||
BOLD=$(printf '\033[1m')
|
||||
RESET=$(printf '\033[m')
|
||||
else
|
||||
RED=""
|
||||
GREEN=""
|
||||
YELLOW=""
|
||||
BLUE=""
|
||||
BOLD=""
|
||||
RESET=""
|
||||
fi
|
||||
}
|
||||
|
||||
setup_ohmyzsh() {
|
||||
# Prevent the cloned repository from having insecure permissions. Failing to do
|
||||
# so causes compinit() calls to fail with "command not found: compdef" errors
|
||||
# for users with insecure umasks (e.g., "002", allowing group writability). Note
|
||||
# that this will be ignored under Cygwin by default, as Windows ACLs take
|
||||
# precedence over umasks except for filesystems mounted with option "noacl".
|
||||
umask g-w,o-w
|
||||
|
||||
echo "${BLUE}Cloning Oh My Zsh...${RESET}"
|
||||
|
||||
command_exists git || {
|
||||
error "git is not installed"
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ "$OSTYPE" = cygwin ] && git --version | grep -q msysgit; then
|
||||
error "Windows/MSYS Git is not supported on Cygwin"
|
||||
error "Make sure the Cygwin git package is installed and is first on the \$PATH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
git clone -c core.eol=lf -c core.autocrlf=false \
|
||||
-c fsck.zeroPaddedFilemode=ignore \
|
||||
-c fetch.fsck.zeroPaddedFilemode=ignore \
|
||||
-c receive.fsck.zeroPaddedFilemode=ignore \
|
||||
--depth=1 --branch "$BRANCH" "$REMOTE" "$ZSH" || {
|
||||
error "git clone of oh-my-zsh repo failed"
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo
|
||||
}
|
||||
|
||||
setup_zshrc() {
|
||||
# Keep most recent old .zshrc at .zshrc.pre-oh-my-zsh, and older ones
|
||||
# with datestamp of installation that moved them aside, so we never actually
|
||||
# destroy a user's original zshrc
|
||||
echo "${BLUE}Looking for an existing zsh config...${RESET}"
|
||||
|
||||
# Must use this exact name so uninstall.sh can find it
|
||||
OLD_ZSHRC=~/.zshrc.pre-oh-my-zsh
|
||||
if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]; then
|
||||
if [ -e "$OLD_ZSHRC" ]; then
|
||||
OLD_OLD_ZSHRC="${OLD_ZSHRC}-$(date +%Y-%m-%d_%H-%M-%S)"
|
||||
if [ -e "$OLD_OLD_ZSHRC" ]; then
|
||||
error "$OLD_OLD_ZSHRC exists. Can't back up ${OLD_ZSHRC}"
|
||||
error "re-run the installer again in a couple of seconds"
|
||||
exit 1
|
||||
fi
|
||||
mv "$OLD_ZSHRC" "${OLD_OLD_ZSHRC}"
|
||||
|
||||
echo "${YELLOW}Found old ~/.zshrc.pre-oh-my-zsh." \
|
||||
"${GREEN}Backing up to ${OLD_OLD_ZSHRC}${RESET}"
|
||||
fi
|
||||
echo "${YELLOW}Found ~/.zshrc.${RESET} ${GREEN}Backing up to ${OLD_ZSHRC}${RESET}"
|
||||
mv ~/.zshrc "$OLD_ZSHRC"
|
||||
fi
|
||||
|
||||
echo "${GREEN}Using the Oh My Zsh template file and adding it to ~/.zshrc.${RESET}"
|
||||
|
||||
cp "$ZSH/templates/zshrc.zsh-template" ~/.zshrc
|
||||
sed "/^export ZSH=/ c\\
|
||||
export ZSH=\"$ZSH\"
|
||||
" ~/.zshrc > ~/.zshrc-omztemp
|
||||
mv -f ~/.zshrc-omztemp ~/.zshrc
|
||||
|
||||
echo
|
||||
}
|
||||
|
||||
setup_shell() {
|
||||
# Skip setup if the user wants or stdin is closed (not running interactively).
|
||||
if [ $CHSH = no ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
# If this user's login shell is already "zsh", do not attempt to switch.
|
||||
if [ "$(basename "$SHELL")" = "zsh" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
# If this platform doesn't provide a "chsh" command, bail out.
|
||||
if ! command_exists chsh; then
|
||||
cat <<-EOF
|
||||
I can't change your shell automatically because this system does not have chsh.
|
||||
${BLUE}Please manually change your default shell to zsh${RESET}
|
||||
EOF
|
||||
return
|
||||
fi
|
||||
|
||||
echo "${BLUE}Time to change your default shell to zsh:${RESET}"
|
||||
|
||||
# Prompt for user choice on changing the default login shell
|
||||
printf "${YELLOW}Do you want to change your default shell to zsh? [Y/n]${RESET} "
|
||||
read opt
|
||||
case $opt in
|
||||
y*|Y*|"") echo "Changing the shell..." ;;
|
||||
n*|N*) echo "Shell change skipped."; return ;;
|
||||
*) echo "Invalid choice. Shell change skipped."; return ;;
|
||||
esac
|
||||
|
||||
# Check if we're running on Termux
|
||||
case "$PREFIX" in
|
||||
*com.termux*) termux=true; zsh=zsh ;;
|
||||
*) termux=false ;;
|
||||
esac
|
||||
|
||||
if [ "$termux" != true ]; then
|
||||
# Test for the right location of the "shells" file
|
||||
if [ -f /etc/shells ]; then
|
||||
shells_file=/etc/shells
|
||||
elif [ -f /usr/share/defaults/etc/shells ]; then # Solus OS
|
||||
shells_file=/usr/share/defaults/etc/shells
|
||||
else
|
||||
error "could not find /etc/shells file. Change your default shell manually."
|
||||
return
|
||||
fi
|
||||
|
||||
# Get the path to the right zsh binary
|
||||
# 1. Use the most preceding one based on $PATH, then check that it's in the shells file
|
||||
# 2. If that fails, get a zsh path from the shells file, then check it actually exists
|
||||
if ! zsh=$(which zsh) || ! grep -qx "$zsh" "$shells_file"; then
|
||||
if ! zsh=$(grep '^/.*/zsh$' "$shells_file" | tail -1) || [ ! -f "$zsh" ]; then
|
||||
error "no zsh binary found or not present in '$shells_file'"
|
||||
error "change your default shell manually."
|
||||
return
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# We're going to change the default shell, so back up the current one
|
||||
if [ -n "$SHELL" ]; then
|
||||
echo $SHELL > ~/.shell.pre-oh-my-zsh
|
||||
else
|
||||
grep "^$USER:" /etc/passwd | awk -F: '{print $7}' > ~/.shell.pre-oh-my-zsh
|
||||
fi
|
||||
|
||||
# Actually change the default shell to zsh
|
||||
if ! chsh -s "$zsh"; then
|
||||
error "chsh command unsuccessful. Change your default shell manually."
|
||||
else
|
||||
export SHELL="$zsh"
|
||||
echo "${GREEN}Shell successfully changed to '$zsh'.${RESET}"
|
||||
fi
|
||||
|
||||
echo
|
||||
}
|
||||
|
||||
main() {
|
||||
# Run as unattended if stdin is closed
|
||||
if [ ! -t 0 ]; then
|
||||
RUNZSH=no
|
||||
CHSH=no
|
||||
fi
|
||||
|
||||
# Parse arguments
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
--unattended) RUNZSH=no; CHSH=no ;;
|
||||
--skip-chsh) CHSH=no ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
setup_color
|
||||
|
||||
if ! command_exists zsh; then
|
||||
echo "${YELLOW}Zsh is not installed.${RESET} Please install zsh first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -d "$ZSH" ]; then
|
||||
cat <<-EOF
|
||||
${YELLOW}You already have Oh My Zsh installed.${RESET}
|
||||
You'll need to remove '$ZSH' if you want to reinstall.
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
||||
setup_ohmyzsh
|
||||
setup_zshrc
|
||||
setup_shell
|
||||
|
||||
printf "$GREEN"
|
||||
cat <<-'EOF'
|
||||
__ __
|
||||
____ / /_ ____ ___ __ __ ____ _____/ /_
|
||||
/ __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \
|
||||
/ /_/ / / / / / / / / / / /_/ / / /_(__ ) / / /
|
||||
\____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/
|
||||
/____/ ....is now installed!
|
||||
|
||||
|
||||
Please look over the ~/.zshrc file to select plugins, themes, and options.
|
||||
|
||||
p.s. Follow us on https://twitter.com/ohmyzsh
|
||||
|
||||
p.p.s. Get stickers, shirts, and coffee mugs at https://shop.planetargon.com/collections/oh-my-zsh
|
||||
|
||||
EOF
|
||||
printf "$RESET"
|
||||
|
||||
if [ $RUNZSH = no ]; then
|
||||
echo "${YELLOW}Run zsh to try it out.${RESET}"
|
||||
exit
|
||||
fi
|
||||
|
||||
exec zsh -l
|
||||
}
|
||||
|
||||
main "$@"
|
161
zsh/.oh-my-zsh/tools/require_tool.sh
Executable file
161
zsh/.oh-my-zsh/tools/require_tool.sh
Executable file
@ -0,0 +1,161 @@
|
||||
__require_tool_version_compare ()
|
||||
{
|
||||
(
|
||||
# Locally ignore failures, otherwise we'll exit whenever $1 and $2
|
||||
# are not equal!
|
||||
set +e
|
||||
|
||||
awk_strverscmp='
|
||||
# Use only awk features that work with 7th edition Unix awk (1978).
|
||||
# My, what an old awk you have, Mr. Solaris!
|
||||
END {
|
||||
while (length(v1) || length(v2)) {
|
||||
# Set d1 to be the next thing to compare from v1, and likewise for d2.
|
||||
# Normally this is a single character, but if v1 and v2 contain digits,
|
||||
# compare them as integers and fractions as strverscmp does.
|
||||
if (v1 ~ /^[0-9]/ && v2 ~ /^[0-9]/) {
|
||||
# Split v1 and v2 into their leading digit string components d1 and d2,
|
||||
# and advance v1 and v2 past the leading digit strings.
|
||||
for (len1 = 1; substr(v1, len1 + 1) ~ /^[0-9]/; len1++) continue
|
||||
for (len2 = 1; substr(v2, len2 + 1) ~ /^[0-9]/; len2++) continue
|
||||
d1 = substr(v1, 1, len1); v1 = substr(v1, len1 + 1)
|
||||
d2 = substr(v2, 1, len2); v2 = substr(v2, len2 + 1)
|
||||
if (d1 ~ /^0/) {
|
||||
if (d2 ~ /^0/) {
|
||||
# Compare two fractions.
|
||||
while (d1 ~ /^0/ && d2 ~ /^0/) {
|
||||
d1 = substr(d1, 2); len1--
|
||||
d2 = substr(d2, 2); len2--
|
||||
}
|
||||
if (len1 != len2 && ! (len1 && len2 && substr(d1, 1, 1) == substr(d2, 1, 1))) {
|
||||
# The two components differ in length, and the common prefix
|
||||
# contains only leading zeros. Consider the longer to be less.
|
||||
d1 = -len1
|
||||
d2 = -len2
|
||||
} else {
|
||||
# Otherwise, compare as strings.
|
||||
d1 = "x" d1
|
||||
d2 = "x" d2
|
||||
}
|
||||
} else {
|
||||
# A fraction is less than an integer.
|
||||
exit 1
|
||||
}
|
||||
} else {
|
||||
if (d2 ~ /^0/) {
|
||||
# An integer is greater than a fraction.
|
||||
exit 2
|
||||
} else {
|
||||
# Compare two integers.
|
||||
d1 += 0
|
||||
d2 += 0
|
||||
}
|
||||
}
|
||||
} else {
|
||||
# The normal case, without worrying about digits.
|
||||
if (v1 == "") d1 = v1; else { d1 = substr(v1, 1, 1); v1 = substr(v1,2) }
|
||||
if (v2 == "") d2 = v2; else { d2 = substr(v2, 1, 1); v2 = substr(v2,2) }
|
||||
}
|
||||
if (d1 < d2) exit 1
|
||||
if (d1 > d2) exit 2
|
||||
}
|
||||
}
|
||||
'
|
||||
awk "$awk_strverscmp" v1="$1" v2="$2" /dev/null
|
||||
case $? in
|
||||
1) echo '<';;
|
||||
0) echo '=';;
|
||||
2) echo '>';;
|
||||
esac
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
__require_tool_fatal ()
|
||||
{
|
||||
echo $@ >/dev/stderr
|
||||
return 1
|
||||
}
|
||||
|
||||
# Usage: require_tool program version
|
||||
# Returns: 0 if $1 version if greater equals than $2, 1 otherwise.
|
||||
# In case of error, message is written on error output.
|
||||
#
|
||||
# Example: require_tool gcc 4.6
|
||||
# Use GCC environment variable if defined instead of lookup for the tool
|
||||
# in the environment.
|
||||
require_tool ()
|
||||
{
|
||||
envvar_name=$(echo $1 | tr '[:lower:]' '[:upper:]')
|
||||
tool=$(printenv $envvar_name || echo $1)
|
||||
local version=$($tool --version 2>/dev/null| \
|
||||
sed -n 's/.*[^0-9.]\([0-9]*\.[0-9.]*\).*/\1/p;q')
|
||||
if test x"$version" = x ; then
|
||||
echo "$tool is required" >/dev/stderr
|
||||
return 1
|
||||
fi
|
||||
case $(__require_tool_version_compare "$2" "$version") in
|
||||
'>')
|
||||
echo "$1 $2 or better is required: this is $tool $version" >/dev/stderr
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
NAME
|
||||
require_tool.sh - Ensure version of a tool is greater than the one expected
|
||||
|
||||
SYNOPSYS
|
||||
require_tool.sh [ -h ]
|
||||
[ --help ]
|
||||
[ TOOL MIN_VERSION ]
|
||||
|
||||
DESCRIPTION
|
||||
TOOL is the name or path of the program to check. If the name is specified, its
|
||||
path is deduced from PATH environment variable. If environment variable TOOL
|
||||
(in upper-case characters) is defined, considers its value as path to the tool.
|
||||
|
||||
MIN_VERSION is a string representing the minimum required version.
|
||||
|
||||
BEHAVIOR
|
||||
* locate path to the program.
|
||||
* execute $ TOOL_PATH --version
|
||||
* extract version from standard output.
|
||||
* compare this version to the expected one.
|
||||
|
||||
OPTIONS
|
||||
-h --help
|
||||
Display this message and exit 0
|
||||
|
||||
ERRORS
|
||||
if program is not found or its version is prior to expected version,
|
||||
a message is written to error output.
|
||||
|
||||
EXIT VALUE
|
||||
returns 0 if program version if greater equals than expected version,
|
||||
returns 1 otherwise.
|
||||
|
||||
EXAMPLE
|
||||
$ require_tool.sh emacs 23
|
||||
$ CC=g++ require_tool.sh cc 4.6
|
||||
$ require_tool.sh zsh 4.5
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
for arg in $@; do
|
||||
case $arg in
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if [ $# -gt 2 ] ; then
|
||||
echo "ERROR: expecting 2 parameters. Please see option --help"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
require_tool $@
|
97
zsh/.oh-my-zsh/tools/theme_chooser.sh
Executable file
97
zsh/.oh-my-zsh/tools/theme_chooser.sh
Executable file
@ -0,0 +1,97 @@
|
||||
#!/bin/zsh
|
||||
|
||||
# Zsh Theme Chooser by fox (fox91 at anche dot no)
|
||||
# This program is free software. It comes without any warranty, to
|
||||
# the extent permitted by applicable law. You can redistribute it
|
||||
# and/or modify it under the terms of the Do What The Fuck You Want
|
||||
# To Public License, Version 2, as published by Sam Hocevar. See
|
||||
# http://www.wtfpl.net/txt/copying/ for more details.
|
||||
|
||||
THEMES_DIR="$ZSH/themes"
|
||||
FAVLIST="${HOME}/.zsh_favlist"
|
||||
source $ZSH/oh-my-zsh.sh
|
||||
|
||||
function noyes() {
|
||||
read "a?$1 [y/N] "
|
||||
if [[ $a == "N" || $a == "n" || $a = "" ]]; then
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
function theme_preview() {
|
||||
THEME=$1
|
||||
THEME_NAME=`echo $THEME | sed s/\.zsh-theme$//`
|
||||
print "$fg[blue]${(l.((${COLUMNS}-${#THEME_NAME}-5))..─.)}$reset_color $THEME_NAME $fg[blue]───$reset_color"
|
||||
source "$THEMES_DIR/$THEME"
|
||||
cols=$(tput cols)
|
||||
print -P "$PROMPT $RPROMPT"
|
||||
}
|
||||
|
||||
function banner() {
|
||||
echo
|
||||
echo "[0;1;35;95m╺━[0;1;31;91m┓┏[0;1;33;93m━┓[0;1;32;92m╻[0m [0;1;36;96m╻[0m [0;1;35;95m╺┳[0;1;31;91m╸╻[0m [0;1;33;93m╻[0;1;32;92m┏━[0;1;36;96m╸┏[0;1;34;94m┳┓[0;1;35;95m┏━[0;1;31;91m╸[0m [0;1;32;92m┏━[0;1;36;96m╸╻[0m [0;1;34;94m╻[0;1;35;95m┏━[0;1;31;91m┓┏[0;1;33;93m━┓[0;1;32;92m┏━[0;1;36;96m┓┏[0;1;34;94m━╸[0;1;35;95m┏━[0;1;31;91m┓[0m"
|
||||
echo "[0;1;31;91m┏━[0;1;33;93m┛┗[0;1;32;92m━┓[0;1;36;96m┣━[0;1;34;94m┫[0m [0;1;31;91m┃[0m [0;1;33;93m┣[0;1;32;92m━┫[0;1;36;96m┣╸[0m [0;1;34;94m┃[0;1;35;95m┃┃[0;1;31;91m┣╸[0m [0;1;36;96m┃[0m [0;1;34;94m┣[0;1;35;95m━┫[0;1;31;91m┃[0m [0;1;33;93m┃┃[0m [0;1;32;92m┃[0;1;36;96m┗━[0;1;34;94m┓┣[0;1;35;95m╸[0m [0;1;31;91m┣┳[0;1;33;93m┛[0m"
|
||||
echo "[0;1;33;93m┗━[0;1;32;92m╸┗[0;1;36;96m━┛[0;1;34;94m╹[0m [0;1;35;95m╹[0m [0;1;33;93m╹[0m [0;1;32;92m╹[0m [0;1;36;96m╹[0;1;34;94m┗━[0;1;35;95m╸╹[0m [0;1;31;91m╹[0;1;33;93m┗━[0;1;32;92m╸[0m [0;1;34;94m┗━[0;1;35;95m╸╹[0m [0;1;31;91m╹[0;1;33;93m┗━[0;1;32;92m┛┗[0;1;36;96m━┛[0;1;34;94m┗━[0;1;35;95m┛┗[0;1;31;91m━╸[0;1;33;93m╹┗[0;1;32;92m╸[0m"
|
||||
echo
|
||||
}
|
||||
|
||||
function usage() {
|
||||
echo "Usage: $0 [options] [theme]"
|
||||
echo
|
||||
echo "Options"
|
||||
echo " -l List available themes"
|
||||
echo " -s Show all themes"
|
||||
echo " -h Get this help message"
|
||||
exit 1
|
||||
}
|
||||
|
||||
function list_themes() {
|
||||
for THEME in $(ls $THEMES_DIR); do
|
||||
THEME_NAME=`echo $THEME | sed s/\.zsh-theme$//`
|
||||
echo $THEME_NAME
|
||||
done
|
||||
}
|
||||
|
||||
function insert_favlist() {
|
||||
if grep -q "$THEME_NAME" $FAVLIST 2> /dev/null ; then
|
||||
echo "Already in favlist"
|
||||
else
|
||||
echo $THEME_NAME >> $FAVLIST
|
||||
echo "Saved to favlist"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
function theme_chooser() {
|
||||
for THEME in $(ls $THEMES_DIR); do
|
||||
echo
|
||||
theme_preview $THEME
|
||||
echo
|
||||
if [[ -z $1 ]]; then
|
||||
noyes "Do you want to add it to your favourite list ($FAVLIST)?" || \
|
||||
insert_favlist $THEME_NAME
|
||||
echo
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
while getopts ":lhs" Option
|
||||
do
|
||||
case $Option in
|
||||
l ) list_themes ;;
|
||||
s ) theme_chooser 0 ;;
|
||||
h ) usage ;;
|
||||
* ) usage ;; # Default.
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ -z $Option ]]; then
|
||||
if [[ -z $1 ]]; then
|
||||
banner
|
||||
echo
|
||||
theme_chooser
|
||||
else
|
||||
theme_preview $1".zsh-theme"
|
||||
fi
|
||||
fi
|
40
zsh/.oh-my-zsh/tools/uninstall.sh
Normal file
40
zsh/.oh-my-zsh/tools/uninstall.sh
Normal file
@ -0,0 +1,40 @@
|
||||
read -r -p "Are you sure you want to remove Oh My Zsh? [y/N] " confirmation
|
||||
if [ "$confirmation" != y ] && [ "$confirmation" != Y ]; then
|
||||
echo "Uninstall cancelled"
|
||||
exit
|
||||
fi
|
||||
|
||||
echo "Removing ~/.oh-my-zsh"
|
||||
if [ -d ~/.oh-my-zsh ]; then
|
||||
rm -rf ~/.oh-my-zsh
|
||||
fi
|
||||
|
||||
echo "Looking for original zsh config..."
|
||||
ZSHRC_ORIG=~/.zshrc.pre-oh-my-zsh
|
||||
if [ -e "$ZSHRC_ORIG" ]; then
|
||||
echo "Found $ZSHRC_ORIG -- Restoring to ~/.zshrc"
|
||||
|
||||
if [ -e ~/.zshrc ]; then
|
||||
ZSHRC_SAVE=~/.zshrc.omz-uninstalled-$(date +%Y-%m-%d_%H-%M-%S)
|
||||
echo "Found ~/.zshrc -- Renaming to ${ZSHRC_SAVE}"
|
||||
mv ~/.zshrc "${ZSHRC_SAVE}"
|
||||
fi
|
||||
|
||||
mv "$ZSHRC_ORIG" ~/.zshrc
|
||||
|
||||
echo "Your original zsh config was restored."
|
||||
fi
|
||||
|
||||
if hash chsh >/dev/null 2>&1 && [ -f ~/.shell.pre-oh-my-zsh ]; then
|
||||
old_shell=$(cat ~/.shell.pre-oh-my-zsh)
|
||||
echo "Switching your shell back to '$old_shell':"
|
||||
if chsh -s "$old_shell"; then
|
||||
rm -f ~/.shell.pre-oh-my-zsh
|
||||
else
|
||||
echo "Could not change default shell. Change it manually by running chsh"
|
||||
echo "or editing the /etc/passwd file."
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Thanks for trying out Oh My Zsh. It's been uninstalled."
|
||||
echo "Don't forget to restart your terminal!"
|
55
zsh/.oh-my-zsh/tools/upgrade.sh
Normal file
55
zsh/.oh-my-zsh/tools/upgrade.sh
Normal file
@ -0,0 +1,55 @@
|
||||
|
||||
# Use colors, but only if connected to a terminal, and that terminal
|
||||
# supports them.
|
||||
if which tput >/dev/null 2>&1; then
|
||||
ncolors=$(tput colors)
|
||||
fi
|
||||
if [ -t 1 ] && [ -n "$ncolors" ] && [ "$ncolors" -ge 8 ]; then
|
||||
RED="$(tput setaf 1)"
|
||||
GREEN="$(tput setaf 2)"
|
||||
YELLOW="$(tput setaf 3)"
|
||||
BLUE="$(tput setaf 4)"
|
||||
BOLD="$(tput bold)"
|
||||
NORMAL="$(tput sgr0)"
|
||||
else
|
||||
RED=""
|
||||
GREEN=""
|
||||
YELLOW=""
|
||||
BLUE=""
|
||||
BOLD=""
|
||||
NORMAL=""
|
||||
fi
|
||||
|
||||
cd "$ZSH"
|
||||
|
||||
# Set git-config values known to fix git errors
|
||||
# Line endings (#4069)
|
||||
git config core.eol lf
|
||||
git config core.autocrlf false
|
||||
# zeroPaddedFilemode fsck errors (#4963)
|
||||
git config fsck.zeroPaddedFilemode ignore
|
||||
git config fetch.fsck.zeroPaddedFilemode ignore
|
||||
git config receive.fsck.zeroPaddedFilemode ignore
|
||||
|
||||
# Update upstream remote to ohmyzsh org
|
||||
remote=$(git remote -v | awk '/https:\/\/github\.com\/robbyrussell\/oh-my-zsh\.git/{ print $1; exit }')
|
||||
if [ -n "$remote" ]; then
|
||||
git remote set-url "$remote" "https://github.com/ohmyzsh/ohmyzsh.git"
|
||||
fi
|
||||
|
||||
printf "${BLUE}%s${NORMAL}\n" "Updating Oh My Zsh"
|
||||
if git pull --rebase --stat origin master
|
||||
then
|
||||
printf '%s' "$GREEN"
|
||||
printf '%s\n' ' __ __ '
|
||||
printf '%s\n' ' ____ / /_ ____ ___ __ __ ____ _____/ /_ '
|
||||
printf '%s\n' ' / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ '
|
||||
printf '%s\n' '/ /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / '
|
||||
printf '%s\n' '\____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ '
|
||||
printf '%s\n' ' /____/ '
|
||||
printf "${BLUE}%s\n" "Hooray! Oh My Zsh has been updated and/or is at the current version."
|
||||
printf "${BLUE}${BOLD}%s${NORMAL}\n" "To keep up on the latest news and updates, follow us on twitter: https://twitter.com/ohmyzsh"
|
||||
printf "${BLUE}${BOLD}%s${NORMAL}\n" "Get your Oh My Zsh swag at: https://shop.planetargon.com/collections/oh-my-zsh"
|
||||
else
|
||||
printf "${RED}%s${NORMAL}\n" 'There was an error updating. Try again later?'
|
||||
fi
|
Reference in New Issue
Block a user