wax_tasks 0.3.0 → 0.3.1
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.
- checksums.yaml +4 -4
- data/lib/tasks/push.rake +1 -2
- data/lib/wax_tasks/branch.rb +5 -48
- data/lib/wax_tasks/collection.rb +10 -6
- data/lib/wax_tasks/local_branch.rb +21 -0
- data/lib/wax_tasks/lunr_collection.rb +5 -2
- data/lib/wax_tasks/pagemaster_collection.rb +1 -1
- data/lib/wax_tasks/travis_branch.rb +28 -0
- data/lib/wax_tasks/utils.rb +46 -37
- data/lib/wax_tasks.rb +2 -0
- data/spec/spec_helper.rb +1 -15
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6a9f379405599184347f73da048e52435aacd769de71046e617bcd9b44b0f760
|
4
|
+
data.tar.gz: 3e9e07cda10a6063cb82a3b6af02ce2453ee561fa085baf9118f6c6ef4183a52
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 939570ab776be0b04c78665439e36254f0c1a2a6fb071383f439844be039167a84986ac2fa430c6865cb61be3f35d8e1fa539a90d0054719f538a4d15d1c5dd5
|
7
|
+
data.tar.gz: b27e94c4c56e17b9298cfb5c612497c049890a3e91ec05ea8ba44d2401c9f7a5873e315fbb78d571bd0b708f0ade59db6b799b779d3b75ebc1923b5d37b23bdd
|
data/lib/tasks/push.rake
CHANGED
@@ -6,8 +6,7 @@ namespace :wax do
|
|
6
6
|
ARGS = ARGV.drop(1).each { |a| task a.to_sym }
|
7
7
|
raise 'You must specify a branch after \'wax:push:branch\'' if ARGS.empty?
|
8
8
|
|
9
|
-
target = WaxTasks::Utils.slug(ARGS.first)
|
10
9
|
task_runner = WaxTasks::TaskRunner.new
|
11
|
-
task_runner.push_branch(
|
10
|
+
task_runner.push_branch(ARGS.first)
|
12
11
|
end
|
13
12
|
end
|
data/lib/wax_tasks/branch.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'jekyll'
|
2
2
|
require 'logger'
|
3
|
-
require 'time'
|
4
3
|
require 'tmpdir'
|
5
4
|
|
6
5
|
module WaxTasks
|
@@ -37,10 +36,11 @@ module WaxTasks
|
|
37
36
|
msg = 'Building the gh-pages _site without a baseurl is not recommended'
|
38
37
|
Logger.new($stdout).warn(msg.orange)
|
39
38
|
end
|
40
|
-
FileUtils.rm_r(SITE_DIR) if File.directory?(SITE_DIR)
|
39
|
+
FileUtils.rm_r(SITE_DIR) if File.directory?(WaxTasks::SITE_DIR)
|
41
40
|
opts = {
|
42
|
-
source: '.',
|
43
|
-
destination: SITE_DIR,
|
41
|
+
source: @site[:source_dir] || '.',
|
42
|
+
destination: WaxTasks::SITE_DIR,
|
43
|
+
config: WaxTasks::DEFAULT_CONFIG,
|
44
44
|
baseurl: @baseurl,
|
45
45
|
verbose: true
|
46
46
|
}
|
@@ -52,7 +52,7 @@ module WaxTasks
|
|
52
52
|
def push
|
53
53
|
if @site[:env] == 'prod'
|
54
54
|
rebuild if @target == 'gh-pages'
|
55
|
-
raise Error::MissingSite, "Cannot find #{SITE_DIR}" unless Dir.exist? SITE_DIR
|
55
|
+
raise Error::MissingSite, "Cannot find #{WaxTasks::SITE_DIR}" unless Dir.exist? WaxTasks::SITE_DIR
|
56
56
|
Dir.chdir(SITE_DIR)
|
57
57
|
system 'git init && git add .'
|
58
58
|
system "git commit -m '#{@commit_msg}'"
|
@@ -64,47 +64,4 @@ module WaxTasks
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
end
|
67
|
-
|
68
|
-
# Branch object for `$ wax:push` task when run on Travis-CI VM
|
69
|
-
# using encrypted Travis environment vars
|
70
|
-
#
|
71
|
-
# @attr repo_slug [String] the 'user/repo_name'
|
72
|
-
# @attr user [String] the GitHub user making the commit/push
|
73
|
-
# @attr token [String] secret git access token
|
74
|
-
# @attr commit_msg [String] the commit message to use on push
|
75
|
-
# @attr origin [String] the current repository remote
|
76
|
-
# @attr baseurl [String] the site baseurl to build with (if on gh-pages)
|
77
|
-
# @attr success_msg [String] informative message to be output to console
|
78
|
-
class TravisBranch < Branch
|
79
|
-
def initialize(site, target)
|
80
|
-
super(site, target)
|
81
|
-
|
82
|
-
@repo_slug = ENV['TRAVIS_REPO_SLUG']
|
83
|
-
@user = @repo_slug.split('/').first
|
84
|
-
@token = ENV['ACCESS_TOKEN']
|
85
|
-
|
86
|
-
@commit_msg = "Updated via #{ENV['TRAVIS_COMMIT']} @#{Time.now.utc}"
|
87
|
-
@origin = "https://#{@user}:#{@token}@github.com/#{@repo_slug}.git"
|
88
|
-
@baseurl = @repo_slug.split('/').last
|
89
|
-
@success_msg = "Deploying to #{@target} branch from Travis as #{@user}."
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
# Branch object for `$ wax:push` task when run on local machine
|
94
|
-
# using local credentials
|
95
|
-
#
|
96
|
-
# @attr origin [String] the current repository remote
|
97
|
-
# @attr commit_msg [String] the commit message to use on push
|
98
|
-
# @attr baseurl [String] the site baseurl to build with (if on gh-pages)
|
99
|
-
# @attr success_msg [String] informative message to be output to console
|
100
|
-
class LocalBranch < Branch
|
101
|
-
def initialize(site, target)
|
102
|
-
super(site, target)
|
103
|
-
|
104
|
-
@origin = `git config --get remote.origin.url`.strip
|
105
|
-
@commit_msg = "Updated via local task at #{Time.now.utc}"
|
106
|
-
@baseurl = @origin.split('/').last.gsub('.git', '')
|
107
|
-
@success_msg = "Deploying to #{@target} branch from local task."
|
108
|
-
end
|
109
|
-
end
|
110
67
|
end
|
data/lib/wax_tasks/collection.rb
CHANGED
@@ -47,12 +47,16 @@ module WaxTasks
|
|
47
47
|
def ingest_file(source)
|
48
48
|
raise Error::MissingSource, "Cannot find #{source}" unless File.exist? source
|
49
49
|
|
50
|
-
case File.extname(source)
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
50
|
+
data = case File.extname(source)
|
51
|
+
when '.csv'
|
52
|
+
WaxTasks::Utils.validate_csv(source)
|
53
|
+
when '.json'
|
54
|
+
WaxTasks::Utils.validate_json(source)
|
55
|
+
when /\.ya?ml/
|
56
|
+
WaxTasks::Utils.validate_yaml(source)
|
57
|
+
else
|
58
|
+
raise Error::InvalidSource, "Can't load #{File.extname(source)} files. Culprit: #{source}"
|
59
|
+
end
|
56
60
|
|
57
61
|
WaxTasks::Utils.assert_pids(data)
|
58
62
|
WaxTasks::Utils.assert_unique(data)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'time'
|
2
|
+
|
3
|
+
module WaxTasks
|
4
|
+
# Branch object for `$ wax:push` task when run on local machine
|
5
|
+
# using local credentials
|
6
|
+
#
|
7
|
+
# @attr origin [String] the current repository remote
|
8
|
+
# @attr commit_msg [String] the commit message to use on push
|
9
|
+
# @attr baseurl [String] the site baseurl to build with (if on gh-pages)
|
10
|
+
# @attr success_msg [String] informative message to be output to console
|
11
|
+
class LocalBranch < Branch
|
12
|
+
def initialize(site, target)
|
13
|
+
super(site, target)
|
14
|
+
|
15
|
+
@origin = `git config --get remote.origin.url`.strip
|
16
|
+
@commit_msg = "Updated via local task at #{Time.now.utc}"
|
17
|
+
@baseurl = "/#{@origin.split('/').last.gsub('.git', '')}"
|
18
|
+
@success_msg = "Deploying to #{@target} branch from local task."
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -50,9 +50,12 @@ module WaxTasks
|
|
50
50
|
'link' => "{{'#{yaml.fetch('permalink')}' | relative_url }}",
|
51
51
|
'collection' => @name
|
52
52
|
}
|
53
|
-
|
53
|
+
if @content
|
54
|
+
content = WaxTasks::Utils.html_strip(File.read(page))
|
55
|
+
hash['content'] = WaxTasks::Utils.remove_diacritics(content)
|
56
|
+
end
|
54
57
|
fields = @fields.push('pid').uniq
|
55
|
-
fields.each { |f| hash[f] = yaml[f].
|
58
|
+
fields.each { |f| hash[f] = yaml[f].lunr_normalize }
|
56
59
|
hash
|
57
60
|
end
|
58
61
|
end
|
@@ -43,7 +43,7 @@ module WaxTasks
|
|
43
43
|
FileUtils.mkdir_p(@page_dir)
|
44
44
|
pages = []
|
45
45
|
@data.each_with_index do |item, idx|
|
46
|
-
page_slug = item.fetch('pid')
|
46
|
+
page_slug = Utils.slug(item.fetch('pid'))
|
47
47
|
path = "#{@page_dir}/#{page_slug}.md"
|
48
48
|
item['permalink'] = "/#{@name}/#{page_slug}#{@site[:permalink]}"
|
49
49
|
item['layout'] = @layout
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'time'
|
2
|
+
|
3
|
+
module WaxTasks
|
4
|
+
# Branch object for `$ wax:push` task when run on Travis-CI VM
|
5
|
+
# using encrypted Travis environment vars
|
6
|
+
#
|
7
|
+
# @attr repo_slug [String] the 'user/repo_name'
|
8
|
+
# @attr user [String] the GitHub user making the commit/push
|
9
|
+
# @attr token [String] secret git access token
|
10
|
+
# @attr commit_msg [String] the commit message to use on push
|
11
|
+
# @attr origin [String] the current repository remote
|
12
|
+
# @attr baseurl [String] the site baseurl to build with (if on gh-pages)
|
13
|
+
# @attr success_msg [String] informative message to be output to console
|
14
|
+
class TravisBranch < Branch
|
15
|
+
def initialize(site, target)
|
16
|
+
super(site, target)
|
17
|
+
|
18
|
+
@repo_slug = ENV['TRAVIS_REPO_SLUG']
|
19
|
+
@user = @repo_slug.split('/').first
|
20
|
+
@token = ENV['ACCESS_TOKEN']
|
21
|
+
|
22
|
+
@commit_msg = "Updated via #{ENV['TRAVIS_COMMIT']} @#{Time.now.utc}"
|
23
|
+
@origin = "https://#{@user}:#{@token}@github.com/#{@repo_slug}.git"
|
24
|
+
@baseurl = "/#{@repo_slug.split('/').last}"
|
25
|
+
@success_msg = "Deploying to #{@target} branch from Travis as #{@user}."
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/wax_tasks/utils.rb
CHANGED
@@ -89,47 +89,47 @@ module WaxTasks
|
|
89
89
|
raise Error::NoLunrCollections, 'There are no lunr collections to index.' if to_index.nil?
|
90
90
|
to_index.map { |c| c[0] }
|
91
91
|
end
|
92
|
-
end
|
93
|
-
end
|
94
92
|
|
95
|
-
#
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
self.gsub!(/\A---(.|\n)*?---/, '')
|
101
|
-
end
|
93
|
+
# Removes YAML front matter from a string
|
94
|
+
# @return [String]
|
95
|
+
def self.remove_yaml(str)
|
96
|
+
str.to_s.gsub!(/\A---(.|\n)*?---/, '')
|
97
|
+
end
|
102
98
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
99
|
+
# Cleans YAML front matter + markdown pages for lunr indexing
|
100
|
+
# @return [String]
|
101
|
+
def self.html_strip(str)
|
102
|
+
str.gsub!(/\A---(.|\n)*?---/, '') # remove yaml front matter
|
103
|
+
str.gsub!(/{%(.*)%}/, '') # remove functional liquid
|
104
|
+
str.gsub!(%r{<\/?[^>]*>}, '') # remove html
|
105
|
+
str.gsub!('\\n', '') # remove newlines
|
106
|
+
str.gsub!(/\s+/, ' ') # remove extra space
|
107
|
+
str.tr!('"', "'") # replace double quotes with single
|
108
|
+
str
|
109
|
+
end
|
114
110
|
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
111
|
+
# Normalizes accent marks/diacritics for Lunr indexing
|
112
|
+
# @return [String]
|
113
|
+
def self.remove_diacritics(str)
|
114
|
+
to_replace = 'ÀÁÂÃÄÅàáâãäåĀāĂ㥹ÇçĆćĈĉĊċČčÐðĎďĐđÈÉÊËèéêëĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħÌÍÎÏìíîïĨĩĪīĬĭĮįİıĴĵĶķĸĹĺĻļĽľĿŀŁłÑñŃńŅņŇňʼnŊŋÒÓÔÕÖØòóôõöøŌōŎŏŐőŔŕŖŗŘřŚśŜŝŞşŠšſŢţŤťŦŧÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųŴŵÝýÿŶŷŸŹźŻżŽž'
|
115
|
+
replaced_by = 'AAAAAAaaaaaaAaAaAaCcCcCcCcCcDdDdDdEEEEeeeeEeEeEeEeEeGgGgGgGgHhHhIIIIiiiiIiIiIiIiIiJjKkkLlLlLlLlLlNnNnNnNnnNnOOOOOOooooooOoOoOoRrRrRrSsSsSsSssTtTtTtUUUUuuuuUuUuUuUuUuUuWwYyyYyYZzZzZz'
|
116
|
+
str.to_s.tr(to_replace, replaced_by)
|
117
|
+
end
|
122
118
|
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
119
|
+
# Converts string to snake case and swaps out special chars
|
120
|
+
# @return [String]
|
121
|
+
def self.slug(str)
|
122
|
+
str.to_s.downcase.tr(' ', '_').gsub(/[^\w-]/, '')
|
123
|
+
end
|
127
124
|
end
|
125
|
+
end
|
128
126
|
|
127
|
+
# Monkey-patched String class
|
128
|
+
class String
|
129
129
|
# Normalizes string without diacritics for lunr indexing
|
130
130
|
# @return [String]
|
131
|
-
def
|
132
|
-
|
131
|
+
def lunr_normalize
|
132
|
+
WaxTasks::Utils.remove_diacritics(self)
|
133
133
|
end
|
134
134
|
|
135
135
|
# Colorizes console output to magenta (errors)
|
@@ -156,11 +156,11 @@ class Array
|
|
156
156
|
# Normalizes an array as a string or array of hashes
|
157
157
|
# without diacritics for lunr indexing
|
158
158
|
# @return [Hash || String] description
|
159
|
-
def
|
159
|
+
def lunr_normalize
|
160
160
|
if self.first.is_a? Hash
|
161
161
|
self
|
162
162
|
else
|
163
|
-
self.join(', ')
|
163
|
+
WaxTasks::Utils.remove_diacritics(self.join(', '))
|
164
164
|
end
|
165
165
|
end
|
166
166
|
end
|
@@ -169,7 +169,7 @@ end
|
|
169
169
|
class Hash
|
170
170
|
# Normalizes hash as itself for lunr indexing
|
171
171
|
# @return [Hash]
|
172
|
-
def
|
172
|
+
def lunr_normalize
|
173
173
|
self
|
174
174
|
end
|
175
175
|
|
@@ -188,7 +188,16 @@ end
|
|
188
188
|
class Integer
|
189
189
|
# Normalizes integer as a string for lunr indexing
|
190
190
|
# @return [String]
|
191
|
-
def
|
191
|
+
def lunr_normalize
|
192
|
+
self.to_s
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
# Monkey-patched Nil class
|
197
|
+
class NilClass
|
198
|
+
# Normalizes integer as a string for lunr indexing
|
199
|
+
# @return [String]
|
200
|
+
def lunr_normalize
|
192
201
|
self.to_s
|
193
202
|
end
|
194
203
|
end
|
data/lib/wax_tasks.rb
CHANGED
@@ -2,10 +2,12 @@ require_relative 'wax_tasks/branch'
|
|
2
2
|
require_relative 'wax_tasks/collection'
|
3
3
|
require_relative 'wax_tasks/error'
|
4
4
|
require_relative 'wax_tasks/iiif_collection'
|
5
|
+
require_relative 'wax_tasks/local_branch'
|
5
6
|
require_relative 'wax_tasks/lunr_collection'
|
6
7
|
require_relative 'wax_tasks/lunr_index'
|
7
8
|
require_relative 'wax_tasks/pagemaster_collection'
|
8
9
|
require_relative 'wax_tasks/task_runner'
|
10
|
+
require_relative 'wax_tasks/travis_branch'
|
9
11
|
require_relative 'wax_tasks/utils'
|
10
12
|
|
11
13
|
# The WaxTasks module powers the Rake tasks in `./tasks`, including:
|
data/spec/spec_helper.rb
CHANGED
@@ -1,11 +1,6 @@
|
|
1
|
-
# toggle stdout/stderr verbosity
|
2
|
-
#
|
3
1
|
# run $ DEBUG=true bundle exec rspec for verbose output
|
4
2
|
# run $ bundle exec rspec for sparse output
|
5
|
-
|
6
|
-
when 'true' then QUIET = false
|
7
|
-
else QUIET = true
|
8
|
-
end
|
3
|
+
QUIET = !ENV['DEBUG']
|
9
4
|
|
10
5
|
# use codecov + add requirements
|
11
6
|
require 'simplecov'
|
@@ -26,12 +21,3 @@ shared_context 'shared', :shared_context => :metadata do
|
|
26
21
|
let(:index_path) { 'js/lunr_index.json' }
|
27
22
|
let(:ui_path) { 'js/lunr_ui.js'}
|
28
23
|
end
|
29
|
-
|
30
|
-
# run tests in a more intuitive order
|
31
|
-
require 'tests/tasks_spec'
|
32
|
-
require 'tests/task_runner_spec'
|
33
|
-
require 'tests/utils_spec'
|
34
|
-
require 'tests/pagemaster_collection_spec'
|
35
|
-
require 'tests/lunr_collection_spec'
|
36
|
-
require 'tests/iiif_collection_spec'
|
37
|
-
require 'tests/branch_spec'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wax_tasks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marii Nyrop
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: html-proofer
|
@@ -113,10 +113,12 @@ files:
|
|
113
113
|
- lib/wax_tasks/collection.rb
|
114
114
|
- lib/wax_tasks/error.rb
|
115
115
|
- lib/wax_tasks/iiif_collection.rb
|
116
|
+
- lib/wax_tasks/local_branch.rb
|
116
117
|
- lib/wax_tasks/lunr_collection.rb
|
117
118
|
- lib/wax_tasks/lunr_index.rb
|
118
119
|
- lib/wax_tasks/pagemaster_collection.rb
|
119
120
|
- lib/wax_tasks/task_runner.rb
|
121
|
+
- lib/wax_tasks/travis_branch.rb
|
120
122
|
- lib/wax_tasks/utils.rb
|
121
123
|
- spec/setup.rb
|
122
124
|
- spec/spec_helper.rb
|
@@ -146,5 +148,5 @@ signing_key:
|
|
146
148
|
specification_version: 4
|
147
149
|
summary: Rake tasks for minimal exhibition sites with Jekyll Wax.
|
148
150
|
test_files:
|
149
|
-
- spec/setup.rb
|
150
151
|
- spec/spec_helper.rb
|
152
|
+
- spec/setup.rb
|