puppet-courseware-manager 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|