diff options
-rw-r--r-- | TODO.md | 2 | ||||
-rw-r--r-- | files/bash.bashrc | 58 | ||||
-rwxr-xr-x | files/prompt | 43 | ||||
-rw-r--r-- | manifests/init.pp | 19 | ||||
l---------[-rwxr-xr-x] | prompt | 51 |
5 files changed, 122 insertions, 51 deletions
@@ -1,4 +1,4 @@ TODO ==== -* Nothing here? :P +* Rename project to 'shellprompt'. diff --git a/files/bash.bashrc b/files/bash.bashrc new file mode 100644 index 0000000..27686d6 --- /dev/null +++ b/files/bash.bashrc @@ -0,0 +1,58 @@ +# System-wide .bashrc file for interactive bash(1) shells. + +# To enable the settings / commands in this file for login shells as well, +# this file has to be sourced in /etc/profile. + +# If not running interactively, don't do anything +[ -z "$PS1" ] && return + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, overwrite the one in /etc/profile) +#PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' + +# set a fancy prompt +. /etc/profile.d/prompt.sh + +# Commented out, don't overwrite xterm -T "title" -n "icontitle" by default. +# If this is an xterm set the title to user@host:dir +#case "$TERM" in +#xterm*|rxvt*) +# PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"' +# ;; +#*) +# ;; +#esac + +# enable bash completion in interactive shells +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi + +# if the command-not-found package is installed, use it +if [ -x /usr/lib/command-not-found -o -x /usr/share/command-not-found/command-not-found ]; then + function command_not_found_handle { + # check because c-n-f could've been removed in the meantime + if [ -x /usr/lib/command-not-found ]; then + /usr/lib/command-not-found -- "$1" + return $? + elif [ -x /usr/share/command-not-found/command-not-found ]; then + /usr/share/command-not-found/command-not-found -- "$1" + return $? + else + printf "%s: command not found\n" "$1" >&2 + return 127 + fi + } +fi diff --git a/files/prompt b/files/prompt new file mode 100755 index 0000000..e4d4ddf --- /dev/null +++ b/files/prompt @@ -0,0 +1,43 @@ +#!/bin/bash +# +# Fancy bash prompt. +# See http://www.debian-administration.org/article/Fancy_Bash_Prompts +# + +command_prompt() { + exit_status="$?" + # colors + COLOR_RED="\[\033[31m\]" + COLOR_GREEN="\[\033[32m\]" + COLOR_YELLOW="\[\033[33m\]" + COLOR_BLUE="\[\033[34m\]" + COLOR_MAGENTA="\[\033[35m\]" + COLOR_CYAN="\[\033[36m\]" + + COLOR_RED_BOLD="\[\033[31;1m\]" + COLOR_GREEN_BOLD="\[\033[32;1m\]" + COLOR_YELLOW_BOLD="\[\033[33;1m\]" + COLOR_BLUE_BOLD="\[\033[34;1m\]" + COLOR_MAGENTA_BOLD="\[\033[35;1m\]" + COLOR_CYAN_BOLD="\[\033[36;1m\]" + + COLOR_NONE="\[\033[0m\]" + BOLD="\[\033[1m\]" + + if [ "$exit_status" == "0" ]; then + status_color="${COLOR_GREEN}" + else + status_color="${COLOR_RED_BOLD}" + fi + + # Yellow blue theme with git completion + PS1="${status_color}${exit_status}${COLOR_NONE} ${COLOR_CYAN}\D{%Y%m%d %H:%M:%S}${COLOR_NONE} ${COLOR_CYAN}${debian_chroot:+($debian_chroot) }${COLOR_NONE}${COLOR_YELLOW}\u@\h${COLOR_NONE}:${COLOR_CYAN}\w$(__git_ps1 " (%s)")${COLOR_NONE} \\$ " + PS2="${BOLD}>${OFF} " +} + +# Older systems doesn't source git completion by default +if ! type __git_ps1 &> /dev/null && [ -e "/etc/bash_completion.d/git" ]; then + source /etc/bash_completion.d/git +fi + +PROMPT_COMMAND="command_prompt" diff --git a/manifests/init.pp b/manifests/init.pp new file mode 100644 index 0000000..ed293d3 --- /dev/null +++ b/manifests/init.pp @@ -0,0 +1,19 @@ +class shellprompt { + file { "/etc/profile.d/prompt.sh": + source => "puppet:///modules/shellprompt/prompt", + owner => "root", + group => "root", + mode => 0644, + ensure => present, + } + + # Ideally we should not manage this file, see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=675008 + file { "/etc/bash.bashrc": + source => "puppet:///modules/shellprompt/bash.bashrc", + owner => "root", + group => "root", + mode => 0644, + ensure => present, + require => File['/etc/profile.d/prompt.sh'], + } +} @@ -1,50 +1 @@ -#!/bin/bash -# -# Fancy bash prompt. -# See http://www.debian-administration.org/article/Fancy_Bash_Prompts -# - -command_prompt() { - exit_status="$?" - # colors - COLOR_RED="\[\033[31m\]" - COLOR_GREEN="\[\033[32m\]" - COLOR_YELLOW="\[\033[33m\]" - COLOR_BLUE="\[\033[34m\]" - COLOR_MAGENTA="\[\033[35m\]" - COLOR_CYAN="\[\033[36m\]" - - COLOR_RED_BOLD="\[\033[31;1m\]" - COLOR_GREEN_BOLD="\[\033[32;1m\]" - COLOR_YELLOW_BOLD="\[\033[33;1m\]" - COLOR_BLUE_BOLD="\[\033[34;1m\]" - COLOR_MAGENTA_BOLD="\[\033[35;1m\]" - COLOR_CYAN_BOLD="\[\033[36;1m\]" - - COLOR_NONE="\[\033[0m\]" - BOLD="\[\033[1m\]" - - if [ "$exit_status" == "0" ]; then - status_color="${COLOR_GREEN}" - else - status_color="${COLOR_RED_BOLD}" - fi - - # Without git completion - #PS1="(${status_color}${exit_status}${COLOR_NONE}) [${COLOR_RED}\D{%Y%m%d %H:%M:%S}${COLOR_NONE}] ${COLOR_CYAN}${debian_chroot:+($debian_chroot) }${COLOR_NONE}${COLOR_GREEN}\u@\h${COLOR_NONE}:${COLOR_CYAN}\w${COLOR_NONE} \\$ " - - # Red green theme with git completion - #PS1="(${status_color}${exit_status}${COLOR_NONE}) [${COLOR_RED}\D{%Y%m%d %H:%M:%S}${COLOR_NONE}] ${COLOR_CYAN}${debian_chroot:+($debian_chroot) }${COLOR_NONE}${COLOR_GREEN}\u@\h${COLOR_NONE}:${COLOR_CYAN}\w$(__git_ps1 " (%s)")${COLOR_NONE} \\$ " - #PS2="${BOLD}>${OFF} " - - # Yellow blue theme with git completion - PS1="${status_color}${exit_status}${COLOR_NONE} ${COLOR_CYAN}\D{%Y%m%d %H:%M:%S}${COLOR_NONE} ${COLOR_CYAN}${debian_chroot:+($debian_chroot) }${COLOR_NONE}${COLOR_YELLOW}\u@\h${COLOR_NONE}:${COLOR_CYAN}\w$(__git_ps1 " (%s)")${COLOR_NONE} \\$ " - PS2="${BOLD}>${OFF} " -} - -# Older systems doesn't source git completion by default -if ! type __git_ps1 &> /dev/null && [ -e "/etc/bash_completion.d/git" ]; then - source /etc/bash_completion.d/git -fi - -PROMPT_COMMAND="command_prompt" +files/prompt
\ No newline at end of file |