| Class | Webgen::Rake::WebgenTask |
| In: |
lib/webgen/rake/webgentask.rb
|
| Parent: | ::Rake::TaskLib |
A Rake task that generates a webgen website.
It is assumed that you have already used the ‘webgen’ command to create the base directory for the site. This task is here to make it easier to integrate the generation of the website within the broader scope of another project.
require 'webgen/rake/webgentask'
Webgen::Rake::WebgenTask.new do |t|
t.directory = File.join(Dir.pwd, "webgen")
end
The attributes available to the task in the new block are:A
a parameter to new (default :webgen)
(default File.join(Dir.pwd, "webgen")
(default false)
The tasks provided are :
If the name attribute is changed then the tasks are changed to reflect that. For Example:
Webgen::Rake::WebgenTask.new(:my_webgen) do |t|
t.clobber_outdir = true
end
This will create tasks:
| clobber_outdir | [RW] | During the clobber, should webgen‘s output directory be clobbered. The default is false |
| directory | [RW] |
The directory of the webgen site. This would be the directory of your
config.yaml file. Or the parent directory of the src/ directory for webgen
The default for this is assumed to be File.join(Dir.pwd,"webgen") |
| name | [RW] | Name of webgen task. (default is :webgen) |
Create a webgen task
# File lib/webgen/rake/webgentask.rb, line 100
100: def initialize(name = :webgen)
101: @name = name
102: @directory = File.join(Dir.pwd, "webgen")
103: @clobber_outdir = false
104:
105: yield self if block_given?
106:
107: @rendered_files = FileList.new
108:
109: define
110: end
# File lib/webgen/rake/webgentask.rb, line 112
112: def define
113: desc "Run webgen"
114: task @name do |t|
115: Dir.chdir(@directory) do
116: begin
117: # some items from webgen may be sensitive to the
118: # current directory when it runs
119:
120: require 'webgen/website'
121: @website = Webgen::WebSite.new @directory
122: @out_dir = File.expand_path(@website.param_for_plugin('Core/Configuration', 'outDir'))
123: @website.render
124: puts "Webgen rendered to : #{@out_dir}"
125:
126: file_list = @website.manager['Misc/RenderedFiles'].files
127:
128: # remove @out_dir from the list of rendered_files
129: file_list.delete @out_dir
130:
131: @rendered_files << file_list
132: rescue => e
133: puts "Webgen task failed: #{e}"
134: raise e
135: end
136: end
137: end
138:
139: clobber_task = paste("clobber_",@name)
140:
141: # bit of conundrum here since we don't know what files
142: # to remove until they have been generated, so we have
143: # to generate all the files to remove them.
144: #
145: # I don't know of the right way to do this yet.
146: desc "Remove webgen products"
147: task clobber_task => [@name] do
148: rm_rf @rendered_files
149: if @clobber_outdir then
150: rm_r @out_dir rescue nil
151: end
152: end
153:
154: task :clobber => [clobber_task]
155: self
156: end