ginatra 3.0.1 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -15
  3. data/.travis.yml +7 -6
  4. data/CONTRIBUTING.md +30 -0
  5. data/Gemfile +1 -9
  6. data/LICENSE.txt +30 -0
  7. data/README.md +63 -114
  8. data/Rakefile +10 -12
  9. data/bin/ginatra +79 -63
  10. data/config.ru +35 -3
  11. data/ginatra.gemspec +29 -18
  12. data/lib/ginatra.rb +161 -148
  13. data/lib/ginatra/config.rb +18 -121
  14. data/lib/ginatra/errors.rb +10 -0
  15. data/lib/ginatra/helpers.rb +154 -139
  16. data/lib/ginatra/repo.rb +67 -82
  17. data/lib/ginatra/repo_list.rb +25 -18
  18. data/lib/ginatra/repo_stats.rb +93 -0
  19. data/lib/ginatra/version.rb +4 -0
  20. data/lib/git/webby.rb +292 -0
  21. data/lib/git/webby/extensions.rb +10 -0
  22. data/lib/git/webby/http_backend.rb +177 -0
  23. data/lib/sinatra/partials.rb +1 -1
  24. data/public/css/application.css +6 -0
  25. data/public/css/custom.css +57 -0
  26. data/public/css/lib/bootstrap-responsive.min.css +9 -0
  27. data/public/css/lib/bootstrap.min.css +9 -0
  28. data/public/css/lib/highlight.css +209 -0
  29. data/public/img/glyphicons-halflings-white.png +0 -0
  30. data/public/img/glyphicons-halflings.png +0 -0
  31. data/public/img/spin.gif +0 -0
  32. data/public/js/application.js +5 -0
  33. data/public/js/custom.js +51 -0
  34. data/public/js/lib/bootstrap.min.js +6 -0
  35. data/public/js/lib/jquery.lazyload.min.js +2 -0
  36. data/public/js/lib/jquery.min.js +2 -0
  37. data/public/js/lib/jquery.pjax.js +739 -0
  38. data/repos/README.md +21 -8
  39. data/spec/ginatra/helpers_spec.rb +95 -0
  40. data/spec/ginatra/repo_list_spec.rb +66 -0
  41. data/spec/ginatra/repo_spec.rb +78 -0
  42. data/spec/ginatra/repo_stats_spec.rb +27 -0
  43. data/spec/ginatra_spec.rb +121 -0
  44. data/spec/spec_helper.rb +8 -17
  45. data/views/404.erb +18 -0
  46. data/views/500.erb +18 -0
  47. data/views/_footer.erb +7 -0
  48. data/views/_header.erb +12 -6
  49. data/views/_tree_nav.erb +53 -0
  50. data/views/atom.erb +32 -0
  51. data/views/blob.erb +27 -8
  52. data/views/commit.erb +95 -17
  53. data/views/empty_repo.erb +10 -0
  54. data/views/index.erb +27 -11
  55. data/views/layout.erb +16 -20
  56. data/views/log.erb +74 -54
  57. data/views/stats.erb +89 -0
  58. data/views/tree.erb +32 -20
  59. metadata +168 -94
  60. data/bin/ginatra-daemon +0 -87
  61. data/bin/ginatra-directory +0 -55
  62. data/bin/ginatra-server +0 -27
  63. data/bin/ginatra-setup +0 -28
  64. data/lib/ginatra/graph_commit.rb +0 -77
  65. data/public/img/add.png +0 -0
  66. data/public/img/diff.png +0 -0
  67. data/public/img/doc.png +0 -0
  68. data/public/img/rm.png +0 -0
  69. data/public/img/tree.png +0 -0
  70. data/public/src/branch-graph.js +0 -170
  71. data/public/src/colour.css +0 -86
  72. data/public/src/commit.css +0 -211
  73. data/public/src/ginatra.js +0 -7
  74. data/public/src/github.css +0 -129
  75. data/public/src/graph.css +0 -9
  76. data/public/src/highlight.pack.js +0 -1
  77. data/public/src/index.css +0 -92
  78. data/public/src/lists.css +0 -25
  79. data/public/src/raphael.js +0 -7
  80. data/public/src/reset.css +0 -49
  81. data/public/src/table.css +0 -33
  82. data/public/src/type.css +0 -30
  83. data/rackup.ru +0 -5
  84. data/spec/graph_commit_spec.rb +0 -54
  85. data/spec/repo_list_spec.rb +0 -84
  86. data/spec/repo_spec.rb +0 -61
  87. data/views/_actor_box.erb +0 -13
  88. data/views/_commit_info_box.erb +0 -27
  89. data/views/_tree_part.erb +0 -11
  90. data/views/atom.builder +0 -32
  91. data/views/graph.erb +0 -15
