Merge branch 'master' of ssh://git.penguincoder.org:2222/penguincoder/dotfiles
commit
8167b7ef5d
|
@ -3,7 +3,7 @@
|
||||||
Transparency=low
|
Transparency=low
|
||||||
CursorType=block
|
CursorType=block
|
||||||
Font=IBMPlexMono NF
|
Font=IBMPlexMono NF
|
||||||
FontHeight=14
|
FontHeight=16
|
||||||
BoldAsFont=yes
|
BoldAsFont=yes
|
||||||
BoldAsColour=no
|
BoldAsColour=no
|
||||||
Locale=en_US
|
Locale=en_US
|
||||||
|
|
29
README.md
29
README.md
|
@ -1,9 +1,24 @@
|
||||||
# Installation
|
# dotfiles
|
||||||
|
|
||||||
## Linux Bionic/Tara distributions
|
These are my dotfiles, useful for my own shell configuration and not much else. Installation is easy, just paste this into your terminal.
|
||||||
|
|
||||||
sudo apt-get install git python3 ansible ansible-lint && curl -sL https://git.penguincoder.org/penguincoder/dotfiles/raw/branch/master/bin/install-dotfiles.sh | bash && ansible-playbook -i localdev-inventory.yaml linux-bionic-playbook.yaml
|
#!/bin/sh
|
||||||
|
#Initialization script sourced from Atlassian: https://developer.atlassian.com/blog/2016/02/best-way-to-store-dotfiles-git-bare-repo/
|
||||||
## Just the configuration files and shell scripts
|
git clone --bare ssh://git@git.penguincoder.org:2222/penguincoder/dotfiles.git
|
||||||
|
function config {
|
||||||
curl -sL https://git.penguincoder.org/penguincoder/dotfiles/raw/branch/master/bin/install-dotfiles.sh | bash
|
/usr/bin/git --git-dir=$HOME/dotfiles.git/ --work-tree=$HOME $@
|
||||||
|
}
|
||||||
|
mkdir -p .config-backup
|
||||||
|
config checkout
|
||||||
|
if [ $? = 0 ]; then
|
||||||
|
echo "Checked out config.";
|
||||||
|
else
|
||||||
|
echo "Backing up pre-existing dot files.";
|
||||||
|
config checkout 2>&1 | egrep "\s+\." | awk {'print $1'} | xargs -I{} mv {} .config-backup/{}
|
||||||
|
fi;
|
||||||
|
config checkout
|
||||||
|
config config status.showUntrackedFiles no
|
||||||
|
config push --set-upstream origin master
|
||||||
|
config submodule init
|
||||||
|
config submodule update
|
||||||
|
which fc-cache 2>/dev/null && fc-cache -f -v ~/.fonts || true
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
#export AWS_ACCESS_KEY_ID=
|
|
||||||
#export AWS_SECRET_ACCESS_KEY=
|
|
||||||
test -s $HOME/code/vagrant-dev-env/dev-aliases && . $HOME/code/vagrant-dev-env/dev-aliases || true
|
|
|
@ -1,20 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#Initialization script sourced from Atlassian: https://developer.atlassian.com/blog/2016/02/best-way-to-store-dotfiles-git-bare-repo/
|
|
||||||
git clone --bare ssh://git@git.penguincoder.org:2222/penguincoder/dotfiles.git
|
|
||||||
function config {
|
|
||||||
/usr/bin/git --git-dir=$HOME/dotfiles.git/ --work-tree=$HOME $@
|
|
||||||
}
|
|
||||||
mkdir -p .config-backup
|
|
||||||
config checkout
|
|
||||||
if [ $? = 0 ]; then
|
|
||||||
echo "Checked out config.";
|
|
||||||
else
|
|
||||||
echo "Backing up pre-existing dot files.";
|
|
||||||
config checkout 2>&1 | egrep "\s+\." | awk {'print $1'} | xargs -I{} mv {} .config-backup/{}
|
|
||||||
fi;
|
|
||||||
config checkout
|
|
||||||
config config status.showUntrackedFiles no
|
|
||||||
config push --set-upstream origin master
|
|
||||||
config submodule init
|
|
||||||
config submodule update
|
|
||||||
which fc-cache 2>/dev/null && fc-cache -f -v ~/.fonts || true
|
|
|
@ -1,83 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
# bash_completion for kerl
|
|
||||||
|
|
||||||
_kerl()
|
|
||||||
{
|
|
||||||
local cur prev
|
|
||||||
if type _get_comp_words_by_ref &>/dev/null ; then
|
|
||||||
_get_comp_words_by_ref cur prev
|
|
||||||
else
|
|
||||||
cur=$2 prev=$3
|
|
||||||
fi
|
|
||||||
|
|
||||||
case $prev in
|
|
||||||
kerl)
|
|
||||||
mapfile -t COMPREPLY < <( compgen -W 'build install update list delete active path status' -- "$cur" )
|
|
||||||
;;
|
|
||||||
list)
|
|
||||||
mapfile -t COMPREPLY < <( compgen -W 'releases builds installations' -- "$cur" )
|
|
||||||
;;
|
|
||||||
build)
|
|
||||||
if [ "$COMP_CWORD" -eq 2 ]; then
|
|
||||||
if [ -f "$HOME"/.kerl/otp_releases ]; then
|
|
||||||
RELEASES=$(cat "$HOME"/.kerl/otp_releases)
|
|
||||||
fi
|
|
||||||
mapfile -t COMPREPLY < <( compgen -W "git $RELEASES" -- "$cur")
|
|
||||||
else
|
|
||||||
if [ -f "$HOME"/.kerl/otp_builds ]; then
|
|
||||||
BUILDS=$(cut -d ',' -f 2 "$HOME"/.kerl/otp_builds)
|
|
||||||
fi
|
|
||||||
mapfile -t COMPREPLY < <( compgen -W "$BUILDS" -- "$cur")
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
installation)
|
|
||||||
if [ -f "$HOME"/.kerl/otp_installations ]; then
|
|
||||||
PATHS=$(cut -d ' ' -f 2 "$HOME"/.kerl/otp_installations)
|
|
||||||
fi
|
|
||||||
mapfile -t COMPREPLY < <( compgen -W "$PATHS" -- "$cur")
|
|
||||||
;;
|
|
||||||
install)
|
|
||||||
if [ -f "$HOME"/.kerl/otp_builds ]; then
|
|
||||||
BUILDS=$(cut -d ',' -f 2 "$HOME"/.kerl/otp_builds)
|
|
||||||
fi
|
|
||||||
mapfile -t COMPREPLY < <( compgen -W "$BUILDS" -- "$cur")
|
|
||||||
;;
|
|
||||||
path)
|
|
||||||
INSTALL_LIST="$HOME"/.kerl/otp_installations
|
|
||||||
if [ -f "$INSTALL_LIST" ]; then
|
|
||||||
NAMES=$(cut -d ' ' -f 2 "$INSTALL_LIST" | xargs basename)
|
|
||||||
fi
|
|
||||||
mapfile -t COMPREPLY < <( compgen -W "$NAMES" -- "$cur")
|
|
||||||
;;
|
|
||||||
deploy)
|
|
||||||
if [ "$COMP_CWORD" -eq 3 ]; then
|
|
||||||
if [ -f "$HOME"/.kerl/otp_installations ]; then
|
|
||||||
PATHS=$(cut -d ' ' -f 2 "$HOME"/.kerl/otp_installations)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
mapfile -t COMPREPLY < <( compgen -W "$PATHS" -- "$cur")
|
|
||||||
;;
|
|
||||||
delete)
|
|
||||||
mapfile -t COMPREPLY < <( compgen -W 'build installation' -- "$cur")
|
|
||||||
;;
|
|
||||||
update)
|
|
||||||
mapfile -t COMPREPLY < <( compgen -W 'releases' -- "$cur")
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
if [ "$COMP_CWORD" -eq 3 ]; then
|
|
||||||
if [ -f "$HOME"/.kerl/otp_builds ]; then
|
|
||||||
BUILDS=$(cut -d ',' -f 2 "$HOME"/.kerl/otp_builds)
|
|
||||||
fi
|
|
||||||
if [ -n "$BUILDS" ]; then
|
|
||||||
for b in $BUILDS; do
|
|
||||||
if [ "$prev" = "$b" ]; then
|
|
||||||
_filedir
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
complete -F _kerl kerl
|
|
|
@ -1,2 +1,2 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
test -s "$HOME/.kerl/installs/21.0/activate" && . "$HOME/.kerl/installs/21.0/activate"
|
test -s "$HOME/.kerl/installs/22.0/activate" && . "$HOME/.kerl/installs/22.0/activate"
|
||||||
|
|
227
bin/kubectx
227
bin/kubectx
|
@ -1,227 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# kubectx(1) is a utility to manage and switch between kubectl contexts.
|
|
||||||
|
|
||||||
# Copyright 2017 Google Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
[[ -n $DEBUG ]] && set -x
|
|
||||||
|
|
||||||
set -eou pipefail
|
|
||||||
IFS=$'\n\t'
|
|
||||||
|
|
||||||
SELF_CMD="$0"
|
|
||||||
KUBECTX="${XDG_CACHE_HOME:-$HOME/.kube}/kubectx"
|
|
||||||
|
|
||||||
usage() {
|
|
||||||
cat <<"EOF"
|
|
||||||
USAGE:
|
|
||||||
kubectx : list the contexts
|
|
||||||
kubectx <NAME> : switch to context <NAME>
|
|
||||||
kubectx - : switch to the previous context
|
|
||||||
kubectx <NEW_NAME>=<NAME> : rename context <NAME> to <NEW_NAME>
|
|
||||||
kubectx <NEW_NAME>=. : rename current-context to <NEW_NAME>
|
|
||||||
kubectx -d <NAME> [<NAME...>] : delete context <NAME> ('.' for current-context)
|
|
||||||
(this command won't delete the user/cluster entry
|
|
||||||
that is used by the context)
|
|
||||||
|
|
||||||
kubectx -h,--help : show this message
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
exit_err() {
|
|
||||||
echo >&2 "${1}"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
current_context() {
|
|
||||||
$KUBECTL config view -o=jsonpath='{.current-context}'
|
|
||||||
}
|
|
||||||
|
|
||||||
get_contexts() {
|
|
||||||
$KUBECTL config get-contexts -o=name | sort -n
|
|
||||||
}
|
|
||||||
|
|
||||||
list_contexts() {
|
|
||||||
set -u pipefail
|
|
||||||
local cur ctx_list
|
|
||||||
cur="$(current_context)" || exit_err "error getting current context"
|
|
||||||
ctx_list=$(get_contexts) || exit_err "error getting context list"
|
|
||||||
|
|
||||||
local yellow darkbg normal
|
|
||||||
yellow=$(tput setaf 3 || true)
|
|
||||||
darkbg=$(tput setab 0 || true)
|
|
||||||
normal=$(tput sgr0 || true)
|
|
||||||
|
|
||||||
local cur_ctx_fg cur_ctx_bg
|
|
||||||
cur_ctx_fg=${KUBECTX_CURRENT_FGCOLOR:-$yellow}
|
|
||||||
cur_ctx_bg=${KUBECTX_CURRENT_BGCOLOR:-$darkbg}
|
|
||||||
|
|
||||||
for c in $ctx_list; do
|
|
||||||
if [[ -n "${_KUBECTX_FORCE_COLOR:-}" || \
|
|
||||||
-t 1 && -z "${NO_COLOR:-}" ]]; then
|
|
||||||
# colored output mode
|
|
||||||
if [[ "${c}" = "${cur}" ]]; then
|
|
||||||
echo "${cur_ctx_bg}${cur_ctx_fg}${c}${normal}"
|
|
||||||
else
|
|
||||||
echo "${c}"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "${c}"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
read_context() {
|
|
||||||
if [[ -f "${KUBECTX}" ]]; then
|
|
||||||
cat "${KUBECTX}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
save_context() {
|
|
||||||
local saved
|
|
||||||
saved="$(read_context)"
|
|
||||||
|
|
||||||
if [[ "${saved}" != "${1}" ]]; then
|
|
||||||
printf %s "${1}" > "${KUBECTX}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
switch_context() {
|
|
||||||
$KUBECTL config use-context "${1}"
|
|
||||||
}
|
|
||||||
|
|
||||||
choose_context_interactive() {
|
|
||||||
local choice
|
|
||||||
choice="$(_KUBECTX_FORCE_COLOR=1 \
|
|
||||||
FZF_DEFAULT_COMMAND="${SELF_CMD}" \
|
|
||||||
fzf --ansi || true)"
|
|
||||||
if [[ -z "${choice}" ]]; then
|
|
||||||
echo 2>&1 "error: you did not choose any of the options"
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
set_context "${choice}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
set_context() {
|
|
||||||
local prev
|
|
||||||
prev="$(current_context)" || exit_err "error getting current context"
|
|
||||||
|
|
||||||
switch_context "${1}"
|
|
||||||
|
|
||||||
if [[ "${prev}" != "${1}" ]]; then
|
|
||||||
save_context "${prev}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
swap_context() {
|
|
||||||
local ctx
|
|
||||||
ctx="$(read_context)"
|
|
||||||
if [[ -z "${ctx}" ]]; then
|
|
||||||
echo "error: No previous context found." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
set_context "${ctx}"
|
|
||||||
}
|
|
||||||
|
|
||||||
context_exists() {
|
|
||||||
grep -q ^"${1}"\$ <($KUBECTL config get-contexts -o=name)
|
|
||||||
}
|
|
||||||
|
|
||||||
rename_context() {
|
|
||||||
local old_name="${1}"
|
|
||||||
local new_name="${2}"
|
|
||||||
|
|
||||||
if [[ "${old_name}" == "." ]]; then
|
|
||||||
old_name="$(current_context)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! context_exists "${old_name}"; then
|
|
||||||
echo "error: Context \"${old_name}\" not found, can't rename it." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if context_exists "${new_name}"; then
|
|
||||||
echo "Context \"${new_name}\" exists, deleting..." >&2
|
|
||||||
$KUBECTL config delete-context "${new_name}" 1>/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
|
|
||||||
$KUBECTL config rename-context "${old_name}" "${new_name}"
|
|
||||||
}
|
|
||||||
|
|
||||||
delete_contexts() {
|
|
||||||
for i in "${@}"; do
|
|
||||||
delete_context "${i}"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
delete_context() {
|
|
||||||
local ctx
|
|
||||||
ctx="${1}"
|
|
||||||
if [[ "${ctx}" == "." ]]; then
|
|
||||||
ctx="$(current_context)" || exit_err "error getting current context"
|
|
||||||
fi
|
|
||||||
echo "Deleting context \"${ctx}\"..." >&2
|
|
||||||
$KUBECTL config delete-context "${ctx}"
|
|
||||||
}
|
|
||||||
|
|
||||||
main() {
|
|
||||||
if hash kubectl 2>/dev/null; then
|
|
||||||
KUBECTL=kubectl
|
|
||||||
elif hash kubectl.exe 2>/dev/null; then
|
|
||||||
KUBECTL=kubectl.exe
|
|
||||||
else
|
|
||||||
echo >&2 "kubectl is not installed"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$#" -eq 0 ]]; then
|
|
||||||
if [[ -t 1 && -z "${KUBECTX_IGNORE_FZF:-}" && "$(type fzf &>/dev/null; echo $?)" -eq 0 ]]; then
|
|
||||||
choose_context_interactive
|
|
||||||
else
|
|
||||||
list_contexts
|
|
||||||
fi
|
|
||||||
elif [[ "${1}" == "-d" ]]; then
|
|
||||||
if [[ "$#" -lt 2 ]]; then
|
|
||||||
echo "error: missing context NAME" >&2
|
|
||||||
usage
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
delete_contexts "${@:2}"
|
|
||||||
elif [[ "$#" -gt 1 ]]; then
|
|
||||||
echo "error: too many arguments" >&2
|
|
||||||
usage
|
|
||||||
exit 1
|
|
||||||
elif [[ "$#" -eq 1 ]]; then
|
|
||||||
if [[ "${1}" == "-" ]]; then
|
|
||||||
swap_context
|
|
||||||
elif [[ "${1}" == '-h' || "${1}" == '--help' ]]; then
|
|
||||||
usage
|
|
||||||
elif [[ "${1}" =~ ^-(.*) ]]; then
|
|
||||||
echo "error: unrecognized flag \"${1}\"" >&2
|
|
||||||
usage
|
|
||||||
exit 1
|
|
||||||
elif [[ "${1}" =~ (.+)=(.+) ]]; then
|
|
||||||
rename_context "${BASH_REMATCH[2]}" "${BASH_REMATCH[1]}"
|
|
||||||
else
|
|
||||||
set_context "${1}"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
usage
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
214
bin/kubens
214
bin/kubens
|
@ -1,214 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# kubens(1) is a utility to switch between Kubernetes namespaces.
|
|
||||||
|
|
||||||
# Copyright 2017 Google Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
[[ -n $DEBUG ]] && set -x
|
|
||||||
|
|
||||||
set -eou pipefail
|
|
||||||
IFS=$'\n\t'
|
|
||||||
|
|
||||||
SELF_CMD="$0"
|
|
||||||
KUBENS_DIR="${XDG_CACHE_HOME:-$HOME/.kube}/kubens"
|
|
||||||
|
|
||||||
usage() {
|
|
||||||
cat <<"EOF"
|
|
||||||
USAGE:
|
|
||||||
kubens : list the namespaces in the current context
|
|
||||||
kubens <NAME> : change the active namespace of current context
|
|
||||||
kubens - : switch to the previous namespace in this context
|
|
||||||
kubens -h,--help : show this message
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
exit_err() {
|
|
||||||
echo >&2 "${1}"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
current_namespace() {
|
|
||||||
local cur_ctx
|
|
||||||
|
|
||||||
cur_ctx="$(current_context)" || exit_err "error getting current context"
|
|
||||||
ns="$($KUBECTL config view -o=jsonpath="{.contexts[?(@.name==\"${cur_ctx}\")].context.namespace}")" \
|
|
||||||
|| exit_err "error getting current namespace"
|
|
||||||
|
|
||||||
if [[ -z "${ns}" ]]; then
|
|
||||||
echo "default"
|
|
||||||
else
|
|
||||||
echo "${ns}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
current_context() {
|
|
||||||
$KUBECTL config current-context
|
|
||||||
}
|
|
||||||
|
|
||||||
get_namespaces() {
|
|
||||||
$KUBECTL get namespaces -o=jsonpath='{range .items[*].metadata.name}{@}{"\n"}{end}'
|
|
||||||
}
|
|
||||||
|
|
||||||
escape_context_name() {
|
|
||||||
echo "${1//\//-}"
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace_file() {
|
|
||||||
local ctx="$(escape_context_name "${1}")"
|
|
||||||
echo "${KUBENS_DIR}/${ctx}"
|
|
||||||
}
|
|
||||||
|
|
||||||
read_namespace() {
|
|
||||||
local f
|
|
||||||
f="$(namespace_file "${1}")"
|
|
||||||
[[ -f "${f}" ]] && cat "${f}"
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
save_namespace() {
|
|
||||||
mkdir -p "${KUBENS_DIR}"
|
|
||||||
local f saved
|
|
||||||
f="$(namespace_file "${1}")"
|
|
||||||
saved="$(read_namespace "${1}")"
|
|
||||||
|
|
||||||
if [[ "${saved}" != "${2}" ]]; then
|
|
||||||
printf %s "${2}" > "${f}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
switch_namespace() {
|
|
||||||
local ctx="${1}"
|
|
||||||
$KUBECTL config set-context "${ctx}" --namespace="${2}"
|
|
||||||
echo "Active namespace is \"${2}\".">&2
|
|
||||||
}
|
|
||||||
|
|
||||||
choose_namespace_interactive() {
|
|
||||||
# directly calling kubens via fzf might fail with a cryptic error like
|
|
||||||
# "$FZF_DEFAULT_COMMAND failed", so try to see if we can list namespaces
|
|
||||||
# locally first
|
|
||||||
if [[ -z "$(list_namespaces)" ]]; then
|
|
||||||
echo >&2 "error: could not list namespaces (is the cluster accessible?)"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
local choice
|
|
||||||
choice="$(_KUBECTX_FORCE_COLOR=1 \
|
|
||||||
FZF_DEFAULT_COMMAND="${SELF_CMD}" \
|
|
||||||
fzf --ansi || true)"
|
|
||||||
if [[ -z "${choice}" ]]; then
|
|
||||||
echo 2>&1 "error: you did not choose any of the options"
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
set_namespace "${choice}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
set_namespace() {
|
|
||||||
local ctx prev
|
|
||||||
ctx="$(current_context)" || exit_err "error getting current context"
|
|
||||||
prev="$(current_namespace)" || exit_error "error getting current namespace"
|
|
||||||
|
|
||||||
if grep -q ^"${1}"\$ <(get_namespaces); then
|
|
||||||
switch_namespace "${ctx}" "${1}"
|
|
||||||
|
|
||||||
if [[ "${prev}" != "${1}" ]]; then
|
|
||||||
save_namespace "${ctx}" "${prev}"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "error: no namespace exists with name \"${1}\".">&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
list_namespaces() {
|
|
||||||
local yellow darkbg normal
|
|
||||||
yellow=$(tput setaf 3 || true)
|
|
||||||
darkbg=$(tput setab 0 || true)
|
|
||||||
normal=$(tput sgr0 || true)
|
|
||||||
|
|
||||||
local cur_ctx_fg cur_ctx_bg
|
|
||||||
cur_ctx_fg=${KUBECTX_CURRENT_FGCOLOR:-$yellow}
|
|
||||||
cur_ctx_bg=${KUBECTX_CURRENT_BGCOLOR:-$darkbg}
|
|
||||||
|
|
||||||
local cur ns_list
|
|
||||||
cur="$(current_namespace)" || exit_err "error getting current namespace"
|
|
||||||
ns_list=$(get_namespaces) || exit_err "error getting namespace list"
|
|
||||||
|
|
||||||
for c in $ns_list; do
|
|
||||||
if [[ -n "${_KUBECTX_FORCE_COLOR:-}" || \
|
|
||||||
-t 1 && -z "${NO_COLOR:-}" ]]; then
|
|
||||||
# colored output mode
|
|
||||||
if [[ "${c}" = "${cur}" ]]; then
|
|
||||||
echo "${cur_ctx_bg}${cur_ctx_fg}${c}${normal}"
|
|
||||||
else
|
|
||||||
echo "${c}"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "${c}"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
swap_namespace() {
|
|
||||||
local ctx ns
|
|
||||||
ctx="$(current_context)" || exit_err "error getting current context"
|
|
||||||
ns="$(read_namespace "${ctx}")"
|
|
||||||
if [[ -z "${ns}" ]]; then
|
|
||||||
echo "error: No previous namespace found for current context." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
set_namespace "${ns}"
|
|
||||||
}
|
|
||||||
|
|
||||||
main() {
|
|
||||||
if [[ -z "${KUBECTL:-}" ]]; then
|
|
||||||
if hash kubectl 2>/dev/null; then
|
|
||||||
KUBECTL=kubectl
|
|
||||||
elif hash kubectl.exe 2>/dev/null; then
|
|
||||||
KUBECTL=kubectl.exe
|
|
||||||
else
|
|
||||||
echo >&2 "kubectl is not installed"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$#" -eq 0 ]]; then
|
|
||||||
if [[ -t 1 && -z ${KUBECTX_IGNORE_FZF:-} && "$(type fzf &>/dev/null; echo $?)" -eq 0 ]]; then
|
|
||||||
choose_namespace_interactive
|
|
||||||
else
|
|
||||||
list_namespaces
|
|
||||||
fi
|
|
||||||
elif [[ "$#" -eq 1 ]]; then
|
|
||||||
if [[ "${1}" == '-h' || "${1}" == '--help' ]]; then
|
|
||||||
usage
|
|
||||||
elif [[ "${1}" == "-" ]]; then
|
|
||||||
swap_namespace
|
|
||||||
elif [[ "${1}" =~ ^-(.*) ]]; then
|
|
||||||
echo "error: unrecognized flag \"${1}\"" >&2
|
|
||||||
usage
|
|
||||||
exit 1
|
|
||||||
elif [[ "${1}" =~ (.+)=(.+) ]]; then
|
|
||||||
alias_context "${BASH_REMATCH[2]}" "${BASH_REMATCH[1]}"
|
|
||||||
else
|
|
||||||
set_namespace "${1}"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "error: too many flags" >&2
|
|
||||||
usage
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
|
@ -1,9 +1,3 @@
|
||||||
export MINIKUBE_WANTUPDATENOTIFICATION=true
|
|
||||||
export MINIKUBE_WANTREPORTERRORPROMPT=false
|
|
||||||
export MINIKUBE_WANTKUBECTLDOWNLOADMSG=false
|
|
||||||
export MINIKUBE_HOME=$HOME
|
|
||||||
export MINIKUBE_DRIVER=kvm2
|
|
||||||
export CHANGE_MINIKUBE_NONE_USER=true
|
|
||||||
test -d $HOME/.kube || mkdir $HOME/.kube
|
test -d $HOME/.kube || mkdir $HOME/.kube
|
||||||
test -f $HOME/.kube/config || touch $HOME/.kube/config
|
test -f $HOME/.kube/config || touch $HOME/.kube/config
|
||||||
export KUBECONFIG=$HOME/.kube/config
|
export KUBECONFIG=$HOME/.kube/config
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1 +0,0 @@
|
||||||
export MINIKUBE_MEMORY=4096
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,19 +0,0 @@
|
||||||
---
|
|
||||||
- name: linux desktop setup
|
|
||||||
hosts: all
|
|
||||||
become: yes
|
|
||||||
become_user: root
|
|
||||||
become_method: sudo
|
|
||||||
gather_facts: False
|
|
||||||
vars:
|
|
||||||
ansible_connection: local
|
|
||||||
ansible_python_interpreter: /usr/bin/python3
|
|
||||||
tasks:
|
|
||||||
- include_role:
|
|
||||||
name: dev-tools
|
|
||||||
- include_role:
|
|
||||||
name: docker
|
|
||||||
- include_role:
|
|
||||||
name: k8s
|
|
||||||
- include_role:
|
|
||||||
name: linux-desktop
|
|
|
@ -1 +0,0 @@
|
||||||
default ansible_connection=local
|
|
|
@ -1,50 +0,0 @@
|
||||||
---
|
|
||||||
- name: install apt applications
|
|
||||||
apt:
|
|
||||||
name: jq,vim,emacs,curl,htop,tmux,git,openvpn,build-essential,libssl-dev,libncurses5-dev
|
|
||||||
state: present
|
|
||||||
- name: install micro
|
|
||||||
shell: curl -sLo /tmp/micro.tar.gz https://github.com/zyedidia/micro/releases/download/v1.4.1/micro-1.4.1-linux64.tar.gz && mkdir -p /tmp/micro && tar xzf /tmp/micro.tar.gz -C /tmp/micro && install -m 755 /tmp/micro/micro-1.4.1/micro /usr/local/bin/micro-1.4.1 && rm -rf /tmp/micro* && ln -sf /usr/local/bin/micro-1.4.1 /usr/local/bin/micro
|
|
||||||
args:
|
|
||||||
warn: False
|
|
||||||
creates: /usr/local/bin/micro-1.4.1
|
|
||||||
- name: install powerline-go
|
|
||||||
shell: curl -sLo /tmp/powerline-go https://github.com/justjanne/powerline-go/releases/download/v1.12.1/powerline-go-linux-amd64 && install -m 755 /tmp/powerline-go /usr/local/bin/powerline-go-1.12.1 && rm -f /tmp/powerline-go && ln -sf /usr/local/bin/powerline-go-1.12.1 /usr/local/bin/powerline-go
|
|
||||||
args:
|
|
||||||
creates: /usr/local/bin/powerline-go-1.12.1
|
|
||||||
- name: install rustup
|
|
||||||
become: no
|
|
||||||
shell: curl -o t.sh https://sh.rustup.rs -sSf && chmod 700 t.sh && ./t.sh --no-modify-path --verbose -y --default-toolchain stable && rm -f t.sh
|
|
||||||
args:
|
|
||||||
creates: ~/.cargo/bin/rustup
|
|
||||||
- name: install kerl
|
|
||||||
shell: curl -O https://raw.githubusercontent.com/kerl/kerl/master/kerl && install -m 755 kerl /usr/local/bin/kerl && rm -f kerl
|
|
||||||
args:
|
|
||||||
warn: False
|
|
||||||
creates: /usr/local/bin/kerl
|
|
||||||
- name: update kerl releases
|
|
||||||
become: no
|
|
||||||
shell: kerl update releases
|
|
||||||
args:
|
|
||||||
creates: ~/.kerl/otp_releases
|
|
||||||
- name: build erlang 21.0
|
|
||||||
become: no
|
|
||||||
shell: kerl build 21.0 21.0
|
|
||||||
args:
|
|
||||||
creates: ~/.kerl/builds/21.0
|
|
||||||
- name: install erlang 21.0
|
|
||||||
become: no
|
|
||||||
shell: kerl install 21.0
|
|
||||||
args:
|
|
||||||
creates: ~/.kerl/installs/21.0
|
|
||||||
- name: install kiex
|
|
||||||
become: no
|
|
||||||
shell: curl -sSL https://raw.githubusercontent.com/taylor/kiex/master/install | bash -s
|
|
||||||
args:
|
|
||||||
warn: False
|
|
||||||
creates: ~/.kiex/bin/kiex
|
|
||||||
- name: install elixir
|
|
||||||
become: no
|
|
||||||
shell: . ~/bin/kerl.setup.bash && kiex install 1.7.4
|
|
||||||
args:
|
|
||||||
creates: ~/.kiex/elixirs/elixir-1.7.4
|
|
|
@ -1,29 +0,0 @@
|
||||||
---
|
|
||||||
- name: add docker-ce pubkey
|
|
||||||
shell: curl -sL "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x7EA0A9C3F273FCD8" | sudo apt-key add
|
|
||||||
args:
|
|
||||||
warn: False
|
|
||||||
- name: add docker-ce repo
|
|
||||||
apt_repository:
|
|
||||||
repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
|
|
||||||
state: present
|
|
||||||
update_cache: true
|
|
||||||
- name: install apt applications
|
|
||||||
apt:
|
|
||||||
name: libvirt-clients,libvirt-daemon-system,qemu-kvm,virt-manager,virt-top,virt-goodies,vagrant,vagrant-libvirt,vagrant-mutate,xsltproc,fop,docker-ce
|
|
||||||
state: present
|
|
||||||
- name: install docker-compose
|
|
||||||
shell: curl -sLo /tmp/docker-compose https://github.com/docker/compose/releases/download/1.24.0/docker-compose-Linux-x86_64 && install -m 755 /tmp/docker-compose /usr/local/bin/docker-compose-1.24.0 && rm -f /tmp/docker-compose && ln -sf /usr/local/bin/docker-compose-1.24.0 /usr/local/bin/docker-compose
|
|
||||||
args:
|
|
||||||
warn: False
|
|
||||||
creates: /usr/local/bin/docker-compose-1.24.0
|
|
||||||
- name: install docker-machine
|
|
||||||
shell: curl -sLo docker-machine https://github.com/docker/machine/releases/download/v0.16.0/docker-machine-linux-x86_64 && install -m 755 docker-machine /usr/local/bin/docker-machine-0.16.0 && rm -f docker-machine && ln -sf /usr/local/bin/docker-machine-0.16.0 /usr/local/bin/docker-machine
|
|
||||||
args:
|
|
||||||
warn: False
|
|
||||||
creates: /usr/local/bin/docker-machine-0.16.0
|
|
||||||
- name: install docker-machine-driver-kvm2
|
|
||||||
shell: curl -sLo docker-machine-driver-kvm2 https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2 && install -m 755 docker-machine-driver-kvm2 /usr/local/bin/docker-machine-driver-kvm2 && rm -f docker-machine-driver-kvm2
|
|
||||||
args:
|
|
||||||
warn: False
|
|
||||||
creates: /usr/local/bin/docker-machine-driver-kvm2
|
|
|
@ -1,63 +0,0 @@
|
||||||
---
|
|
||||||
- name: configure static hostfile entry for starbase4.consolo.lan
|
|
||||||
lineinfile:
|
|
||||||
path: /etc/hosts
|
|
||||||
line: "10.4.21.100 starbase4 starbase4.consolo.lan"
|
|
||||||
- name: configure static hostfile entry for errbit.consolo.lan
|
|
||||||
lineinfile:
|
|
||||||
path: /etc/hosts
|
|
||||||
line: "10.4.21.136 errbit.consolo.lan"
|
|
||||||
- name: configure static hostfile entry for api-doc.consolo.lan
|
|
||||||
lineinfile:
|
|
||||||
path: /etc/hosts
|
|
||||||
line: "10.4.21.100 api-docs.consolo.lan"
|
|
||||||
- name: configure static hostfile entry for lxd.consolo.lan
|
|
||||||
lineinfile:
|
|
||||||
path: /etc/hosts
|
|
||||||
line: "10.4.21.253 lxd.consolo.lan mattermost.lxd.consolo.lan"
|
|
||||||
- name: configure static hostfile entry for git.lxd.consolo.lan
|
|
||||||
lineinfile:
|
|
||||||
path: /etc/hosts
|
|
||||||
line: "10.4.21.230 git.lxd.consolo.lan"
|
|
||||||
- name: install apt applications
|
|
||||||
apt:
|
|
||||||
name: python3-pip,python3-setuptools,python3-yaml,python3-wheel,socat,vpnc
|
|
||||||
state: present
|
|
||||||
- name: install pip applications
|
|
||||||
pip:
|
|
||||||
name: awscli,saws
|
|
||||||
state: present
|
|
||||||
- name: install kubectl
|
|
||||||
shell: curl -sLo /tmp/kubectl https://storage.googleapis.com/kubernetes-release/release/v1.11.3/bin/linux/amd64/kubectl && install -m 755 /tmp/kubectl /usr/local/bin/kubectl-1.11.3 && rm -f /tmp/kubectl && ln -sf /usr/local/bin/kubectl-1.11.3 /usr/local/bin/kubectl
|
|
||||||
args:
|
|
||||||
warn: False
|
|
||||||
creates: /usr/local/bin/kubectl-1.11.3
|
|
||||||
- name: install kops
|
|
||||||
shell: curl -sLo /tmp/kops -L https://github.com/kubernetes/kops/releases/download/1.10.0/kops-linux-amd64 && install -m 755 /tmp/kops /usr/local/bin/kops-1.10.0 && rm -f /tmp/kops && ln -sf /usr/local/bin/kops-1.10.0 /usr/local/bin/kops
|
|
||||||
args:
|
|
||||||
warn: False
|
|
||||||
creates: /usr/local/bin/kops-1.10.0
|
|
||||||
- name: install minikube
|
|
||||||
shell: curl -sLo /tmp/minikube https://storage.googleapis.com/minikube/releases/v1.1.1/minikube-linux-amd64 && install -m 755 /tmp/minikube /usr/local/bin/minikube-1.1.1 && rm -f /tmp/minikube && ln -sf /usr/local/bin/minikube-1.1.1 /usr/local/bin/minikube
|
|
||||||
args:
|
|
||||||
warn: False
|
|
||||||
creates: /usr/local/bin/minikube-1.1.1
|
|
||||||
- name: install helm
|
|
||||||
shell: curl -sLo /tmp/helm.tar.gz https://storage.googleapis.com/kubernetes-helm/helm-v2.13.1-linux-amd64.tar.gz && mkdir -p /tmp/helm && tar xzf /tmp/helm.tar.gz -C /tmp/helm && install -m 755 /tmp/helm/linux-amd64/helm /usr/local/bin/helm-2.13.1 && rm -rf /tmp/helm* && ln -sf /usr/local/bin/helm-2.13.1 /usr/local/bin/helm
|
|
||||||
args:
|
|
||||||
creates: /usr/local/bin/helm-2.13.1
|
|
||||||
- name: install k9s
|
|
||||||
shell: curl -sLo /tmp/k9s.tar.gz https://github.com/derailed/k9s/releases/download/0.6.7/k9s_0.6.7_Linux_x86_64.tar.gz && tar xzf /tmp/k9s.tar.gz -C /tmp && install -m 755 /tmp/k9s /usr/local/bin/k9s-0.6.7 && rm -f /tmp/k9s* && ln -sf /usr/local/bin/k9s-0.6.7 /usr/local/bin/k9s
|
|
||||||
args:
|
|
||||||
warn: False
|
|
||||||
creates: /usr/local/bin/k9s-0.6.7
|
|
||||||
- name: install popeye
|
|
||||||
shell: curl -sLo /tmp/popeye.tar.gz https://github.com/derailed/popeye/releases/download/v0.3.6/popeye_0.3.6_Linux_x86_64.tar.gz && tar xzf /tmp/popeye.tar.gz -C /tmp && install -m 755 /tmp/popeye /usr/local/bin/popeye-0.3.6 && rm -f /tmp/popeye* && ln -sf /usr/local/bin/popeye-0.3.6 /usr/local/bin/popeye
|
|
||||||
args:
|
|
||||||
warn: False
|
|
||||||
creates: /usr/local/bin/popeye-0.3.6
|
|
||||||
- name: install stern
|
|
||||||
shell: curl -sLo /tmp/stern_linux_amd64 https://github.com/wercker/stern/releases/download/1.10.0/stern_linux_amd64 && install -m 755 /tmp/stern_linux_amd64 /usr/local/bin/stern-1.10.0 && rm -f /tmp/stern_linux_amd64 && ln -sf /usr/local/bin/stern-1.10.0 /usr/local/bin/stern
|
|
||||||
args:
|
|
||||||
warn: False
|
|
||||||
creates: /usr/local/bin/stern-1.10.0
|
|
|
@ -1,30 +0,0 @@
|
||||||
---
|
|
||||||
- name: add nextcloud pubkey
|
|
||||||
shell: curl -sL "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x60EE47FBAD3DD469" | sudo apt-key add
|
|
||||||
args:
|
|
||||||
warn: False
|
|
||||||
- name: add nextcloud repo
|
|
||||||
apt_repository:
|
|
||||||
repo: "deb http://ppa.launchpad.net/nextcloud-devs/client/ubuntu bionic main"
|
|
||||||
state: present
|
|
||||||
update_cache: true
|
|
||||||
- name: add openrazer repo
|
|
||||||
apt_repository:
|
|
||||||
repo: "deb http://ppa.launchpad.net/openrazer/stable/ubuntu bionic main"
|
|
||||||
state: present
|
|
||||||
update_cache: true
|
|
||||||
- name: add polychromatic repo
|
|
||||||
apt_repository:
|
|
||||||
repo: "deb http://ppa.launchpad.net/openrazer/stable/ubuntu bionic main"
|
|
||||||
state: present
|
|
||||||
update_cache: true
|
|
||||||
- name: install apt applications
|
|
||||||
apt:
|
|
||||||
name: openvpn,nextcloud-client,openrazer-meta,polychromatic
|
|
||||||
state: present
|
|
||||||
- name: install kitty terminal emulator
|
|
||||||
become: no
|
|
||||||
shell: curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh /dev/stdin launch=n && ln -s ~/.local/kitty.app/bin/kitty ~/bin/ && mkdir -p ~/.local/share/applications && cp ~/.local/kitty.app/share/applications/kitty.desktop ~/.local/share/applications && sed -i "s/Icon\=kitty/Icon\=\/home\/$USER\/.local\/kitty.app\/share\/icons\/hicolor\/256x256\/apps\/kitty.png/g" ~/.local/share/applications/kitty.desktop
|
|
||||||
args:
|
|
||||||
warn: False
|
|
||||||
creates: ~/bin/kitty
|
|
Reference in New Issue