gitdocs 0.4.9 → 0.4.10
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +5 -1
- data/lib/gitdocs/public/js/app.js +10 -0
- data/lib/gitdocs/runner.rb +26 -0
- data/lib/gitdocs/server.rb +5 -0
- data/lib/gitdocs/version.rb +1 -1
- data/lib/gitdocs/views/_header.haml +1 -0
- data/lib/gitdocs/views/revisions.haml +25 -0
- metadata +2 -1
data/CHANGELOG
CHANGED
@@ -42,12 +42,22 @@ GitDocs = {
|
|
42
42
|
var el = $('.content').prepend('<div class="alert-message ' + result +
|
43
43
|
'"><a class="close" href="#">×</a>' + body + '</div>');
|
44
44
|
$('div.alert-message').alert();
|
45
|
+
},
|
46
|
+
// converts iso8601 dates tagged with .reldate to relative
|
47
|
+
convertRelativeTimes : function() {
|
48
|
+
$('.reldate').each(function(ind, el) {
|
49
|
+
if ($(el).data("iso")) return;
|
50
|
+
var iso = $(el).text();
|
51
|
+
$(el).data("iso", iso);
|
52
|
+
$(el).text(RelativeDate.time_ago_in_words(iso));
|
53
|
+
});
|
45
54
|
}
|
46
55
|
};
|
47
56
|
|
48
57
|
$(document).ready(function() {
|
49
58
|
GitDocs.linkBreadcrumbs();
|
50
59
|
GitDocs.fillDirMeta();
|
60
|
+
GitDocs.convertRelativeTimes();
|
51
61
|
StringFormatter.autoLink();
|
52
62
|
});
|
53
63
|
|
data/lib/gitdocs/runner.rb
CHANGED
@@ -140,11 +140,15 @@ module Gitdocs
|
|
140
140
|
end
|
141
141
|
|
142
142
|
IGNORED_FILES = ['.gitignore']
|
143
|
+
# Returns the list of files in a given directory
|
143
144
|
# dir_files("some/dir") => [<Docfile>, <Docfile>]
|
144
145
|
def dir_files(dir_path)
|
145
146
|
Dir[File.join(dir_path, "*")].to_a.map { |path| Docfile.new(path) }
|
146
147
|
end
|
147
148
|
|
149
|
+
# Returns file meta data based on relative file path
|
150
|
+
# file_meta("path/to/file")
|
151
|
+
# => { :author => "Nick", :size => 1000, :modified => ... }
|
148
152
|
def file_meta(file)
|
149
153
|
result = {}
|
150
154
|
file = file.gsub(%r{^/}, '')
|
@@ -158,6 +162,28 @@ module Gitdocs
|
|
158
162
|
result
|
159
163
|
end
|
160
164
|
|
165
|
+
# Returns the revisions available for a particular file
|
166
|
+
# file_revisions("README")
|
167
|
+
def file_revisions(file)
|
168
|
+
file = file.gsub(%r{^/}, '')
|
169
|
+
output = sh_string("git log --format='%h|%s|%aN|%ai' -n100 #{ShellTools.escape(file)}")
|
170
|
+
output.to_s.split("\n").map do |log_result|
|
171
|
+
commit, subject, author, date = log_result.split("|")
|
172
|
+
date = Time.parse(date.sub(' ', 'T')).utc.iso8601
|
173
|
+
{ :commit => commit, :subject => subject, :author => author, :date => date }
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
# Returns the temporary path of a particular revision of a file
|
178
|
+
# file_revision_at("README", "a4c56h") => "/tmp/some/path/README"
|
179
|
+
def file_revision_at(file, ref)
|
180
|
+
file = file.gsub(%r{^/}, '')
|
181
|
+
content = sh_string("git show #{ref}:#{ShellTools.escape(file)}")
|
182
|
+
tmp_path = File.expand_path(File.basename(file), Dir.tmpdir)
|
183
|
+
File.open(tmp_path, 'w') { |f| f.puts content }
|
184
|
+
tmp_path
|
185
|
+
end
|
186
|
+
|
161
187
|
def valid?
|
162
188
|
out, status = sh_with_code "git status"
|
163
189
|
@root.present? && status.success?
|
data/lib/gitdocs/server.rb
CHANGED
@@ -90,6 +90,9 @@ module Gitdocs
|
|
90
90
|
elsif File.directory?(expanded_path) # list directory
|
91
91
|
contents = gd.dir_files(expanded_path)
|
92
92
|
render! "dir", :layout => 'app', :locals => locals.merge(:contents => contents)
|
93
|
+
elsif mode == "revisions" # list revisions
|
94
|
+
revisions = gd.file_revisions(file_path)
|
95
|
+
render! "revisions", :layout => 'app', :locals => locals.merge(:revisions => revisions)
|
93
96
|
elsif mode == 'delete' # delete file
|
94
97
|
FileUtils.rm(expanded_path)
|
95
98
|
redirect! "/" + idx.to_s + parent
|
@@ -97,6 +100,8 @@ module Gitdocs
|
|
97
100
|
contents = File.read(expanded_path)
|
98
101
|
render! "edit", :layout => 'app', :locals => locals.merge(:contents => contents)
|
99
102
|
elsif mode != 'raw' # render file
|
103
|
+
revision = request.params['revision']
|
104
|
+
expanded_path = gd.file_revision_at(file_path, revision) if revision
|
100
105
|
begin # attempting to render file
|
101
106
|
contents = '<div class="tilt">' + render(expanded_path) + '</div>'
|
102
107
|
rescue RuntimeError => e # not tilt supported
|
data/lib/gitdocs/version.rb
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
- @title = root
|
2
|
+
|
3
|
+
= partial("header", :locals => { :parent => parent, :file => true, :idx => idx })
|
4
|
+
|
5
|
+
- if revisions && revisions.any?
|
6
|
+
%table.condensed-table.zebra-striped
|
7
|
+
%thead
|
8
|
+
%tr
|
9
|
+
%th Commit
|
10
|
+
%th Subject
|
11
|
+
%th Author
|
12
|
+
%th Committed
|
13
|
+
|
14
|
+
%tbody
|
15
|
+
- revisions.each_with_index do |r, i|
|
16
|
+
%tr
|
17
|
+
%td.commit
|
18
|
+
%a{ :href => "?revision=#{r[:commit]}" }
|
19
|
+
= r[:commit]
|
20
|
+
%td.subject= r[:subject]
|
21
|
+
%td.author= r[:author]
|
22
|
+
%td.date.reldate= r[:date]
|
23
|
+
|
24
|
+
- if revisions.empty?
|
25
|
+
%p No revisions for this file could be found.
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: gitdocs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.4.
|
5
|
+
version: 0.4.10
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Josh Hull
|
@@ -322,6 +322,7 @@ files:
|
|
322
322
|
- lib/gitdocs/views/edit.haml
|
323
323
|
- lib/gitdocs/views/file.haml
|
324
324
|
- lib/gitdocs/views/home.haml
|
325
|
+
- lib/gitdocs/views/revisions.haml
|
325
326
|
- lib/gitdocs/views/search.haml
|
326
327
|
- lib/gitdocs/views/settings.haml
|
327
328
|
- lib/img/icon.png
|