puppet-courseware-manager 0.5.1 → 0.5.2
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/CHANGELOG.txt +5 -0
- data/bin/courseware +9 -0
- data/lib/courseware.rb +2 -2
- data/lib/courseware/cache.rb +4 -2
- data/lib/courseware/composer.rb +8 -3
- data/lib/courseware/dummy.rb +17 -0
- data/lib/courseware/manager/validators.rb +2 -1
- data/lib/courseware/repository.rb +2 -1
- data/lib/courseware/utils.rb +13 -5
- data/lib/courseware/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5eb2df1ef67e6ef21fd53cb49d0fbba4cca60715
|
4
|
+
data.tar.gz: 97851ebba09d5ae7db6543c0b6fca90fdd3585f8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: edb197aa9f1dd9a6aba1461c5effccf5aaa786bcc2f6ec078cc6c6ccef68d698c1ae83507dc41c709c1e82b69ef5f40e17fc94ac213a0f15f33cca09defaa3cb
|
7
|
+
data.tar.gz: e4dc9bd3d1a5d9d95be834f71c1335ae7f7d940552290957e0bf8b492c5c1e063c5d2551cf4b5344d2d3a4ceadea171f8030ef5558d6376dd7b6fc8774fa2c20
|
data/CHANGELOG.txt
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
# Courseware Manager
|
2
2
|
## Release Notes
|
3
3
|
|
4
|
+
### v0.5.2
|
5
|
+
* Add support for Showoff named sections, making it possible to validate new courses.
|
6
|
+
* Add support for packaging more showoff formats.
|
7
|
+
* Add support for running headless, so we can generate PDFs in the classroom.
|
8
|
+
|
4
9
|
### v0.5.1
|
5
10
|
* Support modular presentations
|
6
11
|
* Allow watermarked PDF files via metadata in showoff
|
data/bin/courseware
CHANGED
@@ -31,6 +31,14 @@ optparse = OptionParser.new { |opts|
|
|
31
31
|
cmdlineopts[:presfile] = opt
|
32
32
|
end
|
33
33
|
|
34
|
+
opts.on("-o", "--output DIRECTORY", "Output directory to place generated files in.") do |opt|
|
35
|
+
cmdlineopts[:output] = opt
|
36
|
+
end
|
37
|
+
|
38
|
+
opts.on("-n", "--no-cache", "Don't cache template content") do
|
39
|
+
cmdlineopts[:nocache] = true
|
40
|
+
end
|
41
|
+
|
34
42
|
opts.on("-d", "--debug", "Display debugging messages") do
|
35
43
|
cmdlineopts[:debug] = true
|
36
44
|
end
|
@@ -58,6 +66,7 @@ config ||= YAML.load_file(File.expand_path('../courseware.yaml')) rescue {}
|
|
58
66
|
config.merge!(cmdlineopts)
|
59
67
|
# finally, apply defaults to any unset options
|
60
68
|
config[:templates] ||= 'git@github.com:puppetlabs/courseware-templates.git'
|
69
|
+
config[:nocache] ||= false
|
61
70
|
config[:cachedir] ||= '~/.courseware'
|
62
71
|
config[:stylesheet] ||= 'courseware.css'
|
63
72
|
config[:renderer] ||= :wkhtmltopdf
|
data/lib/courseware.rb
CHANGED
@@ -19,8 +19,8 @@ class Courseware
|
|
19
19
|
@manager = Courseware::Manager.new(config, @repository)
|
20
20
|
else
|
21
21
|
require 'courseware/dummy'
|
22
|
-
@repository = Courseware::Dummy.new
|
23
|
-
@manager = Courseware::Dummy.new
|
22
|
+
@repository = Courseware::Dummy.new(config)
|
23
|
+
@manager = Courseware::Dummy.new(config)
|
24
24
|
$logger.debug "Running outside a valid git repository."
|
25
25
|
end
|
26
26
|
end
|
data/lib/courseware/cache.rb
CHANGED
data/lib/courseware/composer.rb
CHANGED
@@ -53,7 +53,7 @@ class Courseware::Composer
|
|
53
53
|
|
54
54
|
subject ||= Courseware.choose_variant
|
55
55
|
subject = subject.to_s
|
56
|
-
content =
|
56
|
+
content = Courseware.parse_showoff(subject)
|
57
57
|
variant = File.basename(subject, '.json')
|
58
58
|
current = @repository.current(@coursename)
|
59
59
|
|
@@ -69,13 +69,18 @@ class Courseware::Composer
|
|
69
69
|
FileUtils.cp subject, "build/#{variant}/showoff.json"
|
70
70
|
|
71
71
|
content['sections'].each do |section|
|
72
|
-
|
73
|
-
|
72
|
+
if section.is_a? Hash
|
73
|
+
path = section['include']
|
74
|
+
else
|
75
|
+
path = section
|
76
|
+
end
|
74
77
|
|
75
78
|
dir = File.dirname path
|
76
79
|
FileUtils.mkdir_p "build/#{variant}/#{dir}"
|
77
80
|
FileUtils.cp path, "build/#{variant}/#{path}"
|
78
81
|
|
82
|
+
next unless section.is_a? Hash
|
83
|
+
|
79
84
|
files = JSON.parse(File.read(path))
|
80
85
|
files.each do |file|
|
81
86
|
FileUtils.cp "#{dir}/#{file}", "build/#{variant}/#{dir}/#{file}"
|
data/lib/courseware/dummy.rb
CHANGED
@@ -1,4 +1,21 @@
|
|
1
1
|
class Courseware::Dummy
|
2
|
+
attr_reader :coursename, :prefix
|
3
|
+
|
4
|
+
def initialize(config, repository=nil, generator=nil, printer=nil)
|
5
|
+
@config = config
|
6
|
+
|
7
|
+
showoff = Courseware.parse_showoff(@config[:presfile])
|
8
|
+
@coursename = showoff['name']
|
9
|
+
@prefix = showoff['name'].gsub(' ', '_')
|
10
|
+
@sections = showoff['sections']
|
11
|
+
@password = showoff['key']
|
12
|
+
@current = showoff['courseware_release']
|
13
|
+
end
|
14
|
+
|
15
|
+
def current(prefix)
|
16
|
+
@current
|
17
|
+
end
|
18
|
+
|
2
19
|
def method_missing(meth, *args, &block)
|
3
20
|
raise "Cannot call #{meth} without a working courseware repository"
|
4
21
|
end
|
@@ -32,7 +32,8 @@ class Courseware::Manager
|
|
32
32
|
sections = @sections.dup
|
33
33
|
|
34
34
|
# This seems backwards, but we do it this way to get a case sensitive match
|
35
|
-
|
35
|
+
# http://stackoverflow.com/questions/357754/can-i-traverse-symlinked-directories-in-ruby-with-a-glob -- Baby jesus is crying.
|
36
|
+
Dir.glob("**{,/*/**}/*.md") do |file|
|
36
37
|
sections.delete(file)
|
37
38
|
end
|
38
39
|
return if sections.empty?
|
@@ -3,9 +3,10 @@ require 'rubygems'
|
|
3
3
|
class Courseware::Repository
|
4
4
|
|
5
5
|
def initialize(config)
|
6
|
-
raise 'This is not a courseware repository' unless Courseware::Repository.repository?
|
7
6
|
@config = config
|
7
|
+
return if @config[:nocache]
|
8
8
|
|
9
|
+
raise 'This is not a courseware repository' unless Courseware::Repository.repository?
|
9
10
|
configure_courseware
|
10
11
|
end
|
11
12
|
|
data/lib/courseware/utils.rb
CHANGED
@@ -90,12 +90,20 @@ class Courseware
|
|
90
90
|
# TODO: I'm not happy with this being here, but I don't see a better place for it just now
|
91
91
|
def self.parse_showoff(filename)
|
92
92
|
showoff = JSON.parse(File.read(filename))
|
93
|
-
sections = showoff['sections'].map do |entry|
|
94
|
-
next entry if entry.is_a? String
|
95
|
-
|
96
|
-
|
93
|
+
sections = showoff['sections'].map do |entry, section|
|
94
|
+
next entry if entry.is_a? String and section.nil?
|
95
|
+
|
96
|
+
if entry.is_a? Hash
|
97
|
+
file = entry['include']
|
98
|
+
else
|
99
|
+
file = section
|
100
|
+
end
|
101
|
+
|
102
|
+
unless file
|
103
|
+
puts "Malformed entry: #{entry.inspect} - #{section.inspect}"
|
104
|
+
next nil
|
105
|
+
end
|
97
106
|
|
98
|
-
file = entry['include']
|
99
107
|
path = File.dirname(file)
|
100
108
|
data = JSON.parse(File.read(file))
|
101
109
|
|
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.5.
|
4
|
+
version: 0.5.2
|
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-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mdl
|
@@ -65,21 +65,21 @@ extensions: []
|
|
65
65
|
extra_rdoc_files: []
|
66
66
|
files:
|
67
67
|
- CHANGELOG.txt
|
68
|
-
- README.txt
|
69
68
|
- LICENSE
|
69
|
+
- README.txt
|
70
70
|
- bin/courseware
|
71
|
+
- lib/courseware.rb
|
71
72
|
- lib/courseware/cache.rb
|
72
73
|
- lib/courseware/composer.rb
|
73
74
|
- lib/courseware/dummy.rb
|
74
75
|
- lib/courseware/generator.rb
|
75
76
|
- lib/courseware/help.rb
|
76
|
-
- lib/courseware/manager/validators.rb
|
77
77
|
- lib/courseware/manager.rb
|
78
|
+
- lib/courseware/manager/validators.rb
|
78
79
|
- lib/courseware/printer.rb
|
79
80
|
- lib/courseware/repository.rb
|
80
81
|
- lib/courseware/utils.rb
|
81
82
|
- lib/courseware/version.rb
|
82
|
-
- lib/courseware.rb
|
83
83
|
homepage: http://github.com/puppetlabs/courseware-manager
|
84
84
|
licenses:
|
85
85
|
- Apache-2.0
|
@@ -100,7 +100,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
100
|
version: '0'
|
101
101
|
requirements: []
|
102
102
|
rubyforge_project:
|
103
|
-
rubygems_version: 2.
|
103
|
+
rubygems_version: 2.6.10
|
104
104
|
signing_key:
|
105
105
|
specification_version: 4
|
106
106
|
summary: Manage the development lifecycle of Puppet courseware. Not for general consumption.
|