Class: Courseware::Generator
- Inherits:
-
Object
- Object
- Courseware::Generator
- Defined in:
- lib/courseware/generator.rb
Instance Method Summary collapse
-
#initialize(config) ⇒ Generator
constructor
A new instance of Generator.
- #links ⇒ Object
- #metadata ⇒ Object
- #rakefile ⇒ Object
- #saveconfig(configfile) ⇒ Object
- #shared ⇒ Object
- #skeleton(dest) ⇒ Object
- #styles(course = nil, version = nil) ⇒ Object
Constructor Details
#initialize(config) ⇒ Generator
Returns a new instance of Generator.
7 8 9 |
# File 'lib/courseware/generator.rb', line 7 def initialize(config) @config = config end |
Instance Method Details
#links ⇒ Object
55 56 57 58 59 60 61 62 |
# File 'lib/courseware/generator.rb', line 55 def links filename = File.join(@config[:cachedir], 'templates', 'links.json') JSON.parse(File.read(filename)).each do |file, target| $logger.info "Linking #{file} -> #{target}" FileUtils.rm_rf(file) if File.exists?(file) FileUtils.ln_sf(target, file) end end |
#metadata ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/courseware/generator.rb', line 64 def location = File.basename Dir.pwd if File.exists?(@config[:presfile]) = JSON.parse(File.read(@config[:presfile])) coursename = ['name'] description = ['description'] component = ['issues'].match(/components=(\d*)/)[1] else template = File.join(@config[:cachedir], 'templates', 'showoff.json') = JSON.parse(File.read(template)) coursename = location.capitalize description = nil component = nil end coursename = Courseware.question('Choose a short name for this course:', coursename) description = Courseware.question('Please enter a description of the course:', description) component = Courseware.get_component(component) ['name'] = coursename ['description'] = description ['edit'] = "https://github.com/puppetlabs/#{@config[:github][:repository]}/edit/qa/review/#{coursename}/#{location}/" ['issues'] = "http://tickets.puppetlabs.com/secure/CreateIssueDetails!init.jspa?pid=10302&issuetype=1&components=#{component}&priority=6&summary=" $logger.info "Updating presentation file #{@config[:presfile]}" File.write(@config[:presfile], JSON.pretty_generate()) coursename end |
#rakefile ⇒ Object
41 42 43 44 45 |
# File 'lib/courseware/generator.rb', line 41 def rakefile raise 'Update the toplevel Rakefile instead.' if File.symlink? 'Rakefile' source = File.join(@config[:cachedir], 'templates', 'Rakefile') FileUtils.cp(source, 'Rakefile') end |
#saveconfig(configfile) ⇒ Object
11 12 13 14 |
# File 'lib/courseware/generator.rb', line 11 def saveconfig(configfile) $logger.info "Saving configuration to #{configfile}" File.write(configfile, @config.to_yaml) end |
#shared ⇒ Object
36 37 38 39 |
# File 'lib/courseware/generator.rb', line 36 def shared source = File.join(@config[:cachedir], 'templates', 'shared') FileUtils.cp_r(source, '.') end |
#skeleton(dest) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/courseware/generator.rb', line 16 def skeleton(dest) source = File.join(@config[:cachedir], 'templates', 'skeleton') FileUtils.cp_r(source, dest) Dir.chdir(dest) do course = () styles(course, '0.0.1') default = Courseware::Repository.repository? ? 'P' : 'S' case Courseware.question('Should this be a (S)tandalone course or share assets with a (P)arent repository?', default) when 's','S' shared $logger.warn "Don't forget to create the GitHub repository for your new course following the EDU standard." else links $logger.warn "Don't forget to add, commit, & push this new course directory to the repository." end end end |
#styles(course = nil, version = nil) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/courseware/generator.rb', line 47 def styles(course=nil, version=nil) File.open(@config[:stylesheet], 'w') do |f| $logger.info "Updating stylesheet for #{course} version #{version}." template = File.join(@config[:cachedir], 'templates', 'showoff.css.erb') f.write ERB.new(File.read(template), nil, '-').result(binding) end end |