jekyll-theme-open-project-helpers 1.0.5 → 1.0.6
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f5fd5decde1edbaf519bb5db108a98384d4c3638c1ecafd392ea0f684da92c71
|
4
|
+
data.tar.gz: 7cc6823120af4dd4147948d4410d0f282445c7ff61df0c84be53ad842f2b425b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3107adcca93d30676b5c72ec5925bb7de05b79cf431e388fd2052736d8dcdfe9b28c4a43cb8574d8707f60700880500c38bf43077083c333b8b685e73272a7c3
|
7
|
+
data.tar.gz: 582502b40a9d21e12af4def1e90a135c88bb0d62cc4a58deb0e0cccbca0d6e48367bf907ea8240a541c0d923f31a78c64f204b601c65e7648df37be75195deec
|
@@ -3,6 +3,8 @@ require 'fileutils'
|
|
3
3
|
module Jekyll
|
4
4
|
module OpenProjectHelpers
|
5
5
|
|
6
|
+
DEFAULT_DOCS_SUBTREE = 'docs'
|
7
|
+
|
6
8
|
class CollectionDocReader < Jekyll::DataReader
|
7
9
|
|
8
10
|
def read(dir, collection)
|
@@ -65,7 +67,7 @@ module Jekyll
|
|
65
67
|
|
66
68
|
def fetch_hub_logo
|
67
69
|
if @site.config.key? 'parent_hub' and @site.config['parent_hub'].key? 'git_repo_url'
|
68
|
-
|
70
|
+
git_shallow_checkout(
|
69
71
|
File.join(@site.source, 'parent-hub'),
|
70
72
|
@site.config['parent_hub']['git_repo_url'],
|
71
73
|
['assets/', 'title.html'])
|
@@ -80,7 +82,7 @@ module Jekyll
|
|
80
82
|
project_indexes.each do |project|
|
81
83
|
project_path = project.path.split('/')[0..-2].join('/')
|
82
84
|
|
83
|
-
result =
|
85
|
+
result = git_shallow_checkout(
|
84
86
|
project_path,
|
85
87
|
project['site']['git_repo_url'],
|
86
88
|
['assets/', '_posts/', '_software/', '_specs/'])
|
@@ -96,46 +98,61 @@ module Jekyll
|
|
96
98
|
end
|
97
99
|
end
|
98
100
|
|
99
|
-
def fetch_docs_for_item(item_doc)
|
100
|
-
item_name = item_doc.id.split('/')[-1]
|
101
|
-
docs_path = "#{item_doc.path.split('/')[0..-2].join('/')}/#{item_name}"
|
102
|
-
|
103
|
-
return {
|
104
|
-
:checkout_result => git_sparse_checkout(
|
105
|
-
docs_path,
|
106
|
-
item_doc['docs']['git_repo_url'],
|
107
|
-
[item_doc['docs']['git_repo_subtree']]),
|
108
|
-
:docs_path => docs_path,
|
109
|
-
}
|
110
|
-
end
|
111
|
-
|
112
101
|
def fetch_and_read_docs_for_items(collection_name, index_collection_name=nil)
|
113
102
|
# collection_name would be either software, specs, or (for hub site) projects
|
114
|
-
# index_collection_name would be either software or
|
103
|
+
# index_collection_name would be either software, specs or (for project site) nil
|
115
104
|
|
116
105
|
return unless @site.collections.key?(collection_name)
|
117
106
|
|
118
107
|
index_collection_name = index_collection_name or collection_name
|
119
108
|
|
120
109
|
entry_points = @site.collections[collection_name].docs.select do |doc|
|
121
|
-
doc.data
|
122
|
-
doc.data['docs']['git_repo_url']
|
110
|
+
doc.data['repo_url']
|
123
111
|
end
|
112
|
+
|
124
113
|
entry_points.each do |index_doc|
|
125
|
-
|
126
|
-
|
114
|
+
item_name = index_doc.id.split('/')[-1]
|
115
|
+
|
116
|
+
if index_doc.data.key?('docs') and index_doc.data['docs']['git_repo_url']
|
117
|
+
docs_repo = index_doc.data['docs']['git_repo_url']
|
118
|
+
docs_subtree = index_doc.data['docs']['git_repo_subtree'] || DEFAULT_DOCS_SUBTREE
|
119
|
+
else
|
120
|
+
docs_repo = index_doc.data['repo_url']
|
121
|
+
docs_subtree = DEFAULT_DOCS_SUBTREE
|
122
|
+
end
|
127
123
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
124
|
+
docs_path = "#{index_doc.path.split('/')[0..-2].join('/')}/#{item_name}"
|
125
|
+
|
126
|
+
begin
|
127
|
+
docs_checkout = git_shallow_checkout(docs_path, docs_repo, [docs_subtree])
|
128
|
+
|
129
|
+
# Read all docs for hub site only when the repo is freshly initialized,
|
130
|
+
# for project sites always. A workaround for #4 pending proper solution.
|
131
|
+
if !@site.config['is_hub'] or docs_checkout[:newly_initialized]
|
132
|
+
CollectionDocReader.new(site).read(
|
133
|
+
docs_checkout[:docs_path],
|
134
|
+
@site.collections[collection_name])
|
135
|
+
end
|
136
|
+
|
137
|
+
rescue
|
138
|
+
docs_checkout = nil
|
139
|
+
|
140
|
+
end
|
141
|
+
|
142
|
+
# Get last repository modification timestamp.
|
143
|
+
# Fetch the repository for that purpose,
|
144
|
+
# unless it’s the same as the repo where docs are.
|
145
|
+
if docs_checkout == nil or docs_repo != index_doc.data['repo_url']
|
146
|
+
repo_path = "#{index_doc.path.split('/')[0..-2].join('/')}/_#{item_name}_repo"
|
147
|
+
repo_checkout = git_shallow_checkout(repo_path, index_doc.data['repo_url'])
|
148
|
+
index_doc.merge_data!({ 'last_update' => repo_checkout[:modified_at] })
|
149
|
+
else
|
150
|
+
index_doc.merge_data!({ 'last_update' => docs_checkout[:modified_at] })
|
134
151
|
end
|
135
152
|
end
|
136
153
|
end
|
137
154
|
|
138
|
-
def
|
155
|
+
def git_shallow_checkout(repo_path, remote_url, sparse_subtrees=[])
|
139
156
|
# Returns hash with timestamp of latest repo commit
|
140
157
|
# and boolean signifying whether new repo has been initialized
|
141
158
|
# in the process of pulling the data.
|
@@ -155,19 +172,21 @@ module Jekyll
|
|
155
172
|
|
156
173
|
repo.add_remote('origin', remote_url)
|
157
174
|
|
158
|
-
|
175
|
+
if sparse_subtrees.size > 0
|
176
|
+
repo.config('core.sparseCheckout', true)
|
159
177
|
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
178
|
+
FileUtils.mkdir_p File.join(git_dir, 'info')
|
179
|
+
open(File.join(git_dir, 'info', 'sparse-checkout'), 'a') { |f|
|
180
|
+
subtrees.each { |path| f << "#{path}\n" }
|
181
|
+
}
|
182
|
+
end
|
164
183
|
|
165
184
|
else
|
166
185
|
repo = Git.open(repo_path)
|
167
186
|
|
168
187
|
end
|
169
188
|
|
170
|
-
repo.fetch
|
189
|
+
repo.fetch('origin', { :depth => 1 })
|
171
190
|
repo.reset_hard
|
172
191
|
repo.checkout('origin/master', { :f => true })
|
173
192
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-theme-open-project-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-09-
|
11
|
+
date: 2018-09-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|