wax_tasks 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|