ginatra 3.0.1 → 4.0.0

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.
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