puppet-courseware-manager 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.txt +7 -0
- data/bin/courseware +8 -0
- data/lib/courseware/printer.rb +16 -5
- data/lib/courseware/repository.rb +30 -12
- data/lib/courseware/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 437863d336c96a49cb06d1408f8adeb5596dfc08
|
4
|
+
data.tar.gz: 6c372f7ec27c63a6e3986c44a6bc38466effcf85
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0e6f9934a4e590a0504491f52fdd10e142da58e67a6b7327fb98c6302b8da75aacde5c1dfc426eb460c9de21b2271672ece630aa1c5a16a3c38c3be359a11f38
|
7
|
+
data.tar.gz: 56dad38430244340e114f54df83e1aad599858dda115cafb6a58c23d78a4e48780154f4e22726b84a3ca3667f63159b2557f485789d307fe89b517dc5870ae90
|
data/CHANGELOG.txt
CHANGED
@@ -1,6 +1,13 @@
|
|
1
1
|
# Courseware Manager
|
2
2
|
## Release Notes
|
3
3
|
|
4
|
+
### v0.6.1
|
5
|
+
* Generate release notes for shared content
|
6
|
+
* Allow different schemes for different git remotes
|
7
|
+
* More robust printing options, such as key/id CLI args
|
8
|
+
* Catch empty PDF files when printing shared content
|
9
|
+
|
10
|
+
|
4
11
|
### v0.6.0
|
5
12
|
* Can now work with topic directories.
|
6
13
|
* Knows how to identify obsolete slides and images across all courses.
|
data/bin/courseware
CHANGED
@@ -39,6 +39,14 @@ optparse = OptionParser.new { |opts|
|
|
39
39
|
cmdlineopts[:nocache] = true
|
40
40
|
end
|
41
41
|
|
42
|
+
opts.on("-e ID", "--event-id ID", "Event ID to use for generated PDF files") do |opt|
|
43
|
+
cmdlineopts[:event_id] = opt
|
44
|
+
end
|
45
|
+
|
46
|
+
opts.on("-k KEY", "--key KEY", "Key to encrypt PDF files with") do |opt|
|
47
|
+
cmdlineopts[:key] = opt
|
48
|
+
end
|
49
|
+
|
42
50
|
opts.on("-d", "--debug", "Display debugging messages") do
|
43
51
|
cmdlineopts[:debug] = true
|
44
52
|
end
|
data/lib/courseware/printer.rb
CHANGED
@@ -16,13 +16,23 @@ class Courseware::Printer
|
|
16
16
|
|
17
17
|
if @config[:pdf][:watermark]
|
18
18
|
showoff = Courseware.parse_showoff(@config[:presfile])
|
19
|
+
default = @event_id[/-?(\w*)$/, 1] rescue nil
|
19
20
|
|
20
|
-
@event_id = showoff['event_id'] || Courseware.question('Enter the Event ID:')
|
21
|
-
@password = showoff['key'] || Courseware.question('Enter desired password:',
|
21
|
+
@event_id = @config[:event_id] || showoff['event_id'] || Courseware.question('Enter the Event ID:')
|
22
|
+
@password = @config[:key] || showoff['key'] || Courseware.question('Enter desired password:', default)
|
22
23
|
|
23
24
|
if @config[:nocache]
|
24
|
-
|
25
|
-
|
25
|
+
# Find the '_support' directory, up to three levels up
|
26
|
+
# This allows some flexibility in how the courseware repository is laid out
|
27
|
+
path = '_support'
|
28
|
+
3.times do
|
29
|
+
break if File.exist?(path)
|
30
|
+
path = File.join('..', path)
|
31
|
+
end
|
32
|
+
raise "No support files found" unless File.directory?(path)
|
33
|
+
|
34
|
+
@watermark_style = File.join(path, 'watermark.css')
|
35
|
+
@watermark_pdf = File.join(path, 'watermark.pdf')
|
26
36
|
else
|
27
37
|
@watermark_style = File.join(@config[:cachedir], 'templates', 'watermark.css')
|
28
38
|
@watermark_pdf = File.join(@config[:cachedir], 'templates', 'watermark.pdf')
|
@@ -178,7 +188,8 @@ class Courseware::Printer
|
|
178
188
|
system(*command.flatten)
|
179
189
|
raise 'Error generating PDF files' unless $?.success?
|
180
190
|
|
181
|
-
|
191
|
+
pagecount = `pdftk #{output} dump_data`.each_line.select {|l| l.match /NumberOfPages/ }.first.split.last.to_i rescue nil
|
192
|
+
if [1, 2].include? pagecount
|
182
193
|
puts "#{output} is empty; aborting and cleaning up."
|
183
194
|
FileUtils.rm(output)
|
184
195
|
return
|
@@ -105,10 +105,29 @@ class Courseware::Repository
|
|
105
105
|
end
|
106
106
|
|
107
107
|
def releasenotes(last, version)
|
108
|
+
# get used files from showoff and combine them into a single array
|
109
|
+
used = JSON.parse(`showoff info --json`).values.reduce(:+)
|
110
|
+
logs = `git log --name-only --no-merges --pretty="format:* (%h) %s [%aN]" #{last}..HEAD`
|
111
|
+
curr = nil
|
112
|
+
keep = []
|
113
|
+
|
114
|
+
# sanitize
|
115
|
+
used.map! {|i| i.sub('_shared', '_content') }
|
116
|
+
used.map! {|i| i.sub('_images/shared', '_images') }
|
117
|
+
|
118
|
+
# now iterate through and select log entries that change files this presentation uses
|
119
|
+
logs.each_line do |line|
|
120
|
+
if (curr.nil? or line.start_with? '*')
|
121
|
+
curr = line
|
122
|
+
else
|
123
|
+
keep << curr if used.include? line.strip
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
108
127
|
str = "### #{version}\n"
|
109
128
|
str << "{{{Please summarize the release here}}}\n"
|
110
129
|
str << "\n"
|
111
|
-
str <<
|
130
|
+
str << keep.uniq.join
|
112
131
|
str
|
113
132
|
end
|
114
133
|
|
@@ -126,25 +145,24 @@ class Courseware::Repository
|
|
126
145
|
private
|
127
146
|
|
128
147
|
def configure_courseware
|
129
|
-
courseware
|
130
|
-
upstream
|
148
|
+
check_remote('courseware', "#{@config[:github][:public]}/#{@config[:github][:repository]}")
|
149
|
+
check_remote('upstream', "#{@config[:github][:development]}/#{@config[:github][:repository]}")
|
150
|
+
end
|
131
151
|
|
132
|
-
|
133
|
-
|
134
|
-
if
|
152
|
+
def check_remote(remote, url)
|
153
|
+
existing = `git config --get remote.#{remote}.url`.chomp
|
154
|
+
if existing =~ /^(git@|https:\/\/)github.com[:\/].*\/#{@config[:github][:repository]}(?:-.*)?(?:.git)?$/
|
135
155
|
case $1
|
136
156
|
when 'git@'
|
137
|
-
ensure_remote(
|
138
|
-
ensure_remote('upstream', "git@github.com:#{upstream}.git")
|
157
|
+
ensure_remote(remote, "git@github.com:#{url}.git")
|
139
158
|
when 'https://'
|
140
|
-
ensure_remote(
|
141
|
-
ensure_remote('upstream', "https://github.com/#{upstream}.git")
|
159
|
+
ensure_remote(remote, "https://github.com/#{url}.git")
|
142
160
|
end
|
143
|
-
elsif
|
161
|
+
elsif existing.empty?
|
144
162
|
$logger.warn 'Your origin remote is not set properly.'
|
145
163
|
$logger.warn 'Generating PDF files and other local operations will work properly, but many repository actions will fail.'
|
146
164
|
else
|
147
|
-
raise "Your
|
165
|
+
raise "Your remote (#{existing}) does not appear to be configured correctly."
|
148
166
|
end
|
149
167
|
end
|
150
168
|
|
data/lib/courseware/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet-courseware-manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Ford
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mdl
|