From b180ac33227e9d7125bb04932fdbc9b851906c84 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Thu, 25 Feb 2016 15:07:27 -0300 Subject: Turn into a puppet module --- TODO.md | 2 +- files/bash.bashrc | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ files/prompt | 43 +++++++++++++++++++++++++++++++++++++++++ manifests/init.pp | 19 ++++++++++++++++++ prompt | 51 +----------------------------------------------- 5 files changed, 122 insertions(+), 51 deletions(-) create mode 100644 files/bash.bashrc create mode 100755 files/prompt create mode 100644 manifests/init.pp mode change 100755 => 120000 prompt diff --git a/TODO.md b/TODO.md index 8ab655d..fc45680 100644 --- a/TODO.md +++ b/TODO.md @@ -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'], + } +} diff --git a/prompt b/prompt deleted file mode 100755 index ddfc5a2..0000000 --- a/prompt +++ /dev/null @@ -1,50 +0,0 @@ -#!/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" diff --git a/prompt b/prompt new file mode 120000 index 0000000..0bb5038 --- /dev/null +++ b/prompt @@ -0,0 +1 @@ +files/prompt \ No newline at end of file -- cgit v1.2.3