data/views/stats.erb ADDED
@@ -0,0 +1,89 @@
1
+ <% title @repo.name, headline: 'Stats' %>
2
+ <%= partial :header, locals: { repo: @repo } %>
3
+
4
+ <div class="row-fluid">
5
+ <div class="span12">
6
+ <div class="row-fluid">
7
+ <div class="span8">
8
+ <ul class="nav nav-pills">
9
+ <li>
10
+ <a href="<%= prefix_url(@repo.param) %>/<%= params[:ref] %>">Commits</a>
11
+ </li>
12
+ <li>
13
+ <a href="<%= prefix_url(@repo.param) %>/tree/<%= params[:ref] %>">Source</a>
14
+ </li>
15
+ <li class="active">
16
+ <a href="<%= prefix_url(@repo.param) %>/stats/<%= params[:ref] %>">Stats</a>
17
+ </li>
18
+ </ul>
19
+
20
+ <ul class="unstyled">
21
+ <li>
22
+ <strong>License:</strong>
23
+ <span class="label label-info"><%= @stats.license %></span>
24
+ </li>
25
+ <li>
26
+ <strong>Commits:</strong>
27
+ <%= @stats.commits_count %>
28
+ </li>
29
+ <li>
30
+ <strong>Created at:</strong>
31
+ <%= time_tag @stats.created_at %>
32
+ </li>
33
+ </ul>
34
+
35
+ <h3>Contributors (<%= @stats.contributors.size %>)</h3>
36
+
37
+ <table class="table table-striped table-bordered table-hover">
38
+ <thead>
39
+ <tr>
40
+ <th>Email</th>
41
+ <th>Author</th>
42
+ <th>Commits</th>
43
+ </tr>
44
+ </thead>
45
+ <tbody>
46
+ <% @stats.contributors.each do |contributor| %>
47
+ <tr>
48
+ <td>
49
+ <%= gravatar_image_tag contributor.first, size: 20, alt: contributor.last[:author], lazy: true %>
50
+ <%= secure_mail contributor.first %>
51
+ </td>
52
+ <td><%= contributor.last[:author] %></td>
53
+ <td><%= contributor.last[:commits_count] %></td>
54
+ </tr>
55
+ <% end %>
56
+ </tbody>
57
+ </table>
58
+ </div>
59
+
60
+ <div class="span4">
61
+ <ul class="nav nav-list">
62
+ <li class="nav-header">Branches (<%= @repo.branches.size %>)</li>
63
+ <% @repo.branches.each do |branch| %>
64
+ <li class="<%= 'active' if branch.name == params[:ref] %>">
65
+ <a href="<%= h prefix_url(@repo.param) %>/stats/<%= h branch.name %>">
66
+ <%= h branch.name %>
67
+ </a>
68
+ </li>
69
+ <% end %>
70
+
71
+ <li class="divider"></li>
72
+
73
+ <li class="nav-header">Tags (<%= @repo.tags.count %>)</li>
74
+ <% if @repo.tags.any? %>
75
+ <% @repo.tags.each_name do |tag| %>
76
+ <li>
77
+ <a href="<%= h prefix_url(@repo.param) %>/tag/<%= h tag %>">
78
+ <%= h tag %>
79
+ </a>
80
+ </li>
81
+ <% end %>
82
+ <% else %>
83
+ <li>No tags</li>
84
+ <% end %>
85
+ </ul>
86
+ </div>
87
+ </div>
88
+ </div>
89
+ </div>
data/views/tree.erb CHANGED
@@ -1,24 +1,36 @@
1
- <%= partial(:header, :locals => {:repo => @repo}) %>
2
- <h3>Tree: <%= @tree.id %> <%= archive_link @tree, @repo.param %></h3>
3
- <div class="active">
4
- <ul class="commit-tree">
5
- <% @tree.trees.each do |tree| %>
6
- <% tree_path = "#{tree.name}"%>
7
- <li class="tree"><a href="<%= prefix_url(@path[:tree]) %><%= tree_path %>"><%= tree.basename %></a>
8
- <ul>
9
- <% tree.trees.each do |next_tree| %>
10
- <% new_path = tree_path + "/#{next_tree.name}" %>
11
- <%= partial(:tree_part, :locals => {:current_tree => next_tree, :tree_path => new_path, :path => @path }) %>
12
- <% end %>
13
- <% tree.blobs.each do |next_blob| %>
14
- <li class="blob"><a href="<%= prefix_url(@path[:blob]) %>/<%= tree_path %>/<%= next_blob.basename %>"><%= next_blob.basename %></a></li>
15
- <% end %>
16
- </ul>
1
+ <% title "#{@repo.name} at #{@tree.oid[0..6]}" %>
2
+
3
+ <div id="pjax-container">
4
+ <%= partial :header, locals: { repo: @repo } %>
5
+ <%= partial :tree_nav %>
6
+
7
+ <div class="hide" id="loader"><img src="<%= prefix_url("img/spin.gif") %>" alt="loading"></div>
8
+
9
+ <ul class="nav nav-tabs nav-stacked" id="js-tree">
10
+ <% @tree.each do |tree| %>
11
+ <% next unless tree[:type] == :commit && tree[:filemode] == 57344 %>
12
+ <li class="tree">
13
+ <a title="submodule <%= tree[:name] %> @ <%= tree[:oid] %>">
14
+ <span class="icon-hdd"></span> <%= tree[:name] %>
15
+ </a>
17
16
  </li>
