gollum-lib 1.0.2 → 1.0.3
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.
Potentially problematic release.
This version of gollum-lib might be problematic. Click here for more details.
- data/gollum-lib.gemspec +2 -2
- data/lib/gollum-lib.rb +1 -1
- data/lib/gollum-lib/file.rb +55 -5
- data/lib/gollum-lib/wiki.rb +8 -4
- metadata +3 -2
data/gollum-lib.gemspec
CHANGED
data/lib/gollum-lib.rb
CHANGED
data/lib/gollum-lib/file.rb
CHANGED
@@ -12,6 +12,8 @@ module Gollum
|
|
12
12
|
@wiki = wiki
|
13
13
|
@blob = nil
|
14
14
|
@path = nil
|
15
|
+
@on_disk = false
|
16
|
+
@on_disk_path = nil
|
15
17
|
end
|
16
18
|
|
17
19
|
# Public: The url path required to reach this page within the repo.
|
@@ -34,6 +36,7 @@ module Gollum
|
|
34
36
|
#
|
35
37
|
# Returns the String name.
|
36
38
|
def name
|
39
|
+
return @path if on_disk?
|
37
40
|
@blob && @blob.name
|
38
41
|
end
|
39
42
|
alias filename name
|
@@ -42,6 +45,7 @@ module Gollum
|
|
42
45
|
#
|
43
46
|
# Returns the String data.
|
44
47
|
def raw_data
|
48
|
+
return IO.read(@on_disk_path) if on_disk?
|
45
49
|
return nil unless @blob
|
46
50
|
|
47
51
|
if !@wiki.repo.bare && @blob.is_symlink
|
@@ -52,6 +56,20 @@ module Gollum
|
|
52
56
|
@blob.data
|
53
57
|
end
|
54
58
|
|
59
|
+
# Public: Is this an on-disk file reference?
|
60
|
+
#
|
61
|
+
# Returns true if this is a pointer to an on-disk file
|
62
|
+
def on_disk?
|
63
|
+
return @on_disk
|
64
|
+
end
|
65
|
+
|
66
|
+
# Public: The path to this file on disk
|
67
|
+
#
|
68
|
+
# Returns nil if on_disk? is false.
|
69
|
+
def on_disk_path
|
70
|
+
return @on_disk_path
|
71
|
+
end
|
72
|
+
|
55
73
|
# Public: The Grit::Commit version of the file.
|
56
74
|
attr_accessor :version
|
57
75
|
|
@@ -60,7 +78,7 @@ module Gollum
|
|
60
78
|
|
61
79
|
# Public: The String mime type of the file.
|
62
80
|
def mime_type
|
63
|
-
@blob.mime_type
|
81
|
+
@blob && @blob.mime_type
|
64
82
|
end
|
65
83
|
|
66
84
|
# Populate the File with information from the Blob.
|
@@ -72,6 +90,8 @@ module Gollum
|
|
72
90
|
def populate(blob, path=nil)
|
73
91
|
@blob = blob
|
74
92
|
@path = "#{path}/#{blob.name}"[1..-1]
|
93
|
+
@on_disk = false
|
94
|
+
@on_disk_path = nil
|
75
95
|
self
|
76
96
|
end
|
77
97
|
|
@@ -81,19 +101,49 @@ module Gollum
|
|
81
101
|
#
|
82
102
|
#########################################################################
|
83
103
|
|
104
|
+
# Return the file path to this file on disk, if available.
|
105
|
+
#
|
106
|
+
# Returns nil if the file isn't available on disk. This can occur if the
|
107
|
+
# repo is bare, if the commit isn't the HEAD, or if there are problems
|
108
|
+
# resolving symbolic links.
|
109
|
+
def get_disk_reference(name, commit)
|
110
|
+
return false if @wiki.repo.bare
|
111
|
+
return false if commit.sha != @wiki.repo.head.commit.sha
|
112
|
+
|
113
|
+
# This will try to resolve symbolic links, as well
|
114
|
+
pathname = Pathname.new(::File.join(@wiki.repo.path, '..', name))
|
115
|
+
realpath = pathname.realpath
|
116
|
+
return false unless realpath.exist?
|
117
|
+
|
118
|
+
@on_disk_path = realpath.to_s
|
119
|
+
return true
|
120
|
+
end
|
121
|
+
|
84
122
|
# Find a file in the given Gollum repo.
|
85
123
|
#
|
86
124
|
# name - The full String path.
|
87
125
|
# version - The String version ID to find.
|
126
|
+
# try_on_disk - If true, try to return just a reference to a file
|
127
|
+
# that exists on the disk.
|
88
128
|
#
|
89
|
-
# Returns a Gollum::File or nil if the file could not be found.
|
90
|
-
|
129
|
+
# Returns a Gollum::File or nil if the file could not be found. Note
|
130
|
+
# that if you specify try_on_disk=true, you may or may not get a file
|
131
|
+
# for which on_disk? is actually true.
|
132
|
+
def find(name, version, try_on_disk=false)
|
91
133
|
checked = name.downcase
|
92
134
|
map = @wiki.tree_map_for(version)
|
135
|
+
commit = version.is_a?(Grit::Commit) ? version : @wiki.commit_for(version)
|
136
|
+
|
93
137
|
if entry = map.detect { |entry| entry.path.downcase == checked }
|
94
138
|
@path = name
|
95
|
-
@
|
96
|
-
|
139
|
+
@version = commit
|
140
|
+
|
141
|
+
if try_on_disk && get_disk_reference(name, commit)
|
142
|
+
@on_disk = true
|
143
|
+
else
|
144
|
+
@blob = entry.blob(@wiki.repo)
|
145
|
+
end
|
146
|
+
|
97
147
|
self
|
98
148
|
end
|
99
149
|
end
|
data/lib/gollum-lib/wiki.rb
CHANGED
@@ -257,10 +257,14 @@ module Gollum
|
|
257
257
|
#
|
258
258
|
# name - The full String pathname to the file.
|
259
259
|
# version - The String version ID to find (default: @ref).
|
260
|
-
#
|
261
|
-
#
|
262
|
-
|
263
|
-
|
260
|
+
# try_on_disk - If true, try to return just a reference to a file
|
261
|
+
# that exists on the disk.
|
262
|
+
#
|
263
|
+
# Returns a Gollum::File or nil if no matching file was found. Note
|
264
|
+
# that if you specify try_on_disk=true, you may or may not get a file
|
265
|
+
# for which on_disk? is actually true.
|
266
|
+
def file(name, version = @ref, try_on_disk = false)
|
267
|
+
@file_class.new(self).find(name, version, try_on_disk)
|
264
268
|
end
|
265
269
|
|
266
270
|
# Public: Create an in-memory Page with the given data and format. This
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gollum-lib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-06-
|
13
|
+
date: 2013-06-18 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: grit
|
@@ -442,3 +442,4 @@ signing_key:
|
|
442
442
|
specification_version: 2
|
443
443
|
summary: A simple, Git-powered wiki.
|
444
444
|
test_files: []
|
445
|
+
has_rdoc:
|