rprompt 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -0
- data/README.md +36 -14
- data/bin/rprompt +84 -27
- data/files/config.yml +5 -11
- data/files/rprompt.png +0 -0
- data/lib/rprompt.rb +9 -40
- data/lib/rprompt/deco.rb +21 -0
- data/lib/rprompt/termcolor.rb +5 -0
- data/lib/rprompt/version.rb +2 -2
- data/rprompt.gemspec +3 -1
- metadata +6 -26
- data/doc/Rprompt.html +0 -129
- data/doc/Rprompt/GitBranch.html +0 -335
- data/doc/Rprompt/GitNumbers.html +0 -335
- data/doc/Rprompt/GitSha.html +0 -335
- data/doc/Rprompt/GitTrack.html +0 -455
- data/doc/Rprompt/PromptItem.html +0 -516
- data/doc/Rprompt/RvmGemset.html +0 -353
- data/doc/Rprompt/RvmRuby.html +0 -345
- data/doc/String.html +0 -136
- data/doc/_index.html +0 -188
- data/doc/class_list.html +0 -54
- data/doc/css/common.css +0 -1
- data/doc/css/full_list.css +0 -57
- data/doc/css/style.css +0 -338
- data/doc/file.README.html +0 -168
- data/doc/file_list.html +0 -56
- data/doc/frames.html +0 -28
- data/doc/index.html +0 -168
- data/doc/js/app.js +0 -214
- data/doc/js/full_list.js +0 -178
- data/doc/js/jquery.js +0 -4
- data/doc/method_list.html +0 -155
- data/doc/top-level-namespace.html +0 -114
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -3,10 +3,12 @@
|
|
3
3
|
|
4
4
|
Pimp your prompt :-)
|
5
5
|
|
6
|
-
This prompt is a shameless port (and enhancement) of the "Informative git prompt for bash and fish" which you can find [here](https://github.com/magicmonty/bash-git-prompt.git)
|
6
|
+
This prompt is a shameless port (and enhancement) of the "Informative git prompt for bash and fish" which you can find [here](https://github.com/magicmonty/bash-git-prompt.git).
|
7
7
|
|
8
8
|
This gem is targeted toward users who use ruby, rvm and git. It will improve your ``bash`` prompt by displaying information about the current git repository or the rvm ruby version and gemset.
|
9
9
|
|
10
|
+

|
11
|
+
|
10
12
|
## Usage
|
11
13
|
|
12
14
|
The prompt is customizable via a yaml file that enables you to:
|
@@ -21,7 +23,26 @@ The prompt is customizable via a yaml file that enables you to:
|
|
21
23
|
|
22
24
|
Using the layout is actually very easy: throw the name of the options around, add white spaces, delimiters, etc... Save, hit enter in your shell, done!
|
23
25
|
|
24
|
-
|
26
|
+
## Tips
|
27
|
+
|
28
|
+
A few recommandations to make your life easier ;)
|
29
|
+
|
30
|
+
* Install this gem in your **global** gemset. This way, rprompt will be available everywhere, whatever gemset you're using
|
31
|
+
|
32
|
+
* When upgrading save your config file and create a new one with ``rpromptconf`` (specially for minor and major releases)
|
33
|
+
|
34
|
+
* If you edit the config.yml file with vi and can not see the symbols characters correctly, try ``:set encoding=utf-8`` (you might want to put this in your ``.vimrc``)
|
35
|
+
|
36
|
+
* If you don't want a fancy symbol or color, but still want the option use ``:none``
|
37
|
+
|
38
|
+
:modified:
|
39
|
+
:none:
|
40
|
+
|
41
|
+
* The layout is just a string of option names (status , modified, staged ...) concatenated in the order you want them to appear, with or without white spaces, or what ever you characters you choose.
|
42
|
+
|
43
|
+
* Report bugs ;)
|
44
|
+
|
45
|
+
## Git examples
|
25
46
|
|
26
47
|
The prompt may look like the following:
|
27
48
|
|
@@ -43,37 +64,38 @@ The symbols are as follows:
|
|
43
64
|
- ``↑n``: ahead of remote by ``n`` commits
|
44
65
|
- ``↓n``: behind remote by ``n`` commits
|
45
66
|
|
46
|
-
|
67
|
+
## Rvm examples
|
47
68
|
|
48
69
|
* ∆1.9.3-p448: ruby version 1.9.3
|
49
70
|
* ›global: using the global gemset
|
50
71
|
|
51
72
|
## Installation
|
52
73
|
|
53
|
-
|
74
|
+
``$ gem install rprompt``
|
54
75
|
|
55
76
|
Once the gem is installed,
|
56
77
|
|
57
|
-
|
78
|
+
``$ rpromptconf``
|
58
79
|
|
59
|
-
This will provide a standard config file:
|
80
|
+
This will provide a standard config file: `$HOME/.rprompt/config.yml`
|
60
81
|
|
61
82
|
To make the magic happen:
|
62
83
|
|
63
84
|
* edit your ~/.bashrc or ~/.bash_profile
|
64
85
|
(depending on your preferences and setup)
|
65
86
|
* if you're setting PS1 already, comment it while you're using rprompt
|
66
|
-
* paste the following
|
87
|
+
* paste the following line at the end of the file
|
88
|
+
|
89
|
+
``PROMPT_COMMAND="PS1=\"\$(rprompt)\";"``
|
67
90
|
|
68
|
-
Tested on MacOS 10.8.4
|
69
|
-
---
|
70
|
-
# Setting terminal promt with rprompt gem
|
71
|
-
PROMPT_COMMAND="PS1=\"\$(rprompt)\";"
|
72
|
-
---
|
73
91
|
|
74
92
|
* quit your terminal and re-open it for the change to take effect.
|
75
93
|
|
76
94
|
Edit $HOME/.rprompt/config.yml to change the configuration.
|
77
|
-
(you can always re-install the default configuration by issuing
|
95
|
+
(you can always re-install the default configuration by issuing ``rpromptconf``)
|
96
|
+
|
97
|
+
Enjoy :\)
|
98
|
+
|
99
|
+
---
|
78
100
|
|
79
|
-
|
101
|
+
<sub>Tested on MacOS 10.8.4 and Fedora 19</sub>
|
data/bin/rprompt
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
|
4
4
|
require 'yaml'
|
5
5
|
require 'rprompt'
|
6
|
+
require 'pp'
|
6
7
|
|
7
8
|
configFile = "#{File.expand_path('~')}/.rprompt/config.yml"
|
8
9
|
begin
|
@@ -13,49 +14,105 @@ rescue => err
|
|
13
14
|
exit
|
14
15
|
end
|
15
16
|
|
17
|
+
if config.class == Hash
|
16
18
|
stdPrompt = config[:stdprompt] if config.has_key?(:stdprompt)
|
17
19
|
gitConfig = config[:git] if config.has_key?(:git)
|
18
20
|
gitLayout = gitConfig[:layout] if gitConfig
|
19
21
|
rvmConfig = config[:rvm] if config.has_key?(:rvm)
|
20
22
|
rvmLayout = rvmConfig[:layout] if rvmConfig
|
23
|
+
else
|
24
|
+
puts "rprompt config seems to be empty?"
|
25
|
+
print '\u@\h $'
|
26
|
+
exit 1
|
27
|
+
end
|
28
|
+
|
29
|
+
if File.exist?(".git") && gitConfig && gitLayout
|
30
|
+
if gitConfig[:status]
|
31
|
+
status = Rprompt::GitNumbers.new(gitConfig[:status].merge({:cmd => "git status -s"}))
|
32
|
+
else
|
33
|
+
status = Rprompt::GitNumbers.new({:cmd => "git status -s"})
|
34
|
+
end
|
21
35
|
|
22
|
-
if
|
23
|
-
staged = Rprompt::GitNumbers.new(gitConfig[:staged])
|
24
|
-
modified = Rprompt::GitNumbers.new(gitConfig[:modified])
|
25
|
-
untracked = Rprompt::GitNumbers.new(gitConfig[:untracked])
|
26
|
-
unmerged = Rprompt::GitNumbers.new(gitConfig[:unmerged])
|
27
|
-
branch = Rprompt::GitBranch.new(gitConfig[:branch])
|
28
|
-
ahead = Rprompt::GitTrack.new(gitConfig[:ahead], "ahead")
|
29
|
-
behind = Rprompt::GitTrack.new(gitConfig[:behind], "behind")
|
30
|
-
sha = Rprompt::GitSha.new(gitConfig[:sha])
|
31
|
-
|
32
|
-
if staged.numberOfFiles == 0 && untracked.numberOfFiles == 0 && unmerged.numberOfFiles == 0 && modified.numberOfFiles == 0
|
36
|
+
if status.numberOfFiles == 0
|
33
37
|
gitLayout.gsub!(/staged|modified|untracked|unmerged/, '')
|
34
|
-
gitLayout.gsub!(/
|
38
|
+
gitLayout.gsub!(/status/, "✔".send(:green)) if gitLayout.include?("status")
|
39
|
+
else
|
40
|
+
if gitConfig[:staged]
|
41
|
+
staged = Rprompt::GitNumbers.new(gitConfig[:staged].merge({:cmd => "git diff --staged --name-status"}))
|
42
|
+
gitLayout.gsub!(/staged/, staged.show) if gitLayout.include?("staged")
|
43
|
+
else
|
44
|
+
gitLayout.gsub!(/staged/, '')
|
45
|
+
end
|
46
|
+
|
47
|
+
if gitConfig[:modified]
|
48
|
+
modified = Rprompt::GitNumbers.new(gitConfig[:modified].merge({:cmd => "git diff --name-status"}))
|
49
|
+
gitLayout.gsub!(/modified/, modified.show) if gitLayout.include?("modified")
|
50
|
+
else
|
51
|
+
gitLayout.gsub!(/modified/, '')
|
52
|
+
end
|
53
|
+
|
54
|
+
if gitConfig[:untracked]
|
55
|
+
untracked = Rprompt::GitNumbers.new(gitConfig[:untracked].merge({:cmd => "git ls-files --other --exclude-standard"}))
|
56
|
+
gitLayout.gsub!(/untracked/, untracked.show) if gitLayout.include?("untracked")
|
57
|
+
else
|
58
|
+
gitLayout.gsub!(/untracked/, '')
|
59
|
+
end
|
60
|
+
|
61
|
+
if gitConfig[:unmerged]
|
62
|
+
unmerged = Rprompt::GitNumbers.new(gitConfig[:unmerged].merge({:cmd => "git diff --name-status --diff-filter=U"}))
|
63
|
+
gitLayout.gsub!(/unmerged/, unmerged.show) if gitLayout.include?("unmerged")
|
64
|
+
else
|
65
|
+
gitLayout.gsub!(/unmerged/, '')
|
66
|
+
end
|
67
|
+
|
68
|
+
gitLayout.gsub!(/status/, "") if gitLayout.include?("status")
|
69
|
+
end
|
70
|
+
|
71
|
+
if gitConfig[:branch]
|
72
|
+
branch = Rprompt::GitBranch.new(gitConfig[:branch].merge({:cmd => "git symbolic-ref HEAD"}))
|
73
|
+
gitLayout.gsub!(/branch/, branch.show) if gitLayout.include?("branch")
|
35
74
|
else
|
36
|
-
gitLayout.gsub!(/
|
37
|
-
gitLayout.gsub!(/staged/, staged.show) if gitLayout.include?("staged")
|
38
|
-
gitLayout.gsub!(/modified/, modified.show) if gitLayout.include?("modified")
|
39
|
-
gitLayout.gsub!(/untracked/, untracked.show) if gitLayout.include?("untracked")
|
40
|
-
gitLayout.gsub!(/unmerged/, unmerged.show) if gitLayout.include?("unmerged")
|
75
|
+
gitLayout.gsub!(/branch/, '')
|
41
76
|
end
|
42
77
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
78
|
+
if gitConfig[:ahead]
|
79
|
+
ahead = Rprompt::GitTrack.new(gitConfig[:ahead].merge({:cmd => "git branch -v"}), "ahead")
|
80
|
+
gitLayout.gsub!(/ahead/, ahead.show) if gitLayout.include?("ahead")
|
81
|
+
else
|
82
|
+
gitLayout.gsub!(/ahead/, '')
|
83
|
+
end
|
84
|
+
|
85
|
+
if gitConfig[:behind]
|
86
|
+
behind = Rprompt::GitTrack.new(gitConfig[:behind].merge({:cmd => "git branch -v"}), "behind")
|
87
|
+
gitLayout.gsub!(/behind/, behind.show) if gitLayout.include?("behind")
|
88
|
+
else
|
89
|
+
gitLayout.gsub!(/behind/, '')
|
90
|
+
end
|
91
|
+
if gitConfig[:sha]
|
92
|
+
sha = Rprompt::GitSha.new(gitConfig[:sha].merge({:cmd => "git rev-parse HEAD"}))
|
93
|
+
gitLayout.gsub!(/sha/, sha.show) if gitLayout.include?("sha")
|
94
|
+
else
|
95
|
+
gitLayout.gsub!(/sha/, '')
|
96
|
+
end
|
47
97
|
else
|
48
98
|
gitLayout = ''
|
49
99
|
end
|
50
100
|
|
51
101
|
# RVM
|
52
102
|
|
53
|
-
if rvmConfig
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
103
|
+
if rvmConfig && rvmLayout
|
104
|
+
if rvmConfig[:ruby]
|
105
|
+
ruby = Rprompt::RvmRuby.new(rvmConfig[:ruby].merge({:cmd => "rvm-prompt"}))
|
106
|
+
rvmLayout.gsub!(/ruby/, ruby.show) if rvmLayout.include?("ruby")
|
107
|
+
else
|
108
|
+
rvmLayout.gsub!(/ruby\s+/, '')
|
109
|
+
end
|
110
|
+
if rvmConfig[:gemset]
|
111
|
+
gemset = Rprompt::RvmGemset.new(rvmConfig[:gemset].merge({:cmd => "rvm-prompt"}))
|
112
|
+
rvmLayout.gsub!(/gemset/, gemset.show) if rvmLayout.include?("gemset")
|
113
|
+
else
|
114
|
+
rvmLayout.gsub!(/gemset/, '')
|
115
|
+
end
|
59
116
|
end
|
60
117
|
|
61
118
|
prompt = "#{stdPrompt[:start]}#{gitLayout} #{rvmLayout}#{stdPrompt[:end]}"
|
data/files/config.yml
CHANGED
@@ -11,52 +11,46 @@
|
|
11
11
|
##### Git Prompt #####
|
12
12
|
|
13
13
|
:git:
|
14
|
+
:status:
|
15
|
+
:color: green
|
16
|
+
:symbol: ✔
|
17
|
+
|
14
18
|
:staged:
|
15
|
-
:cmd: git diff --staged --name-status
|
16
19
|
:symbol: ●
|
17
20
|
:color: red
|
18
21
|
|
19
22
|
:untracked:
|
20
|
-
:cmd: git ls-files --other --exclude-standard
|
21
23
|
:symbol: …
|
22
24
|
|
23
25
|
:modified:
|
24
|
-
:cmd: git diff --name-status
|
25
26
|
:symbol: ✚
|
26
27
|
:color: blue
|
27
28
|
|
28
29
|
:unmerged:
|
29
|
-
:cmd: git diff --name-status --diff-filter=U
|
30
30
|
:symbol: ✖
|
31
31
|
:color: yellow
|
32
32
|
|
33
33
|
:ahead:
|
34
|
-
:cmd: git branch -v
|
35
34
|
:symbol: ↑
|
36
35
|
|
37
36
|
:behind:
|
38
|
-
:cmd: git branch -v
|
39
37
|
:symbol: ↓
|
40
38
|
|
41
39
|
:sha:
|
42
|
-
:cmd: git rev-parse HEAD
|
43
40
|
:symbol: '#'
|
44
41
|
:color: yellow
|
45
42
|
|
46
43
|
:branch:
|
47
|
-
:cmd: git symbolic-ref HEAD
|
48
44
|
:color: magenta
|
49
45
|
|
50
|
-
:layout: (branchbehindahead|
|
46
|
+
:layout: (branchbehindahead|stagedmodifieduntrackedunmergedstatus) sha
|
51
47
|
|
52
48
|
:rvm:
|
53
49
|
:ruby:
|
54
|
-
:cmd: rvm-prompt
|
55
50
|
:color: red
|
56
51
|
:symbol: ∆
|
57
52
|
|
58
53
|
:gemset:
|
59
|
-
:cmd: rvm-prompt
|
60
54
|
:color: yellow
|
61
55
|
:symbol: ›
|
62
56
|
|
data/files/rprompt.png
ADDED
Binary file
|
data/lib/rprompt.rb
CHANGED
@@ -1,13 +1,10 @@
|
|
1
1
|
require "rprompt/version"
|
2
|
-
|
3
|
-
require "
|
4
|
-
# Usage as Mixin into String or its Subclasses
|
5
|
-
class String
|
6
|
-
include Term::ANSIColor
|
7
|
-
end
|
2
|
+
require "rprompt/deco"
|
3
|
+
require "rprompt/termcolor"
|
8
4
|
|
9
5
|
module Rprompt
|
10
6
|
class PromptItem
|
7
|
+
include Deco
|
11
8
|
|
12
9
|
# @return [String] symbol character to identify prompt item
|
13
10
|
attr_reader :symbol, :color
|
@@ -37,11 +34,7 @@ module Rprompt
|
|
37
34
|
|
38
35
|
# @return [String] terminal representation of the number of files
|
39
36
|
def show
|
40
|
-
|
41
|
-
numberOfFiles != 0 ? "#{symbol}#{numberOfFiles}".send(color) : ""
|
42
|
-
else
|
43
|
-
numberOfFiles != 0 ? "#{symbol}#{numberOfFiles}" : ""
|
44
|
-
end
|
37
|
+
numberOfFiles != 0 ? termShow({:color => color, :symbol => symbol, :content => numberOfFiles}) : ''
|
45
38
|
end
|
46
39
|
end
|
47
40
|
|
@@ -53,11 +46,7 @@ module Rprompt
|
|
53
46
|
|
54
47
|
# @return [String] terminal representation of the branch name
|
55
48
|
def show
|
56
|
-
|
57
|
-
"#{symbol}#{shortBranchName}".send(color)
|
58
|
-
else
|
59
|
-
"#{symbol}#{shortBranchName}"
|
60
|
-
end
|
49
|
+
termShow({:color => color, :symbol => symbol, :content => shortBranchName})
|
61
50
|
end
|
62
51
|
end
|
63
52
|
|
@@ -69,11 +58,7 @@ module Rprompt
|
|
69
58
|
|
70
59
|
# @return [String] terminal representation of the number returned by 'sha'
|
71
60
|
def show
|
72
|
-
|
73
|
-
"#{symbol}#{sha}".send(color)
|
74
|
-
else
|
75
|
-
"#{symbol}#{sha}"
|
76
|
-
end
|
61
|
+
termShow({:color => color, :symbol => symbol, :content => sha})
|
77
62
|
end
|
78
63
|
end
|
79
64
|
|
@@ -94,11 +79,7 @@ module Rprompt
|
|
94
79
|
|
95
80
|
# @return [String] terminal representation of the tracking
|
96
81
|
def show
|
97
|
-
|
98
|
-
count != 0 ? "#{symbol}#{count}".send(color) : ""
|
99
|
-
else
|
100
|
-
count != 0 ? "#{symbol}#{count}" : ""
|
101
|
-
end
|
82
|
+
count != 0 ? termShow({:color => color, :symbol => symbol, :content => count}) : ''
|
102
83
|
end
|
103
84
|
end
|
104
85
|
|
@@ -115,11 +96,7 @@ module Rprompt
|
|
115
96
|
|
116
97
|
# @return [String] terminal representation of the ruby version
|
117
98
|
def show
|
118
|
-
|
119
|
-
"#{symbol}#{ruby}".send(color)
|
120
|
-
else
|
121
|
-
"#{symbol}#{ruby}"
|
122
|
-
end
|
99
|
+
termShow({:color => color, :symbol => symbol, :content => ruby})
|
123
100
|
end
|
124
101
|
end
|
125
102
|
|
@@ -136,15 +113,7 @@ module Rprompt
|
|
136
113
|
|
137
114
|
# @return [String] terminal representation of the gemset used
|
138
115
|
def show
|
139
|
-
|
140
|
-
if color
|
141
|
-
"#{symbol}#{gemset}".send(color)
|
142
|
-
else
|
143
|
-
"#{symbol}#{gemset}"
|
144
|
-
end
|
145
|
-
else
|
146
|
-
''
|
147
|
-
end
|
116
|
+
!gemset.empty? ? termShow({:color => color, :symbol => symbol, :content => gemset}) : ''
|
148
117
|
end
|
149
118
|
end
|
150
119
|
|
data/lib/rprompt/deco.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
module Deco
|
2
|
+
def termShow(args)
|
3
|
+
color = args[:color]
|
4
|
+
symbol = args[:symbol]
|
5
|
+
content = args[:content]
|
6
|
+
|
7
|
+
if color
|
8
|
+
if symbol
|
9
|
+
"#{symbol}#{content}".send(color)
|
10
|
+
else
|
11
|
+
"#{content}".send(color)
|
12
|
+
end
|
13
|
+
else
|
14
|
+
if symbol
|
15
|
+
"#{symbol}#{content}"
|
16
|
+
else
|
17
|
+
"#{content}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/rprompt/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
module Rprompt
|
2
|
-
VERSION = "0.0.
|
3
|
-
end
|
2
|
+
VERSION = "0.0.5"
|
3
|
+
end
|
data/rprompt.gemspec
CHANGED
@@ -2,13 +2,15 @@
|
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
4
|
require 'rprompt/version'
|
5
|
+
require 'rprompt/deco'
|
6
|
+
require 'rprompt/termcolor'
|
5
7
|
|
6
8
|
Gem::Specification.new do |spec|
|
7
9
|
spec.name = "rprompt"
|
8
10
|
spec.version = Rprompt::VERSION
|
9
11
|
spec.authors = ["Olivier Robert"]
|
10
12
|
spec.email = ["robby57@gmail.com"]
|
11
|
-
spec.description = %q{Adds usefull information to your bash prompt
|
13
|
+
spec.description = %q{Adds usefull information to your bash prompt}
|
12
14
|
spec.summary = %q{rprompt}
|
13
15
|
spec.homepage = "https://github.com/olibob/rprompt.git"
|
14
16
|
spec.license = "MIT"
|