18
17
  <% end %>
19
- <% @tree.blobs.each do |blob| %>
20
- <li class="blob"><a href="<%= prefix_url(@path[:blob]) %>/<%= blob.basename %>"><%= blob.basename %></a></li>
18
+
19
+ <% @tree.each_tree do |tree| %>
20
+ <% tree_path = "#{tree[:name]}"%>
21
+ <li class="tree">
22
+ <a href="<%= prefix_url(@path[:tree]) %>/<%= tree_path %>">
23
+ <span class="icon-folder-close"></span> <%= tree[:name] %>
24
+ </a>
25
+ </li>
26
+ <% end %>
27
+
28
+ <% @tree.each_blob do |blob| %>
29
+ <li class="blob">
30
+ <a href="<%= prefix_url(@path[:blob]) %>/<%= blob[:name] %>">
31
+ <%= file_icon blob[:filemode] %> <%= blob[:name] %>
32
+ </a>
33
+ </li>
21
34
  <% end %>
22
35
  </ul>
23
- <div class="clearfix">&nbsp;</div>
24
- </div>
36
+ </div>
metadata CHANGED
@@ -1,177 +1,251 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ginatra
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
5
- prerelease:
4
+ version: 4.0.0
6
5
  platform: ruby
7
6
  authors:
7
+ - Nihad Abbasov
8
8
  - Sam Elliott
9
9
  - Ryan Bigg
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-09-02 00:00:00.000000000Z
13
+ date: 2015-01-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: bundler
17
- requirement: &2153624660 !ruby/object:Gem::Requirement
18
- none: false
16
+ name: sinatra
17
+ requirement: !ruby/object:Gem::Requirement
19
18
  requirements:
20
- - - ~>
19
+ - - "~>"
21
20
  - !ruby/object:Gem::Version
22
- version: 1.0.15
21
+ version: 1.4.5
23
22
  type: :runtime
24
23
  prerelease: false
25
- version_requirements: *2153624660
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: 1.4.5
26
29
  - !ruby/object:Gem::Dependency
27
- name: sinatra
28
- requirement: &2153624180 !ruby/object:Gem::Requirement
29
- none: false
30
+ name: rugged
31
+ requirement: !ruby/object:Gem::Requirement
30
32
  requirements:
31
- - - ~>
33
+ - - "~>"
32
34
  - !ruby/object:Gem::Version
33
- version: 1.2.6
35
+ version: 0.21.3
34
36
  type: :runtime
35
37
  prerelease: false
