Compare commits
59 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
e38696a0ac | |
|
|
af11a50854 | |
|
|
05ef68acbc | |
|
|
78f88406cf | |
|
|
feb468b517 | |
|
|
66ae9b0de8 | |
|
|
2e52d2a77c | |
|
|
4c2e644db1 | |
|
|
f0941e9ba2 | |
|
|
ad2b55804e | |
|
|
ec3c06fa33 | |
|
|
686a5e45cb | |
|
|
cfe46e3d36 | |
|
|
5f59cb5438 | |
|
|
7c7e4f90ec | |
|
|
1c9cfd056b | |
|
|
7c77223b15 | |
|
|
00062bfcb6 | |
|
|
bf2034d13d | |
|
|
c222e5001c | |
|
|
606272ac23 | |
|
|
d237ab9aa4 | |
|
|
0ab80429ce | |
|
|
8bedbe47a7 | |
|
|
e5e7785c96 | |
|
|
3294df5d3e | |
|
|
d770030513 | |
|
|
407f2f5b5f | |
|
|
5a62acd253 | |
|
|
129340d24d | |
|
|
2ef5d483e3 | |
|
|
03b3a977aa | |
|
|
c0dc83edfc | |
|
|
f2bc6c4e6d | |
|
|
4dddba3bc6 | |
|
|
c2698882e4 | |
|
|
135d480c7d | |
|
|
e11576f260 | |
|
|
d7fb6b3235 | |
|
|
35334cdcb0 | |
|
|
b95094153f | |
|
|
6ccd9f5adf | |
|
|
1ffbc85a62 | |
|
|
60c4c0b598 | |
|
|
088212fd32 | |
|
|
d1b831a92d | |
|
|
69407018a7 | |
|
|
a481ff41ab | |
|
|
7cc2ced3b9 | |
|
|
66fbed7f6f | |
|
|
6b0ca17df0 | |
|
|
23efb39fb0 | |
|
|
9a71556b99 | |
|
|
e1ddf6e311 | |
|
|
0068315c35 | |
|
|
b839294827 | |
|
|
634c1f8c18 | |
|
|
4686ce1f12 | |
|
|
6ba527ff98 |
|
|
@ -7,7 +7,7 @@ jobs:
|
|||
bats-test:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-20.04, ubuntu-18.04, macos-10.15, macos-11]
|
||||
os: [ubuntu-20.04, ubuntu-22.04, macos-12, macos-11]
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
|
|
@ -49,10 +49,17 @@ jobs:
|
|||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.8
|
||||
# - name: Update APT Package Lists
|
||||
# run: sudo apt-get update
|
||||
- name: Install shfmt
|
||||
run: GO111MODULE=on go get mvdan.cc/sh/v3/cmd/shfmt
|
||||
- name: Install shellcheck
|
||||
run: brew install shellcheck
|
||||
env:
|
||||
scversion: stable # Or latest, vxx, etc
|
||||
run: |
|
||||
wget -qO- "https://github.com/koalaman/shellcheck/releases/download/${scversion?}/shellcheck-${scversion?}.linux.x86_64.tar.xz" | tar -xJv "shellcheck-${scversion}/shellcheck"
|
||||
sudo cp "shellcheck-${scversion}/shellcheck" /usr/bin/
|
||||
shellcheck --version
|
||||
- name: Install pre-commit
|
||||
run: python3 -m pip install -r test/lint-requirements.txt
|
||||
- name: Run lint
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ fi
|
|||
alias c='clear'
|
||||
alias cls='clear'
|
||||
|
||||
alias edit='${EDITOR:-${ALTERNATE_EDITOR?}}'
|
||||
alias edit='${EDITOR:-${ALTERNATE_EDITOR:-nano}}'
|
||||
alias pager='${PAGER:=less}'
|
||||
|
||||
alias q='exit'
|
||||
|
|
@ -71,10 +71,6 @@ alias rd='rmdir'
|
|||
# Shorten extract
|
||||
alias xt='extract'
|
||||
|
||||
# sudo editors
|
||||
alias svim='sudo ${VISUAL:-vim}'
|
||||
alias snano='sudo nano'
|
||||
|
||||
# Display whatever file is regular file or folder
|
||||
function catt() {
|
||||
for i in "$@"; do
|
||||
|
|
|
|||
|
|
@ -8,13 +8,18 @@ alias get='git'
|
|||
alias ga='git add'
|
||||
alias gall='git add -A'
|
||||
alias gap='git add -p'
|
||||
alias gav='git add -v'
|
||||
|
||||
# branch
|
||||
alias gb='git branch'
|
||||
alias gbD='git branch -D'
|
||||
alias gba='git branch -a'
|
||||
alias gba='git branch --all'
|
||||
alias gbd='git branch -d'
|
||||
alias gbm='git branch -m'
|
||||
alias gbD='git branch -D'
|
||||
alias gbl='git branch --list'
|
||||
alias gbla='git branch --list --all'
|
||||
alias gblr='git branch --list --remotes'
|
||||
alias gbm='git branch --move'
|
||||
alias gbr='git branch --remotes'
|
||||
alias gbt='git branch --track'
|
||||
alias gdel='git branch -D'
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
# shellcheck shell=bash
|
||||
about-alias 'kubectl aliases'
|
||||
|
||||
function _set_pkg_aliases() {
|
||||
if _command_exists kubectl; then
|
||||
alias kc='kubectl'
|
||||
alias kcgp='kubectl get pods'
|
||||
|
|
@ -15,6 +14,3 @@ function _set_pkg_aliases() {
|
|||
# launches a disposable netshoot pod in the k8s cluster
|
||||
alias kcnetshoot='kubectl run netshoot-$(date +%s) --rm -i --tty --image nicolaka/netshoot -- /bin/bash'
|
||||
fi
|
||||
}
|
||||
|
||||
_set_pkg_aliases
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
about-alias 'Aliases for Terraform and Terragrunt'
|
||||
|
||||
alias tf='terraform'
|
||||
alias tfi='tf init'
|
||||
alias tfv='terraform validate'
|
||||
alias tfp='terraform plan'
|
||||
alias tfa='terraform apply'
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ lint_clean_files.sh
|
|||
#
|
||||
completion/available/apm.completion.bash
|
||||
completion/available/awless.completion.bash
|
||||
completion/available/awscli.completion.bash
|
||||
completion/available/bash-it.completion.bash
|
||||
completion/available/brew.completion.bash
|
||||
completion/available/cargo.completion.bash
|
||||
|
|
@ -45,6 +46,7 @@ completion/available/dmidecode.completion.bash
|
|||
completion/available/docker-machine.completion.bash
|
||||
completion/available/docker.completion.bash
|
||||
completion/available/dotnet.completion.bash
|
||||
completion/available/flutter.completion.bash
|
||||
completion/available/gcloud.completion.bash
|
||||
completion/available/gem.completion.bash
|
||||
completion/available/git.completion.bash
|
||||
|
|
@ -74,6 +76,7 @@ completion/available/system.completion.bash
|
|||
completion/available/vault.completion.bash
|
||||
completion/available/vuejs.completion.bash
|
||||
completion/available/wpscan.completion.bash
|
||||
completion/available/yarn.completion.bash
|
||||
|
||||
# libraries
|
||||
lib/appearance.bash
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ function _bash-it-component-completion-callback-on-init-aliases() {
|
|||
fi
|
||||
|
||||
# skip aliases to pipes, boolean control structures and other command lists
|
||||
chars='\|\&\;\)\(\n\<\>'
|
||||
chars=$'|&;()<>\n'
|
||||
if [[ "${alias_defn}" =~ [$chars] ]]; then
|
||||
continue
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
# shellcheck shell=bash
|
||||
|
||||
if _command_exists aws_completer
|
||||
then
|
||||
if _command_exists aws_completer; then
|
||||
complete -C "$(command -v aws_completer)" aws
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -14,17 +14,17 @@ fi
|
|||
_bash_it_homebrew_check || return 0
|
||||
|
||||
if [[ -r "$BASH_IT_HOMEBREW_PREFIX/etc/bash_completion.d/brew" ]]; then
|
||||
# shellcheck disable=1090
|
||||
# shellcheck disable=1090,1091
|
||||
source "$BASH_IT_HOMEBREW_PREFIX/etc/bash_completion.d/brew"
|
||||
|
||||
elif [[ -r "$BASH_IT_HOMEBREW_PREFIX/Library/Contributions/brew_bash_completion.sh" ]]; then
|
||||
# shellcheck disable=1090
|
||||
# shellcheck disable=1090,1091
|
||||
source "$BASH_IT_HOMEBREW_PREFIX/Library/Contributions/brew_bash_completion.sh"
|
||||
|
||||
elif [[ -f "$BASH_IT_HOMEBREW_PREFIX/completions/bash/brew" ]]; then
|
||||
# For the git-clone based installation, see here for more info:
|
||||
# https://github.com/Bash-it/bash-it/issues/1458
|
||||
# https://docs.brew.sh/Shell-Completion
|
||||
# shellcheck disable=1090
|
||||
# shellcheck disable=1090,1091
|
||||
source "$BASH_IT_HOMEBREW_PREFIX/completions/bash/brew"
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/env bash
|
||||
# shellcheck shell=bash
|
||||
#
|
||||
# Bash completion support for Fabric (http://fabfile.org/)
|
||||
#
|
||||
|
|
@ -91,7 +91,7 @@ function __fab_completion() {
|
|||
-*)
|
||||
if [[ -z "${__FAB_COMPLETION_LONG_OPT}" ]]; then
|
||||
export __FAB_COMPLETION_LONG_OPT=$(
|
||||
fab --help | egrep -o "\-\-[A-Za-z_\-]+\=?" | sort -u)
|
||||
fab --help | grep -E -o "\-\-[A-Za-z_\-]+\=?" | sort -u)
|
||||
fi
|
||||
opts="${__FAB_COMPLETION_LONG_OPT}"
|
||||
;;
|
||||
|
|
@ -101,7 +101,7 @@ function __fab_completion() {
|
|||
# -*)
|
||||
# if [[ -z "${__FAB_COMPLETION_SHORT_OPT}" ]]; then
|
||||
# export __FAB_COMPLETION_SHORT_OPT=$(
|
||||
# fab --help | egrep -o "^ +\-[A-Za-z_\]" | sort -u)
|
||||
# fab --help | grep -E -o "^ +\-[A-Za-z_\]" | sort -u)
|
||||
# fi
|
||||
# opts="${__FAB_COMPLETION_SHORT_OPT}"
|
||||
# ;;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/bash
|
||||
# shellcheck shell=bash
|
||||
|
||||
if _command_exists flutter; then
|
||||
eval "$(flutter bash-completion)"
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
# shellcheck shell=bash
|
||||
|
||||
# Copyright (c) 2017 Eric Wendelin
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
|
|
@ -66,7 +68,7 @@ __gradle-generate-script-cache() {
|
|||
|
||||
if [[ ! $(find $cache_dir/$cache_name -mmin -$cache_ttl_mins 2>/dev/null) ]]; then
|
||||
# Cache all Gradle scripts
|
||||
local gradle_build_scripts=$(find $project_root_dir -type f -name "*.gradle" -o -name "*.gradle.kts" 2>/dev/null | egrep -v "$script_exclude_pattern")
|
||||
local gradle_build_scripts=$(find $project_root_dir -type f -name "*.gradle" -o -name "*.gradle.kts" 2>/dev/null | grep -E -v "$script_exclude_pattern")
|
||||
printf "%s\n" "${gradle_build_scripts[@]}" > $cache_dir/$cache_name
|
||||
fi
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
# shellcheck shell=bash
|
||||
|
||||
# Bash completion for Makefile
|
||||
# Loosely adapted from http://stackoverflow.com/a/38415982/1472048
|
||||
|
||||
|
|
@ -17,7 +19,7 @@ _makecomplete() {
|
|||
for f in "${files[@]}" ; do
|
||||
while IFS='' read -r line ; do
|
||||
targets+=("$line")
|
||||
done < <(grep -oE '^[a-zA-Z0-9_-]+:([^=]|$)' "$f" | cut -d':' -f1)
|
||||
done < <(grep -E -o '^[a-zA-Z0-9_-]+:([^=]|$)' "$f" | cut -d':' -f1)
|
||||
done
|
||||
|
||||
[ "${#targets[@]}" -eq 0 ] && return 0
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ _is_function _rl_enabled ||
|
|||
_pj() {
|
||||
_is_function _init_completion || return
|
||||
_is_function _rl_enabled || return
|
||||
[ -n "$PROJECT_PATHS" ] || return
|
||||
[ -n "$BASH_IT_PROJECT_PATHS" ] || return
|
||||
shift
|
||||
[ "$1" == "open" ] && shift
|
||||
|
||||
|
|
@ -21,7 +21,7 @@ _pj() {
|
|||
local -r mark_dirs=$(_rl_enabled mark-directories && echo y)
|
||||
local -r mark_symdirs=$(_rl_enabled mark-symlinked-directories && echo y)
|
||||
|
||||
for i in ${PROJECT_PATHS//:/$'\n'}; do
|
||||
for i in ${BASH_IT_PROJECT_PATHS//:/$'\n'}; do
|
||||
# create an array of matched subdirs
|
||||
k="${#COMPREPLY[@]}"
|
||||
for j in $( compgen -d $i/$cur ); do
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
# shellcheck shell=bash
|
||||
about-completion "yarn cli completions"
|
||||
|
||||
# shellcheck disable=SC1090 source=../../vendor/github.com/dsifford/yarn-completion/yarn
|
||||
source "${BASH_IT}/vendor/github.com/dsifford/yarn-completion/yarn"
|
||||
|
|
@ -4,7 +4,6 @@
|
|||

|
||||

|
||||

|
||||
[](https://web.libera.chat/?channel=#bash-it)
|
||||
|
||||
**Bash-it** is a collection of community Bash commands and scripts for Bash 3.2+.
|
||||
(And a shameless ripoff of [oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh) :smiley:)
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@
|
|||
# import sys
|
||||
# sys.path.insert(0, os.path.abspath('.'))
|
||||
|
||||
|
||||
# -- Project information -----------------------------------------------------
|
||||
|
||||
project = 'Bash-it'
|
||||
|
|
@ -24,7 +23,6 @@ author = 'Bash-it Team'
|
|||
# The full version, including alpha/beta/rc tags
|
||||
release = ''
|
||||
|
||||
|
||||
# -- General configuration ---------------------------------------------------
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be
|
||||
|
|
@ -41,8 +39,7 @@ templates_path = ['_templates']
|
|||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
# This pattern also affects html_static_path and html_extra_path.
|
||||
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
|
||||
|
||||
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', "venv"]
|
||||
|
||||
# -- Options for HTML output -------------------------------------------------
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
sphinx==3.2.1
|
||||
sphinx==4.5.0
|
||||
sphinx-rtd-theme==0.5.0
|
||||
sphinxemoji==0.1.8
|
||||
docutils==0.17.1
|
||||
|
|
|
|||
|
|
@ -8,13 +8,35 @@ A minimal theme with a clean git prompt
|
|||
Provided Information
|
||||
--------------------
|
||||
|
||||
|
||||
* Current git remote tool logo (support: github, gitlab, bitbucket)
|
||||
* Current path (red when user is root)
|
||||
* Current git info
|
||||
* Last command exit code (only shown when the exit code is greater than 0)
|
||||
* user@hostname for ssh connection
|
||||
|
||||
Default configuration
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
BARBUK_PROMPT="git-uptream-remote-logo ssh path scm python_venv ruby node terraform cloud duration exit"
|
||||
|
||||
You can override BARBUK_PROMPT to display only the desired information.
|
||||
|
||||
available block:
|
||||
|
||||
* git-uptream-remote-logo
|
||||
* ssh
|
||||
* path
|
||||
* scm
|
||||
* python_venv
|
||||
* ruby
|
||||
* node
|
||||
* terraform
|
||||
* cloud
|
||||
* duration
|
||||
* exit
|
||||
|
||||
Fonts and glyphs
|
||||
----------------
|
||||
|
||||
|
|
@ -39,6 +61,12 @@ Default theme glyphs
|
|||
BARBUK_EXIT_CODE_ICON=' '
|
||||
BARBUK_PYTHON_VENV_CHAR=' '
|
||||
BARBUK_COMMAND_DURATION_ICON=' '
|
||||
BARBUK_RUBY_CHAR=' '
|
||||
BARBUK_NODE_CHAR=' '
|
||||
BARBUK_TERRAFORM_CHAR="❲t❳ "
|
||||
BARBUK_AWS_PROFILE_CHAR=" aws "
|
||||
BARBUK_SCALEWAY_PROFILE_CHAR=" scw "
|
||||
BARBUK_GCLOUD_CHAR=" gcp "
|
||||
|
||||
Customize glyphs
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
|
|
|||
|
|
@ -8,9 +8,38 @@ Table of Contents
|
|||
|
||||
* `I'm stuck in the LightDM login screen after setting up bash-it. <im-stuck-in-the-lightdm-login-screen-after-setting-up-bash-it>`_
|
||||
|
||||
* `I'm getting strange line break and wrapping behaviour on macOS. <im-getting-strange-line-break-and-wrapping-behaviour-on-macos>`_
|
||||
|
||||
I'm stuck in the LightDM login screen after setting up bash-it
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
**Possible issue**\ : `#672 <https://github.com/Bash-it/bash-it/issues/672>`_
|
||||
|
||||
**Solution**\ : Check `this comment <https://github.com/Bash-it/bash-it/issues/672#issuecomment-257870653>`_ for detailed information about the cause and solution for this issue.
|
||||
|
||||
I'm getting strange line break and wrapping behaviour on macOS
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
**Possible issue**\ : `#1614 <https://github.com/Bash-it/bash-it/issues/1614>`_
|
||||
|
||||
**Solution**\ : Bash-it requires Bash 4.?? or later to run correctly. Any reasonably current Linux distribution should have shipped with a compatible version of Bash. However, macOS users must upgrade from the included, obsolete Bash version 3. While some functionality might work with Bash 3, there is no guarantee that everything will work perfectly. Thus, we recommend using `Homebrew <https://brew.sh/>`_ to ensure Bash is up to date:
|
||||
|
||||
x86 Mac
|
||||
^^^^^^^
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
brew install bash
|
||||
sudo sh -c 'echo /usr/local/bin/bash >> /etc/shells'
|
||||
chsh -s /usr/local/bin/bash
|
||||
|
||||
M1 Mac
|
||||
^^^^^^
|
||||
|
||||
Homebrew's default installation location on M1 is ``/opt/homebrew/bin/``:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
brew install bash
|
||||
sudo sh -c 'echo /opt/homebrew/bin/bash >> /etc/shells'
|
||||
chsh -s /opt/homebrew/bin/bash
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@ function _bash-it_show_usage() {
|
|||
echo "--no-modify-config (-n): Do not modify existing config file"
|
||||
echo "--append-to-config (-a): Keep existing config file and append bash-it templates at the end"
|
||||
echo "--overwrite-backup (-f): Overwrite existing backup"
|
||||
exit 0
|
||||
}
|
||||
|
||||
# enable a thing
|
||||
|
|
|
|||
|
|
@ -2,29 +2,48 @@
|
|||
#
|
||||
# Functions for measuring and reporting how long a command takes to run.
|
||||
|
||||
: "${COMMAND_DURATION_START_SECONDS:=${EPOCHREALTIME:-$SECONDS}}"
|
||||
# Get shell duration in decimal format regardless of runtime locale.
|
||||
# Notice: This function runs as a sub-shell - notice '(' vs '{'.
|
||||
function _shell_duration_en() (
|
||||
# DFARREL You would think LC_NUMERIC would do it, but not working in my local
|
||||
LC_ALL='en_US.UTF-8'
|
||||
printf "%s" "${EPOCHREALTIME:-$SECONDS}"
|
||||
)
|
||||
|
||||
: "${COMMAND_DURATION_START_SECONDS:=$(_shell_duration_en)}"
|
||||
: "${COMMAND_DURATION_ICON:=🕘}"
|
||||
: "${COMMAND_DURATION_MIN_SECONDS:=1}"
|
||||
|
||||
function _command_duration_pre_exec() {
|
||||
COMMAND_DURATION_START_SECONDS="${EPOCHREALTIME:-$SECONDS}"
|
||||
COMMAND_DURATION_START_SECONDS="$(_shell_duration_en)"
|
||||
}
|
||||
|
||||
function _command_duration_pre_cmd() {
|
||||
COMMAND_DURATION_START_SECONDS=""
|
||||
}
|
||||
|
||||
function _dynamic_clock_icon {
|
||||
local -i clock_hand=$(((${1:-${SECONDS}} % 12) + 90))
|
||||
local clock_hand
|
||||
# clock hand value is between 90 and 9b in hexadecimal.
|
||||
# so between 144 and 155 in base 10.
|
||||
printf -v clock_hand '%x' $(((${1:-${SECONDS}} % 12) + 144))
|
||||
printf -v 'COMMAND_DURATION_ICON' '%b' "\xf0\x9f\x95\x$clock_hand"
|
||||
}
|
||||
|
||||
function _command_duration() {
|
||||
[[ -n "${BASH_IT_COMMAND_DURATION:-}" ]] || return
|
||||
[[ -n "${COMMAND_DURATION_START_SECONDS:-}" ]] || return
|
||||
|
||||
local command_duration=0 command_start="${COMMAND_DURATION_START_SECONDS:-0}"
|
||||
local -i minutes=0 seconds=0 deciseconds=0
|
||||
local -i command_start_seconds="${command_start%.*}"
|
||||
local -i command_start_deciseconds=$((10#${command_start##*.}))
|
||||
local current_time="${EPOCHREALTIME:-$SECONDS}"
|
||||
command_start_deciseconds="${command_start_deciseconds:0:1}"
|
||||
local current_time
|
||||
current_time="$(_shell_duration_en)"
|
||||
local -i current_time_seconds="${current_time%.*}"
|
||||
local -i current_time_deciseconds="$((10#${current_time##*.}))"
|
||||
current_time_deciseconds="${current_time_deciseconds:0:1}"
|
||||
|
||||
if [[ "${command_start_seconds:-0}" -gt 0 ]]; then
|
||||
# seconds
|
||||
|
|
@ -40,17 +59,18 @@ function _command_duration() {
|
|||
command_duration=0
|
||||
fi
|
||||
|
||||
if ((command_duration > 0)); then
|
||||
if ((command_duration >= COMMAND_DURATION_MIN_SECONDS)); then
|
||||
minutes=$((command_duration / 60))
|
||||
seconds=$((command_duration % 60))
|
||||
fi
|
||||
|
||||
_dynamic_clock_icon "${command_duration}"
|
||||
if ((minutes > 0)); then
|
||||
printf "%s %s%dm %ds" "${COMMAND_DURATION_ICON:-}" "${COMMAND_DURATION_COLOR:-}" "$minutes" "$seconds"
|
||||
elif ((seconds >= COMMAND_DURATION_MIN_SECONDS)); then
|
||||
else
|
||||
printf "%s %s%d.%01ds" "${COMMAND_DURATION_ICON:-}" "${COMMAND_DURATION_COLOR:-}" "$seconds" "$deciseconds"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
_bash_it_library_finalize_hook+=("safe_append_preexec '_command_duration_pre_exec'")
|
||||
_bash_it_library_finalize_hook+=("safe_append_prompt_command '_command_duration_pre_cmd'")
|
||||
|
|
|
|||
|
|
@ -211,7 +211,7 @@ function _is_function() {
|
|||
_example '$ _is_function ls && echo exists'
|
||||
_group 'lib'
|
||||
local msg="${2:-Function '$1' does not exist}"
|
||||
if LC_ALL=C type -t "$1" | _bash-it-egrep -q 'function'; then
|
||||
if LC_ALL=C type -t "$1" | _bash-it-fgrep -q 'function'; then
|
||||
return 0
|
||||
else
|
||||
_log_debug "$msg"
|
||||
|
|
@ -290,6 +290,7 @@ function _bash-it-update-() {
|
|||
DIFF=$(git diff --name-status)
|
||||
if [[ -n "$DIFF" ]]; then
|
||||
echo -e "Local changes detected in bash-it directory. Clean '$BASH_IT' directory to proceed.\n$DIFF"
|
||||
popd > /dev/null || return
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
|
@ -334,7 +335,7 @@ function _bash-it-update-() {
|
|||
log_color="%Cred"
|
||||
fi
|
||||
|
||||
git log --format="${log_color}%h: %s (%an)" "${revision}"
|
||||
git log --no-merges --format="${log_color}%h: %s (%an)" "${revision}"
|
||||
echo ""
|
||||
|
||||
if [[ -n "${silent}" ]]; then
|
||||
|
|
|
|||
|
|
@ -60,15 +60,21 @@ function _bash-it-array-dedup() {
|
|||
printf '%s\n' "$@" | sort -u
|
||||
}
|
||||
|
||||
# Outputs a full path of the grep found on the filesystem
|
||||
# Runs `grep` with *just* the provided arguments
|
||||
function _bash-it-grep() {
|
||||
: "${BASH_IT_GREP:=$(type -p egrep || type -p grep)}"
|
||||
printf "%s" "${BASH_IT_GREP:-/usr/bin/grep}"
|
||||
: "${BASH_IT_GREP:=$(type -P grep)}"
|
||||
"${BASH_IT_GREP:-/usr/bin/grep}" "$@"
|
||||
}
|
||||
|
||||
# Runs `grep` with extended regular expressions
|
||||
# Runs `grep` with fixed-string expressions (-F)
|
||||
function _bash-it-fgrep() {
|
||||
: "${BASH_IT_GREP:=$(type -P grep)}"
|
||||
"${BASH_IT_GREP:-/usr/bin/grep}" -F "$@"
|
||||
}
|
||||
|
||||
# Runs `grep` with extended regular expressions (-E)
|
||||
function _bash-it-egrep() {
|
||||
: "${BASH_IT_GREP:=$(type -p egrep || type -p grep)}"
|
||||
: "${BASH_IT_GREP:=$(type -P grep)}"
|
||||
"${BASH_IT_GREP:-/usr/bin/grep}" -E "$@"
|
||||
}
|
||||
|
||||
|
|
@ -150,12 +156,12 @@ function _bash-it-component-list-matching() {
|
|||
|
||||
function _bash-it-component-list-enabled() {
|
||||
local IFS=$'\n' component="$1"
|
||||
_bash-it-component-help "${component}" | _bash-it-egrep '\[x\]' | awk '{print $1}' | sort -u
|
||||
_bash-it-component-help "${component}" | _bash-it-fgrep '[x]' | awk '{print $1}' | sort -u
|
||||
}
|
||||
|
||||
function _bash-it-component-list-disabled() {
|
||||
local IFS=$'\n' component="$1"
|
||||
_bash-it-component-help "${component}" | _bash-it-egrep -v '\[x\]' | awk '{print $1}' | sort -u
|
||||
_bash-it-component-help "${component}" | _bash-it-fgrep -v '[x]' | awk '{print $1}' | sort -u
|
||||
}
|
||||
|
||||
# Checks if a given item is enabled for a particular component/file-type.
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@
|
|||
# shellcheck disable=SC2002 # Prefer 'cat' for cleaner script
|
||||
mapfile -t FILES < <(
|
||||
cat clean_files.txt \
|
||||
| grep -v -E '^\s*$' \
|
||||
| grep -v -E '^\s*#' \
|
||||
| grep -E -v '^\s*$' \
|
||||
| grep -E -v '^\s*#' \
|
||||
| xargs -n1 -I{} find "{}" -type f
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# shellcheck shell=bash
|
||||
cite about-plugin
|
||||
about-plugin 'AWS helper functions'
|
||||
|
||||
|
|
@ -40,13 +41,13 @@ function __awskeys_help {
|
|||
function __awskeys_get {
|
||||
local ln=$(grep -n "\[ *$1 *\]" "${AWS_SHARED_CREDENTIALS_FILE}" | cut -d ":" -f 1)
|
||||
if [[ -n "${ln}" ]]; then
|
||||
tail -n +${ln} "${AWS_SHARED_CREDENTIALS_FILE}" | egrep -m 2 "aws_access_key_id|aws_secret_access_key"
|
||||
tail -n +${ln} "${AWS_SHARED_CREDENTIALS_FILE}" | egrep -m 1 "aws_session_token"
|
||||
tail -n +${ln} "${AWS_SHARED_CREDENTIALS_FILE}" | grep -F -m 2 -e "aws_access_key_id" -e "aws_secret_access_key"
|
||||
tail -n +${ln} "${AWS_SHARED_CREDENTIALS_FILE}" | grep -F -m 1 "aws_session_token"
|
||||
fi
|
||||
}
|
||||
|
||||
function __awskeys_list {
|
||||
local credentials_list="$((egrep '^\[ *[a-zA-Z0-9_-]+ *\]$' "${AWS_SHARED_CREDENTIALS_FILE}"; grep "\[profile" "${AWS_CONFIG_FILE}" | sed "s|\[profile |\[|g") | sort | uniq)"
|
||||
local credentials_list="$((grep -E '^\[ *[a-zA-Z0-9_-]+ *\]$' "${AWS_SHARED_CREDENTIALS_FILE}"; grep "\[profile" "${AWS_CONFIG_FILE}" | sed "s|\[profile |\[|g") | sort | uniq)"
|
||||
if [[ -n $"{credentials_list}" ]]; then
|
||||
echo -e "Available credentials profiles:\n"
|
||||
for profile in ${credentials_list}; do
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@ about-plugin 'Alert (BEL) when process ends after a threshold of seconds'
|
|||
|
||||
function precmd_return_notification() {
|
||||
local command_start="${COMMAND_DURATION_START_SECONDS:=0}"
|
||||
local current_time="${EPOCHREALTIME:-$SECONDS}"
|
||||
local current_time
|
||||
current_time="$(_shell_duration_en)"
|
||||
local -i command_duration="$((${current_time%.*} - ${command_start%.*}))"
|
||||
if [[ "${command_duration}" -gt "${NOTIFY_IF_COMMAND_RETURNS_AFTER:-5}" ]]; then
|
||||
printf '\a'
|
||||
|
|
|
|||
|
|
@ -8,13 +8,13 @@ function __() {
|
|||
function __make_ansi() {
|
||||
next=$1
|
||||
shift
|
||||
echo "\[\e[$("__$next" "$@")m\]"
|
||||
echo -e "\[\e[$("__$next" "$@")m\]"
|
||||
}
|
||||
|
||||
function __make_echo() {
|
||||
next=$1
|
||||
shift
|
||||
echo "\033[$("__$next" "$@")m"
|
||||
echo -e "\033[$("__$next" "$@")m"
|
||||
}
|
||||
|
||||
function __reset() {
|
||||
|
|
|
|||
|
|
@ -63,13 +63,16 @@ function dirs-help() {
|
|||
if [[ -f "${BASH_IT_DIRS_BKS?}" ]]; then
|
||||
# shellcheck disable=SC1090
|
||||
source "${BASH_IT_DIRS_BKS?}"
|
||||
elif [[ -f ~/.dirs ]]; then
|
||||
else
|
||||
mkdir -p "${BASH_IT_DIRS_BKS%/*}"
|
||||
if [[ -f ~/.dirs ]]; then
|
||||
mv -vn ~/.dirs "${BASH_IT_DIRS_BKS?}"
|
||||
# shellcheck disable=SC1090
|
||||
source "${BASH_IT_DIRS_BKS?}"
|
||||
else
|
||||
touch "${BASH_IT_DIRS_BKS?}"
|
||||
fi
|
||||
fi
|
||||
|
||||
alias L='cat "${BASH_IT_DIRS_BKS?}"'
|
||||
|
||||
|
|
|
|||
|
|
@ -30,8 +30,8 @@ function editpost() {
|
|||
pushd "${SITE}/_posts" > /dev/null || return
|
||||
|
||||
for POST in *; do
|
||||
DATE="$(echo "${POST}" | grep -oE "[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}")"
|
||||
TITLE="$(grep -oE "title: (.+)" < "${POST}")"
|
||||
DATE="$(echo "${POST}" | grep -E -o "[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}")"
|
||||
TITLE="$(grep -E -o "title: (.+)" < "${POST}")"
|
||||
TITLE="${TITLE/title: /}"
|
||||
echo "${COUNTER}) ${DATE} ${TITLE}"
|
||||
POSTS[COUNTER]="$POST"
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
# shellcheck shell=bash
|
||||
cite about-plugin
|
||||
about-plugin 'postgres helper functions'
|
||||
|
||||
|
|
@ -50,7 +51,7 @@ function postgres_status {
|
|||
|
||||
|
||||
function is_postgres_running {
|
||||
$POSTGRES_BIN/pg_ctl -D $PGDATA status | egrep -o "no server running"
|
||||
$POSTGRES_BIN/pg_ctl -D $PGDATA status | grep -F -o "no server running"
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ function pj() {
|
|||
# with the same name in project directories
|
||||
IFS=':' read -ra dests <<< "${BASH_IT_PROJECT_PATHS?${FUNCNAME[0]}: project working folders must be configured}"
|
||||
for d in "${!dests[@]}"; do
|
||||
if [[ ! -d "${dests[d]}" ]]; then
|
||||
if [[ ! -d "${dests[d]}/${proj}" ]]; then
|
||||
unset 'dests[d]'
|
||||
fi
|
||||
done
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ function local_setup_file() {
|
|||
|
||||
@test "plugins cmd-returned-notify: notify after elapsed time" {
|
||||
export NOTIFY_IF_COMMAND_RETURNS_AFTER=0
|
||||
export COMMAND_DURATION_START_SECONDS="${EPOCHREALTIME:-$SECONDS}"
|
||||
export COMMAND_DURATION_START_SECONDS="$(_shell_duration_en)"
|
||||
sleep 1
|
||||
run precmd_return_notification
|
||||
assert_success
|
||||
|
|
@ -18,7 +18,7 @@ function local_setup_file() {
|
|||
|
||||
@test "plugins cmd-returned-notify: do not notify before elapsed time" {
|
||||
export NOTIFY_IF_COMMAND_RETURNS_AFTER=10
|
||||
export COMMAND_DURATION_START_SECONDS="${EPOCHREALTIME:-$SECONDS}"
|
||||
export COMMAND_DURATION_START_SECONDS="$(_shell_duration_en)"
|
||||
sleep 1
|
||||
run precmd_return_notification
|
||||
assert_success
|
||||
|
|
@ -34,7 +34,7 @@ function local_setup_file() {
|
|||
@test "lib command_duration: preexec set COMMAND_DURATION_START_SECONDS" {
|
||||
export COMMAND_DURATION_START_SECONDS=
|
||||
assert_equal "${COMMAND_DURATION_START_SECONDS}" ""
|
||||
NOW="${EPOCHREALTIME:-$SECONDS}"
|
||||
NOW="$(_shell_duration_en)"
|
||||
_command_duration_pre_exec
|
||||
# We need to make sure to account for nanoseconds...
|
||||
assert_equal "${COMMAND_DURATION_START_SECONDS%.*}" "${NOW%.*}"
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ prompt_segment() {
|
|||
# declare -p codes
|
||||
|
||||
if [[ $CURRENT_BG != NONE && $1 != "$CURRENT_BG" ]]; then
|
||||
declare -a intermediate=("$(fg_color $CURRENT_BG)" "$(bg_color "$1")")
|
||||
declare -a intermediate=("$(fg_color "$CURRENT_BG")" "$(bg_color "$1")")
|
||||
debug "pre prompt " "$(ansi intermediate[@])"
|
||||
PR="$PR $(ansi intermediate[@])$SEGMENT_SEPARATOR"
|
||||
debug "post prompt " "$(ansi codes[@])"
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
# shellcheck shell=bash
|
||||
# shellcheck disable=SC2034 # Expected behavior for themes.
|
||||
# shellcheck disable=SC2154 #TODO: fix these all.
|
||||
|
||||
# Prompt defaut configuration
|
||||
BARBUK_PROMPT=${BARBUK_PROMPT:="git-uptream-remote-logo ssh path scm python_venv ruby node terraform cloud duration exit"}
|
||||
|
||||
# Theme custom glyphs
|
||||
# SCM
|
||||
SCM_GIT_CHAR_GITLAB=${BARBUK_GITLAB_CHAR:=' '}
|
||||
SCM_GIT_CHAR_BITBUCKET=${BARBUK_BITBUCKET_CHAR:=' '}
|
||||
SCM_GIT_CHAR_GITHUB=${BARBUK_GITHUB_CHAR:=' '}
|
||||
|
|
@ -10,13 +13,20 @@ SCM_GIT_CHAR_DEFAULT=${BARBUK_GIT_DEFAULT_CHAR:=' '}
|
|||
SCM_GIT_CHAR_ICON_BRANCH=${BARBUK_GIT_BRANCH_ICON:=''}
|
||||
SCM_HG_CHAR=${BARBUK_HG_CHAR:='☿ '}
|
||||
SCM_SVN_CHAR=${BARBUK_SVN_CHAR:='⑆ '}
|
||||
# Exit code
|
||||
EXIT_CODE_ICON=${BARBUK_EXIT_CODE_ICON:=' '}
|
||||
# Programming and tools
|
||||
PYTHON_VENV_CHAR=${BARBUK_PYTHON_VENV_CHAR:=' '}
|
||||
COMMAND_DURATION_ICON=${BARBUK_COMMAND_DURATION_ICON:-"$bold_blue "}
|
||||
RUBY_CHAR=${BARBUK_RUBY_CHAR:=' '}
|
||||
NODE_CHAR=${BARBUK_NODE_CHAR:=' '}
|
||||
TERRAFORM_CHAR=${BARBUK_TERRAFORM_CHAR:="❲t❳ "}
|
||||
# Cloud
|
||||
AWS_PROFILE_CHAR=${BARBUK_AWS_PROFILE_CHAR:=" aws "}
|
||||
SCALEWAY_PROFILE_CHAR=${BARBUK_SCALEWAY_PROFILE_CHAR:=" scw "}
|
||||
GCLOUD_CHAR=${BARBUK_GCLOUD_CHAR:=" google "}
|
||||
|
||||
# Command duration
|
||||
COMMAND_DURATION_MIN_SECONDS=${COMMAND_DURATION_MIN_SECONDS:-1}
|
||||
COMMAND_DURATION_COLOR="$normal"
|
||||
|
||||
# Ssh user and hostname display
|
||||
SSH_INFO=${BARBUK_SSH_INFO:=true}
|
||||
|
|
@ -24,24 +34,32 @@ HOST_INFO=${BARBUK_HOST_INFO:=long}
|
|||
|
||||
# Bash-it default glyphs customization
|
||||
SCM_NONE_CHAR=
|
||||
SCM_THEME_PROMPT_DIRTY=" ${bold_red}✗"
|
||||
SCM_THEME_PROMPT_CLEAN=" ${bold_green}✓"
|
||||
SCM_THEME_PROMPT_DIRTY=" ${bold_red?}✗"
|
||||
SCM_THEME_PROMPT_CLEAN=" ${bold_green?}✓"
|
||||
SCM_THEME_PROMPT_PREFIX="|"
|
||||
SCM_THEME_PROMPT_SUFFIX="${green}| "
|
||||
SCM_GIT_BEHIND_CHAR="${bold_red}↓${normal}"
|
||||
SCM_GIT_AHEAD_CHAR="${bold_green}↑${normal}"
|
||||
SCM_THEME_PROMPT_SUFFIX="${green?}| "
|
||||
SCM_GIT_BEHIND_CHAR="${bold_red?}↓${normal?}"
|
||||
SCM_GIT_AHEAD_CHAR="${bold_green?}↑${normal?}"
|
||||
SCM_GIT_UNTRACKED_CHAR="⌀"
|
||||
SCM_GIT_UNSTAGED_CHAR="${bold_yellow}•${normal}"
|
||||
SCM_GIT_STAGED_CHAR="${bold_green}+${normal}"
|
||||
GIT_THEME_PROMPT_DIRTY=" ${bold_red}✗"
|
||||
GIT_THEME_PROMPT_CLEAN=" ${bold_green}✓"
|
||||
GIT_THEME_PROMPT_PREFIX="${cyan}"
|
||||
GIT_THEME_PROMPT_SUFFIX="${cyan}"
|
||||
SCM_THEME_BRANCH_TRACK_PREFIX="${normal} ⤏ ${cyan}"
|
||||
SCM_GIT_UNSTAGED_CHAR="${bold_yellow?}•${normal?}"
|
||||
SCM_GIT_STAGED_CHAR="${bold_green?}+${normal?}"
|
||||
GIT_THEME_PROMPT_DIRTY=" ${bold_red?}✗"
|
||||
GIT_THEME_PROMPT_CLEAN=" ${bold_green?}✓"
|
||||
GIT_THEME_PROMPT_PREFIX="${cyan?}"
|
||||
GIT_THEME_PROMPT_SUFFIX="${cyan?}"
|
||||
SCM_THEME_BRANCH_TRACK_PREFIX="${normal?} ⤏ ${cyan?}"
|
||||
SCM_THEME_CURRENT_USER_PREFFIX=' '
|
||||
SCM_GIT_SHOW_CURRENT_USER=false
|
||||
NVM_THEME_PROMPT_PREFIX=''
|
||||
NVM_THEME_PROMPT_SUFFIX=''
|
||||
RVM_THEME_PROMPT_PREFIX=''
|
||||
RVM_THEME_PROMPT_SUFFIX=''
|
||||
RBENV_THEME_PROMPT_PREFIX=' '
|
||||
RBENV_THEME_PROMPT_SUFFIX=''
|
||||
RBFU_THEME_PROMPT_PREFIX=''
|
||||
RBFU_THEME_PROMPT_SUFFIX=''
|
||||
|
||||
function _git-uptream-remote-logo {
|
||||
function __git-uptream-remote-logo_prompt() {
|
||||
[[ "$(_git-upstream)" == "" ]] && SCM_GIT_CHAR="$SCM_GIT_CHAR_DEFAULT"
|
||||
|
||||
local remote remote_domain
|
||||
|
|
@ -57,36 +75,72 @@ function _git-uptream-remote-logo {
|
|||
bitbucket) SCM_GIT_CHAR="$SCM_GIT_CHAR_BITBUCKET" ;;
|
||||
*) SCM_GIT_CHAR="$SCM_GIT_CHAR_DEFAULT" ;;
|
||||
esac
|
||||
|
||||
echo "${purple?}$(scm_char)"
|
||||
}
|
||||
|
||||
function git_prompt_info {
|
||||
function git_prompt_info() {
|
||||
git_prompt_vars
|
||||
echo -e "on $SCM_GIT_CHAR_ICON_BRANCH $SCM_PREFIX$SCM_BRANCH$SCM_STATE$SCM_GIT_AHEAD$SCM_GIT_BEHIND$SCM_GIT_STASH$SCM_SUFFIX "
|
||||
}
|
||||
|
||||
function _exit-code {
|
||||
if [[ "$1" -ne 0 ]]; then
|
||||
exit_code=" ${purple}${EXIT_CODE_ICON}${yellow}${exit_code}${bold_orange}"
|
||||
function __exit_prompt() {
|
||||
if [[ "$exit_code" -ne 0 ]]; then
|
||||
echo "${purple?}${EXIT_CODE_ICON}${yellow?}${exit_code}${bold_orange?} "
|
||||
else
|
||||
exit_code="${bold_green}"
|
||||
echo "${bold_green}"
|
||||
fi
|
||||
}
|
||||
|
||||
function _prompt {
|
||||
local exit_code="$?" wrap_char=' ' dir_color=$green ssh_info='' python_venv='' host command_duration=
|
||||
|
||||
command_duration=$(_command_duration)
|
||||
|
||||
_exit-code exit_code
|
||||
_git-uptream-remote-logo
|
||||
|
||||
history -a
|
||||
|
||||
# Detect root shell
|
||||
if [ "$(whoami)" = root ]; then
|
||||
dir_color=$red
|
||||
function __aws_profile_prompt() {
|
||||
if [[ -n "${AWS_PROFILE}" ]]; then
|
||||
echo -n "${bold_purple?}${AWS_PROFILE_CHAR}${normal?}${AWS_PROFILE} "
|
||||
fi
|
||||
}
|
||||
|
||||
function __scaleway_profile_prompt() {
|
||||
if [[ -n "${SCW_PROFILE}" ]]; then
|
||||
echo -n "${bold_purple?}${SCALEWAY_PROFILE_CHAR}${normal?}${SCW_PROFILE} "
|
||||
fi
|
||||
}
|
||||
|
||||
function __gcloud_prompt() {
|
||||
local active_gcloud_account=""
|
||||
|
||||
active_gcloud_account="$(active_gcloud_account_prompt)"
|
||||
[[ -n "${active_gcloud_account}" ]] && echo "${bold_purple?}${GCLOUD_CHAR}${normal?}${active_gcloud_account} "
|
||||
}
|
||||
|
||||
function __cloud_prompt() {
|
||||
__aws_profile_prompt
|
||||
__scaleway_profile_prompt
|
||||
__gcloud_prompt
|
||||
}
|
||||
|
||||
function __terraform_prompt() {
|
||||
local terraform_workspace=""
|
||||
|
||||
if [ -d .terraform ]; then
|
||||
terraform_workspace="$(terraform_workspace_prompt)"
|
||||
[[ -n "${terraform_workspace}" ]] && echo "${bold_purple?}${TERRAFORM_CHAR}${normal?}${terraform_workspace} "
|
||||
fi
|
||||
}
|
||||
|
||||
function __node_prompt() {
|
||||
local node_version=""
|
||||
|
||||
node_version="$(node_version_prompt)"
|
||||
[[ -n "${node_version}" ]] && echo "${bold_purple?}${NODE_CHAR}${normal?}${node_version} "
|
||||
}
|
||||
|
||||
function __ruby_prompt() {
|
||||
local ruby_version=""
|
||||
|
||||
ruby_version="$(ruby_version_prompt)"
|
||||
[[ -n "${ruby_version}" ]] && echo "${bold_purple?}${RUBY_CHAR}${normal?}${ruby_version} "
|
||||
}
|
||||
|
||||
function __ssh_prompt() {
|
||||
# Detect ssh
|
||||
if [[ -n "${SSH_CONNECTION}" ]] && [ "$SSH_INFO" = true ]; then
|
||||
if [ "$HOST_INFO" = long ]; then
|
||||
|
|
@ -94,19 +148,56 @@ function _prompt {
|
|||
else
|
||||
host="\h"
|
||||
fi
|
||||
ssh_info="${bold_blue}\u${bold_orange}@${cyan}$host ${bold_orange}in"
|
||||
echo "${bold_blue?}\u${bold_orange?}@${cyan?}$host ${bold_orange?}in "
|
||||
fi
|
||||
}
|
||||
|
||||
function __python_venv_prompt() {
|
||||
# Detect python venv
|
||||
if [[ -n "${CONDA_DEFAULT_ENV}" ]]; then
|
||||
python_venv="$PYTHON_VENV_CHAR${CONDA_DEFAULT_ENV} "
|
||||
echo "${bold_purple?}$PYTHON_VENV_CHAR${normal?}${CONDA_DEFAULT_ENV} "
|
||||
elif [[ -n "${VIRTUAL_ENV}" ]]; then
|
||||
python_venv="$PYTHON_VENV_CHAR$(basename "${VIRTUAL_ENV}") "
|
||||
echo "${bold_purple?}$PYTHON_VENV_CHAR${normal?}$(basename "${VIRTUAL_ENV}") "
|
||||
fi
|
||||
}
|
||||
|
||||
function __path_prompt() {
|
||||
local dir_color=${green?}
|
||||
# Detect root shell
|
||||
if [ "$(whoami)" = root ]; then
|
||||
dir_color=${red?}
|
||||
fi
|
||||
|
||||
echo "${dir_color}\w${normal} "
|
||||
}
|
||||
|
||||
function __scm_prompt() {
|
||||
scm_prompt_info
|
||||
}
|
||||
|
||||
function __duration_prompt() {
|
||||
[[ -n "$command_duration" ]] && echo "${command_duration} "
|
||||
}
|
||||
|
||||
function __prompt-command() {
|
||||
exit_code="$?"
|
||||
command_duration=$(_command_duration)
|
||||
local wrap_char
|
||||
|
||||
# Generate prompt
|
||||
PS1="\n "
|
||||
for segment in $BARBUK_PROMPT; do
|
||||
local info
|
||||
info="$(__"${segment}"_prompt)"
|
||||
[[ -n "${info}" ]] && PS1+="${info}"
|
||||
done
|
||||
|
||||
# Cut prompt when it's too long
|
||||
if [[ ${#PS1} -gt $((COLUMNS * 2)) ]]; then
|
||||
wrap_char="\n"
|
||||
fi
|
||||
|
||||
PS1="\\n${ssh_info} ${purple}$(scm_char)${python_venv}${dir_color}\\w${normal}$(scm_prompt_info)${command_duration}${exit_code}"
|
||||
[[ ${#PS1} -gt $((COLUMNS * 2)) ]] && wrap_char="\\n"
|
||||
PS1="${PS1}${wrap_char}❯${normal} "
|
||||
}
|
||||
|
||||
safe_append_prompt_command _prompt
|
||||
safe_append_prompt_command __prompt-command
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# git branch parser
|
||||
function parse_git_branch() {
|
||||
echo -e "\033[1;34m$(git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/')\033[0m"
|
||||
echo -e "\[\033[1;34m\]$(git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/')\[\033[0m\]"
|
||||
}
|
||||
|
||||
function parse_git_branch_no_color() {
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
# shellcheck shell=bash
|
||||
|
||||
# port of zork theme
|
||||
|
||||
# set colors for use throughout the prompt
|
||||
|
|
@ -50,7 +52,7 @@ function is_integer() { # helper function for todo-txt-count
|
|||
|
||||
todo_txt_count() {
|
||||
if `hash todo.sh 2>&-`; then # is todo.sh installed
|
||||
count=`todo.sh ls | egrep "TODO: [0-9]+ of ([0-9]+) tasks shown" | awk '{ print $4 }'`
|
||||
count=`todo.sh ls | grep -E "TODO: [0-9]+ of ([0-9]+) tasks shown" | awk '{ print $4 }'`
|
||||
if is_integer $count; then # did we get a sane answer back
|
||||
echo "${BRACKET_COLOR}[${STRING_COLOR}T:$count${BRACKET_COLOR}]$normal"
|
||||
fi
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue