From 82973c34985b14d29fb592f59947b916ccb776ed Mon Sep 17 00:00:00 2001 From: rkiel Date: Thu, 9 Nov 2017 10:20:29 -0500 Subject: [PATCH] installer: added prompt --- install/lib/setup/commander.rb | 4 ++ install/lib/setup/prompt.rb | 114 +++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 install/lib/setup/prompt.rb diff --git a/install/lib/setup/commander.rb b/install/lib/setup/commander.rb index 9c069b5..c060ad4 100644 --- a/install/lib/setup/commander.rb +++ b/install/lib/setup/commander.rb @@ -2,6 +2,8 @@ require 'ostruct' require 'optparse' require 'json' +require_relative './prompt' + module Setup class Commander @@ -51,10 +53,12 @@ module Setup f.puts 'source ~/GitHub/rkiel/git-utilities/dotfiles/git-completion.bash' f.puts 'source ~/GitHub/rkiel/git-utilities/dotfiles/git-prompt.sh' f.puts "export FEATURE_USER=#{options.user}" if options.user + f.puts "export PS1='#{Setup::Prompt.new.generate(options)}'" f.puts '#############################################################' f.puts end + File.open("#{ENV['HOME']}/.bashrc", "a") do |f| f.puts f.puts '#############################################################' diff --git a/install/lib/setup/prompt.rb b/install/lib/setup/prompt.rb new file mode 100644 index 0000000..6c6a636 --- /dev/null +++ b/install/lib/setup/prompt.rb @@ -0,0 +1,114 @@ +module Setup + + class Prompt + USERNAME = '\u' + ABSOLUTE = '\w' + RELATIVE = '\W' + PROMPT = '\$' + HOSTNAME = '\h' + GIT = '$(__git_ps1 " %s")' + + # Reset + Color_Off='\e[0m' # Text Reset + + # Regular Colors + Black='\e[0;30m' # Black + Red='\e[0;31m' # Red + Green='\e[0;32m' # Green + Yellow='\e[0;33m' # Yellow + Blue='\e[0;34m' # Blue + Purple='\e[0;35m' # Purple + Cyan='\e[0;36m' # Cyan + White='\e[0;37m' # White + + # Bold + BBlack='\e[1;30m' # Black + BRed='\e[1;31m' # Red + BGreen='\e[1;32m' # Green + BYellow='\e[1;33m' # Yellow + BBlue='\e[1;34m' # Blue + BPurple='\e[1;35m' # Purple + BCyan='\e[1;36m' # Cyan + BWhite='\e[1;37m' # White + + # Underline + UBlack='\e[4;30m' # Black + URed='\e[4;31m' # Red + UGreen='\e[4;32m' # Green + UYellow='\e[4;33m' # Yellow + UBlue='\e[4;34m' # Blue + UPurple='\e[4;35m' # Purple + UCyan='\e[4;36m' # Cyan + UWhite='\e[4;37m' # White + + # Background + On_Black='\e[40m' # Black + On_Red='\e[41m' # Red + On_Green='\e[42m' # Green + On_Yellow='\e[43m' # Yellow + On_Blue='\e[44m' # Blue + On_Purple='\e[45m' # Purple + On_Cyan='\e[46m' # Cyan + On_White='\e[47m' # White + + # High Intensity + IBlack='\e[0;90m' # Black + IRed='\e[0;91m' # Red + IGreen='\e[0;92m' # Green + IYellow='\e[0;93m' # Yellow + IBlue='\e[0;94m' # Blue + IPurple='\e[0;95m' # Purple + ICyan='\e[0;96m' # Cyan + IWhite='\e[0;97m' # White + + # Bold High Intensity + BIBlack='\e[1;90m' # Black + BIRed='\e[1;91m' # Red + BIGreen='\e[1;92m' # Green + BIYellow='\e[1;93m' # Yellow + BIBlue='\e[1;94m' # Blue + BIPurple='\e[1;95m' # Purple + BICyan='\e[1;96m' # Cyan + BIWhite='\e[1;97m' # White + + # High Intensity backgrounds + On_IBlack='\e[0;100m' # Black + On_IRed='\e[0;101m' # Red + On_IGreen='\e[0;102m' # Green + On_IYellow='\e[0;103m' # Yellow + On_IBlue='\e[0;104m' # Blue + On_IPurple='\e[0;105m' # Purple + On_ICyan='\e[0;106m' # Cyan + On_IWhite='\e[0;107m' # White + + def generate (options) + values = [] + values << '[' + values << color(Purple) + values << USERNAME + values << '@' + values << HOSTNAME + values << color(Color_Off) + values << ' ' + values << color(BBlue) + values << RELATIVE + values << color(Green) + values << GIT + values << color(Color_Off) + values << ']' + values << PROMPT + values << ' ' + + values.join('') + end + + private + + def color (value) + '\['+value+'\]' + end + + + end + +end