36
- version_requirements: *2153624180
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: 0.21.3
37
43
  - !ruby/object:Gem::Dependency
38
- name: grit
39
- requirement: &2153623720 !ruby/object:Gem::Requirement
40
- none: false
44
+ name: rouge
45
+ requirement: !ruby/object:Gem::Requirement
41
46
  requirements:
42
- - - ~>
47
+ - - "~>"
43
48
  - !ruby/object:Gem::Version
44
- version: 2.4.1
49
+ version: 1.7.7
45
50
  type: :runtime
46
51
  prerelease: false
47
- version_requirements: *2153623720
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: 1.7.7
48
57
  - !ruby/object:Gem::Dependency
49
- name: vegas
50
- requirement: &2153623260 !ruby/object:Gem::Requirement
51
- none: false
58
+ name: sprockets
59
+ requirement: !ruby/object:Gem::Requirement
52
60
  requirements:
53
- - - ~>
61
+ - - "~>"
54
62
  - !ruby/object:Gem::Version
55
- version: 0.1.8
63
+ version: '2.0'
56
64
  type: :runtime
57
65
  prerelease: false
58
- version_requirements: *2153623260
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '2.0'
59
71
  - !ruby/object:Gem::Dependency
60
- name: builder
61
- requirement: &2153622800 !ruby/object:Gem::Requirement
62
- none: false
72
+ name: rake
73
+ requirement: !ruby/object:Gem::Requirement
63
74
  requirements:
64
- - - ~>
75
+ - - ">="
65
76
  - !ruby/object:Gem::Version
66
- version: 3.0.0
67
- type: :runtime
77
+ version: '0'
78
+ type: :development
68
79
  prerelease: false
69
- version_requirements: *2153622800
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
70
85
  - !ruby/object:Gem::Dependency
71
- name: erubis
72
- requirement: &2153622340 !ruby/object:Gem::Requirement
73
- none: false
86
+ name: rspec
87
+ requirement: !ruby/object:Gem::Requirement
74
88
  requirements:
75
- - - ~>
89
+ - - ">="
76
90
  - !ruby/object:Gem::Version
77
- version: 2.7.0
78
- type: :runtime
91
+ version: '0'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: rack-test
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ type: :development
79
107
  prerelease: false
80
- version_requirements: *2153622340
81
- description: Host your own git repository browser through the power of Sinatra and
82
- Grit
83
- email: sam@lenary.co.uk
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ - !ruby/object:Gem::Dependency
114
+ name: sinatra-contrib
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ - !ruby/object:Gem::Dependency
128
+ name: better_errors
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: 1.1.0
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - "~>"
139
+ - !ruby/object:Gem::Version
140
+ version: 1.1.0
141
+ - !ruby/object:Gem::Dependency
142
+ name: binding_of_caller
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ description: Git repository viewer with a rocking good web interface
156
+ email:
157
+ - mail@narkoz.me
84
158
  executables:
85
159
  - ginatra
86
- - ginatra-daemon
87
- - ginatra-directory
88
- - ginatra-server
89
- - ginatra-setup
90
160
  extensions: []
91
161
  extra_rdoc_files: []
92
162
  files:
93
- - .gitignore
94
- - .travis.yml
163
+ - ".gitignore"
164
+ - ".travis.yml"
165
+ - CONTRIBUTING.md
95
166
  - Gemfile
167
+ - LICENSE.txt
96
168
  - README.md
97
169
  - Rakefile
98
170
  - bin/ginatra
99
- - bin/ginatra-daemon
100
- - bin/ginatra-directory
101
- - bin/ginatra-server
102
- - bin/ginatra-setup
103
171
  - config.ru
172
+ - config.yml
104
173
  - ginatra.gemspec
105
174
  - lib/ginatra.rb
106
175
  - lib/ginatra/config.rb
107
- - lib/ginatra/graph_commit.rb
176
+ - lib/ginatra/errors.rb
108
177
  - lib/ginatra/helpers.rb
109
178
  - lib/ginatra/repo.rb
110
179
  - lib/ginatra/repo_list.rb
180
+ - lib/ginatra/repo_stats.rb
181
+ - lib/ginatra/version.rb
182
+ - lib/git/webby.rb
183
+ - lib/git/webby/extensions.rb
184
+ - lib/git/webby/http_backend.rb
111
185
  - lib/sinatra/partials.rb
186
+ - public/css/application.css
187
+ - public/css/custom.css
188
+ - public/css/lib/bootstrap-responsive.min.css
189
+ - public/css/lib/bootstrap.min.css
190
+ - public/css/lib/highlight.css
112
191
  - public/favicon.ico
113
- - public/img/add.png
114
- - public/img/diff.png
115
- - public/img/doc.png
116
- - public/img/rm.png
117
- - public/img/tree.png
118
- - public/src/branch-graph.js
119
- - public/src/colour.css
120
- - public/src/commit.css
121
- - public/src/ginatra.js
122
- - public/src/github.css
123
- - public/src/graph.css
124
- - public/src/highlight.pack.js
125
- - public/src/index.css
126
- - public/src/lists.css
127
- - public/src/raphael.js
128
- - public/src/reset.css
129
- - public/src/table.css
130
- - public/src/type.css
131
- - rackup.ru
192
+ - public/img/glyphicons-halflings-white.png
193
+ - public/img/glyphicons-halflings.png
194
+ - public/img/spin.gif
195
+ - public/js/application.js
196
+ - public/js/custom.js
197
+ - public/js/lib/bootstrap.min.js
198
+ - public/js/lib/jquery.lazyload.min.js
199
+ - public/js/lib/jquery.min.js
200
+ - public/js/lib/jquery.pjax.js
132
201
  - repos/README.md
133
- - spec/graph_commit_spec.rb
134
- - spec/repo_list_spec.rb
135
- - spec/repo_spec.rb
202
+ - spec/ginatra/helpers_spec.rb
203
+ - spec/ginatra/repo_list_spec.rb
204
+ - spec/ginatra/repo_spec.rb
205
+ - spec/ginatra/repo_stats_spec.rb
206
+ - spec/ginatra_spec.rb
136
207
  - spec/spec_helper.rb
137
- - views/_actor_box.erb
138
- - views/_commit_info_box.erb
208
+ - views/404.erb
209
+ - views/500.erb
210
+ - views/_footer.erb
139
211
  - views/_header.erb
140
- - views/_tree_part.erb
141
- - views/atom.builder
212
+ - views/_tree_nav.erb
213
+ - views/atom.erb
142
214
  - views/blob.erb
143
215
  - views/commit.erb
144
- - views/graph.erb
216
+ - views/empty_repo.erb
145
217
  - views/index.erb
146
218
  - views/layout.erb
147
219
  - views/log.erb
220
+ - views/stats.erb
148
221
  - views/tree.erb
149
- homepage: http://lenary.co.uk/ginatra
222
+ homepage: https://github.com/narkoz/ginatra
150
223
  licenses: []
224
+ metadata: {}
151
225
  post_install_message:
152
226
  rdoc_options: []
153
227
  require_paths:
154
228
  - lib
155
229
  required_ruby_version: !ruby/object:Gem::Requirement
156
- none: false
157
230
  requirements:
158
- - - ! '>='
231
+ - - ">="
159
232
  - !ruby/object:Gem::Version
160
- version: '0'
233
+ version: '1.9'
161
234
  required_rubygems_version: !ruby/object:Gem::Requirement
162
- none: false
163
235
  requirements:
164
- - - ! '>='
236
+ - - ">="
165
237
  - !ruby/object:Gem::Version
166
238
  version: '0'
167
239
  requirements: []
168
240
  rubyforge_project:
169
- rubygems_version: 1.8.6
241
+ rubygems_version: 2.4.5
170
242
  signing_key:
171
- specification_version: 3
172
- summary: A Gitweb Clone in Sinatra and Grit
243
+ specification_version: 4
244
+ summary: Web interface for git repositories
173
245
  test_files:
174
- - spec/graph_commit_spec.rb
175
- - spec/repo_list_spec.rb
176
- - spec/repo_spec.rb
246
+ - spec/ginatra/helpers_spec.rb
247
+ - spec/ginatra/repo_list_spec.rb
248
+ - spec/ginatra/repo_spec.rb
249
+ - spec/ginatra/repo_stats_spec.rb
250
+ - spec/ginatra_spec.rb
177
251
  - spec/spec_helper.rb