dokkit 0.3.0 → 0.4.0
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.
- data/History.txt +5 -0
- data/Manifest.txt +90 -105
- data/README.txt +27 -7
- data/Rakefile +2 -3
- data/bin/dokkit +3 -2
- data/lib/dokkit/application.rb +159 -0
- data/lib/dokkit/cache/cache.rb +53 -0
- data/lib/dokkit/{models/simpledocument/model/Rakefile → cache.rb} +3 -15
- data/lib/dokkit/environment/basic.rb +156 -0
- data/lib/dokkit/environment/helpers/extmap.rb +29 -0
- data/lib/dokkit/environment/helpers/fileselection.rb +53 -0
- data/lib/dokkit/environment/helpers.rb +20 -0
- data/{spec/data/test_build/Rakefile → lib/dokkit/environment.rb} +4 -15
- data/lib/dokkit/factory/factory.rb +56 -0
- data/lib/dokkit/factory.rb +9 -0
- data/lib/dokkit/filters/deplate.rb +25 -20
- data/lib/dokkit/filters/maruku.rb +6 -5
- data/lib/dokkit/filters/nil.rb +7 -6
- data/lib/dokkit/filters.rb +5 -27
- data/lib/dokkit/hash.rb +82 -0
- data/lib/dokkit/{logger.rb → logging/logger.rb} +30 -24
- data/lib/dokkit/logging/observers/console.rb +52 -0
- data/lib/dokkit/{extension/extension.rb → logging/observers.rb} +7 -5
- data/lib/dokkit/logging.rb +11 -0
- data/lib/dokkit/models/simple/Rakefile +6 -0
- data/lib/dokkit/models/simple/doc/data/html/css/style.css +3 -0
- data/lib/dokkit/models/simple/doc/data/latex/deplate.sty +46 -0
- data/lib/dokkit/models/simple/doc/layouts/simple.html +9 -0
- data/lib/dokkit/models/simple/doc/layouts/simple.latex +11 -0
- data/lib/dokkit/models/simple/doc/pages/simple.deplate +80 -0
- data/lib/dokkit/models/simple/setup/setup.rb +10 -0
- data/lib/dokkit/resource/data.rb +36 -0
- data/lib/dokkit/resource/document.rb +385 -0
- data/lib/dokkit/resource/extensions/builtin.rb +19 -0
- data/lib/dokkit/resource/extensions/html.rb +22 -0
- data/lib/dokkit/resource/extensions/url.rb +25 -0
- data/lib/dokkit/{filters/base.rb → resource/extensions.rb} +7 -8
- data/lib/dokkit/resource/filenamehelper.rb +28 -0
- data/lib/dokkit/resource.rb +11 -0
- data/lib/dokkit/tasklib/clean.rb +73 -0
- data/lib/dokkit/tasklib/render.rb +137 -0
- data/lib/dokkit/tasklib.rb +11 -0
- data/lib/dokkit.rb +26 -29
- data/spec/dokkit/application_spec.rb +141 -0
- data/spec/dokkit/cache/cache_spec.rb +87 -0
- data/spec/dokkit/dokkit_spec.rb +20 -0
- data/spec/dokkit/environment/basic_spec.rb +135 -0
- data/spec/dokkit/environment/helpers/extmap_spec.rb +52 -0
- data/spec/dokkit/environment/helpers/fileselection_spec.rb +80 -0
- data/spec/dokkit/environment/test_data/doc/pages/document_1.yaml +3 -0
- data/spec/dokkit/factory/factory_spec.rb +69 -0
- data/spec/{filter_deplate_spec.rb → dokkit/filters/deplate_spec.rb} +7 -8
- data/spec/{filter_maruku_spec.rb → dokkit/filters/maruku_spec.rb} +3 -4
- data/spec/{filter_nil_spec.rb → dokkit/filters/nil_spec.rb} +3 -4
- data/spec/{recursivemerge_spec.rb → dokkit/hash_spec.rb} +25 -27
- data/spec/{logger_spec.rb → dokkit/logging/logger_spec.rb} +35 -47
- data/spec/{consolelog_spec.rb → dokkit/logging/observers/console_spec.rb} +14 -15
- data/spec/dokkit/resource/data_spec.rb +32 -0
- data/spec/dokkit/resource/document_spec.rb +485 -0
- data/spec/dokkit/resource/extensions/html_spec.rb +35 -0
- data/spec/dokkit/resource/extensions/url_spec.rb +29 -0
- data/spec/{filehelper_spec.rb → dokkit/resource/filenamehelper_spec.rb} +12 -13
- data/spec/dokkit/resource/test_data/doc/configs/config_1.yaml +3 -0
- data/spec/dokkit/resource/test_data/doc/configs/config_2.yaml +3 -0
- data/spec/dokkit/resource/test_data/doc/configs/required.yaml +3 -0
- data/spec/dokkit/resource/test_data/doc/configs/subdir/document.yaml +3 -0
- data/spec/dokkit/resource/test_data/doc/layouts/container.html +6 -0
- data/spec/dokkit/resource/test_data/doc/layouts/layout.html +6 -0
- data/spec/{data/test_build/doc/layouts → dokkit/resource/test_data/doc/layouts/nested}/nested.html +2 -1
- data/spec/dokkit/resource/test_data/doc/layouts/subdir/document.html +6 -0
- data/spec/dokkit/resource/test_data/doc/pages/COMMON.yaml +4 -0
- data/spec/dokkit/resource/test_data/doc/pages/document_with_many_config.ext +7 -0
- data/spec/dokkit/resource/test_data/doc/pages/document_with_many_errors.ext +12 -0
- data/spec/dokkit/resource/test_data/doc/pages/document_with_many_targets.ext +19 -0
- data/spec/dokkit/resource/test_data/doc/pages/document_with_nested_layout.ext +13 -0
- data/spec/dokkit/resource/test_data/doc/pages/document_with_nil_target.ext +5 -0
- data/spec/dokkit/resource/test_data/doc/pages/document_with_not_defined_target.ext +6 -0
- data/spec/dokkit/resource/test_data/doc/pages/document_with_one_target.ext +8 -0
- data/spec/dokkit/resource/test_data/doc/pages/subdir/COMMON.yaml +3 -0
- data/spec/dokkit/resource/test_data/doc/pages/subdir/document.ext +8 -0
- data/spec/dokkit/resource/test_data/doc/pages/subdir/document.yaml +5 -0
- data/spec/dokkit/tasklib/clean_spec.rb +75 -0
- data/spec/dokkit/tasklib/render_spec.rb +125 -0
- data/spec/dokkit/tasklib/test_data/doc/pages/document_2 +0 -0
- data/spec/dokkit/test_data/dokkit/models/model1/doc/pages/model1 +0 -0
- data/spec/dokkit/test_data/dokkit/models/model2/doc/pages/model2 +0 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +120 -47
- metadata +94 -117
- data/lib/dokkit/app.rb +0 -131
- data/lib/dokkit/builtintask.rb +0 -85
- data/lib/dokkit/cachemanager.rb +0 -61
- data/lib/dokkit/cleantask.rb +0 -51
- data/lib/dokkit/consolelog.rb +0 -42
- data/lib/dokkit/defaults.rb +0 -19
- data/lib/dokkit/deplate/fmt/html-notemplate.rb +0 -21
- data/lib/dokkit/deplate/fmt/latex-notemplate.rb +0 -24
- data/lib/dokkit/document.rb +0 -221
- data/lib/dokkit/dokkitlib.rb +0 -68
- data/lib/dokkit/extension/filehelper.rb +0 -25
- data/lib/dokkit/fileselection.rb +0 -44
- data/lib/dokkit/filters/all.rb +0 -18
- data/lib/dokkit/model.rb +0 -34
- data/lib/dokkit/models/simpledocument/model/doc/layouts/simpledocument.html +0 -9
- data/lib/dokkit/models/simpledocument/model/doc/pages/simpledocument.deplate +0 -102
- data/lib/dokkit/models/simpledocument/model/tasks/all.rb +0 -3
- data/lib/dokkit/models/simpledocument/model/tasks/clean.rake +0 -3
- data/lib/dokkit/models/simpledocument/model/tasks/render.rake +0 -8
- data/lib/dokkit/models/simpledocument/model/tasks/setup.rb +0 -9
- data/lib/dokkit/modeltask.rb +0 -83
- data/lib/dokkit/pathhelper.rb +0 -46
- data/lib/dokkit/recursivemerge.rb +0 -59
- data/lib/dokkit/rendertask.rb +0 -101
- data/lib/dokkit/resourcemanager.rb +0 -177
- data/lib/dokkit/taskconfig.rb +0 -39
- data/lib/dokkit/templatetask.rb +0 -37
- data/spec/app_spec.rb +0 -55
- data/spec/builtintask_spec.rb +0 -114
- data/spec/cachemanager_spec.rb +0 -107
- data/spec/cleantask_spec.rb +0 -72
- data/spec/data/test_build/doc/configs/document_1.yaml +0 -3
- data/spec/data/test_build/doc/configs/required.yaml +0 -3
- data/spec/data/test_build/doc/configs/subdir/document_4.yaml +0 -3
- data/spec/data/test_build/doc/layouts/document_1.html +0 -9
- data/spec/data/test_build/doc/layouts/document_with_partials.html +0 -9
- data/spec/data/test_build/doc/layouts/layout.html +0 -8
- data/spec/data/test_build/doc/layouts/layout.html.backup +0 -8
- data/spec/data/test_build/doc/layouts/partials/partial.html +0 -4
- data/spec/data/test_build/doc/pages/COMMON.yaml +0 -6
- data/spec/data/test_build/doc/pages/document_1 +0 -20
- data/spec/data/test_build/doc/pages/document_1.dep +0 -4
- data/spec/data/test_build/doc/pages/document_1.yaml +0 -11
- data/spec/data/test_build/doc/pages/document_2 +0 -9
- data/spec/data/test_build/doc/pages/document_2.yaml +0 -6
- data/spec/data/test_build/doc/pages/document_3 +0 -13
- data/spec/data/test_build/doc/pages/document_7 +0 -4
- data/spec/data/test_build/doc/pages/document_7.yaml +0 -5
- data/spec/data/test_build/doc/pages/document_extended +0 -1
- data/spec/data/test_build/doc/pages/document_nested +0 -6
- data/spec/data/test_build/doc/pages/document_nested.yaml +0 -5
- data/spec/data/test_build/doc/pages/document_nolayout.ext +0 -3
- data/spec/data/test_build/doc/pages/document_nolayout.yaml +0 -2
- data/spec/data/test_build/doc/pages/document_with_partials +0 -3
- data/spec/data/test_build/doc/pages/document_with_partials.yaml +0 -2
- data/spec/data/test_build/doc/pages/partials/COMMON.yaml +0 -5
- data/spec/data/test_build/doc/pages/partials/circular_partial +0 -2
- data/spec/data/test_build/doc/pages/partials/circular_partial.yaml +0 -3
- data/spec/data/test_build/doc/pages/partials/partial +0 -2
- data/spec/data/test_build/doc/pages/subdir/COMMON.yaml +0 -2
- data/spec/data/test_build/doc/pages/subdir/document_4 +0 -11
- data/spec/data/test_build/doc/pages/subdir/subdir/COMMON.yaml +0 -2
- data/spec/data/test_build/doc/pages/subdir/subdir/document_6 +0 -3
- data/spec/data/test_build/tasks/all.rb +0 -3
- data/spec/data/test_build/tasks/clean.rake +0 -3
- data/spec/data/test_build/tasks/render.rake +0 -8
- data/spec/data/test_build/tasks/setup.rb +0 -9
- data/spec/data/test_build/tasks/template.rake +0 -3
- data/spec/document_spec.rb +0 -321
- data/spec/dokkitlib_spec.rb +0 -63
- data/spec/fileselection_spec.rb +0 -101
- data/spec/filter_base_spec.rb +0 -29
- data/spec/filters_spec.rb +0 -37
- data/spec/model_spec.rb +0 -45
- data/spec/pathhelper_spec.rb +0 -62
- data/spec/rendertask_spec.rb +0 -374
- data/spec/taskconfig_spec.rb +0 -45
- data/spec/templatetask_spec.rb +0 -72
- /data/lib/dokkit/models/{simpledocument/model/doc/configs/simpledocument.yaml → simple/doc/configs/simple.yaml} +0 -0
- /data/lib/dokkit/models/{simpledocument/model/doc/layouts/simpledocument.text → simple/doc/layouts/simple.text} +0 -0
- /data/{lib/dokkit/models/simpledocument/model/doc/data/css/style.css → spec/dokkit/environment/helpers/test_data/doc/pages/document_1.ext_1} +0 -0
- /data/spec/{data/test_build/doc/data/resource → dokkit/environment/helpers/test_data/doc/pages/document_2} +0 -0
- /data/spec/{data/test_build/doc/data/resource.exclude → dokkit/environment/helpers/test_data/doc/pages/document_3.ext_3} +0 -0
- /data/spec/{data/test_build/doc/data/subdir/resource.insubdir → dokkit/environment/test_data/doc/data/data} +0 -0
- /data/spec/{data/test_build/doc/layouts/layout → dokkit/environment/test_data/doc/pages/document_1} +0 -0
- /data/spec/{data/test_build/doc/pages/document_2.dep → dokkit/environment/test_data/doc/pages/document_2} +0 -0
- /data/spec/{data/test_build/doc/pages/document_5.exclude → dokkit/environment/test_data/doc/pages/subdir/document_1} +0 -0
- /data/{lib/dokkit/models/simpledocument/model/doc/layouts/simpledocument.latex → spec/dokkit/resource/test_data/doc/layouts/layout.latex} +0 -0
- /data/spec/{data/test_build/doc/layouts/document_1.latex → dokkit/resource/test_data/doc/layouts/subdir/document.latex} +0 -0
- /data/spec/{data/test_build/templates/layouts/layout → dokkit/tasklib/test_data/doc/data/data_1} +0 -0
- /data/spec/{data/test_build/templates/pages/template → dokkit/tasklib/test_data/doc/pages/document_1} +0 -0
data/lib/dokkit/pathhelper.rb
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# File 'pathhelper.rb' created on 15 feb 2008 at 16:33:15.
|
|
3
|
-
#
|
|
4
|
-
# See 'dokkit.rb' or +LICENSE+ for licence information.
|
|
5
|
-
#
|
|
6
|
-
# (C) 2006, 2007 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
|
|
7
|
-
#
|
|
8
|
-
|
|
9
|
-
module Dokkit
|
|
10
|
-
module PathHelper
|
|
11
|
-
def strip_ext(fn)
|
|
12
|
-
ext = File.extname(fn)
|
|
13
|
-
fn.sub(/#{ext}/, '')
|
|
14
|
-
end
|
|
15
|
-
# Get a new filename from a given filename substituting the
|
|
16
|
-
# sub_dir portion of the given file with new_dir and the file
|
|
17
|
-
# extension with new_ext.
|
|
18
|
-
#
|
|
19
|
-
# Example:
|
|
20
|
-
#
|
|
21
|
-
# filename_helper('output/subdir/document.output', 'output', 'doc/pages', '.in')
|
|
22
|
-
#
|
|
23
|
-
# should return:
|
|
24
|
-
#
|
|
25
|
-
# => 'doc/pages/subdir/document.in'
|
|
26
|
-
#
|
|
27
|
-
def filename_helper(fn, sub_dir, new_dir, new_ext = '')
|
|
28
|
-
ext = File.extname(fn).sub(/^\./,'') # strip leading dot
|
|
29
|
-
new_fn = fn.sub(/#{sub_dir}/, new_dir)
|
|
30
|
-
new_fn = new_fn << new_ext unless new_ext.empty?
|
|
31
|
-
new_fn
|
|
32
|
-
end
|
|
33
|
-
def output_fn_helper(fn, output_ext, config)
|
|
34
|
-
filename_helper(fn, config.document_dir, config.output_dir, output_ext)
|
|
35
|
-
end
|
|
36
|
-
def layout_fn_helper(fn, layout_ext, config)
|
|
37
|
-
filename_helper(fn, config.document_dir, config.layout_dir, layout_ext)
|
|
38
|
-
end
|
|
39
|
-
def config_fn_helper(fn, config)
|
|
40
|
-
filename_helper(fn, config.document_dir, config.config_dir, '.yaml')
|
|
41
|
-
end
|
|
42
|
-
def data_fn_helper(fn, config)
|
|
43
|
-
filename_helper(fn, config.data_dir, config.output_dir)
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# File 'recursivemerge.rb' created on 17 mar 2008 at 09:37:25.
|
|
3
|
-
#
|
|
4
|
-
# See 'dokkit.rb' or +LICENSE+ for licence information.
|
|
5
|
-
#
|
|
6
|
-
# (C) 2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
|
|
7
|
-
#
|
|
8
|
-
|
|
9
|
-
class Hash
|
|
10
|
-
def recursive_store(key, value, other_value = nil)
|
|
11
|
-
if(value.class == Hash && other_value.class == Hash)
|
|
12
|
-
value.recursive_merge other_value
|
|
13
|
-
else
|
|
14
|
-
store(key, other_value)
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
# Hash#recursive_merge merges two arbitrarily deep hashes into a single hash.
|
|
18
|
-
# The hash is followed recursively, so that deeply nested hashes that are at
|
|
19
|
-
# the same level will be merged when the parent hashes are merged.
|
|
20
|
-
def recursive_merge!(other_hash, &blk)
|
|
21
|
-
if block_given?
|
|
22
|
-
merge!(other_hash, &blk)
|
|
23
|
-
else
|
|
24
|
-
merge!(other_hash) do |key, value, other_value|
|
|
25
|
-
recursive_store(key, value, other_value)
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
# Non-destructive version of Hash#recursive_merge method.
|
|
30
|
-
def recursive_merge(other_hash, &blk)
|
|
31
|
-
clone.recursive_merge!(other_hash, &blk)
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
module ConfigHash
|
|
36
|
-
def recursive_store(key, value, other_value)
|
|
37
|
-
unless (key.to_sym == :layout || key.to_sym == :config)
|
|
38
|
-
if(value.class == Hash && other_value.class == Hash)
|
|
39
|
-
value.extend ConfigHash
|
|
40
|
-
other_value.extend ConfigHash
|
|
41
|
-
value.recursive_merge other_value
|
|
42
|
-
elsif(value.class == Array && other_value.class == Array)
|
|
43
|
-
value.concat(other_value)
|
|
44
|
-
elsif(value.class == String && other_value.class == Array)
|
|
45
|
-
value.to_a.concat(other_value)
|
|
46
|
-
elsif(value.class == Array && other_value.class == String)
|
|
47
|
-
value << other_value
|
|
48
|
-
else
|
|
49
|
-
store(key, other_value)
|
|
50
|
-
end
|
|
51
|
-
else
|
|
52
|
-
if(value.class == Hash && other_value.class == Hash)
|
|
53
|
-
value.recursive_merge other_value
|
|
54
|
-
else
|
|
55
|
-
store(key, other_value)
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
data/lib/dokkit/rendertask.rb
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# File 'rendertask.rb' created on 18 feb 2008 at 17:47:44.
|
|
3
|
-
#
|
|
4
|
-
# See 'dokkit.rb' or +LICENSE+ for licence information.
|
|
5
|
-
#
|
|
6
|
-
# (C) 2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
|
|
7
|
-
#
|
|
8
|
-
|
|
9
|
-
require 'rake/tasklib'
|
|
10
|
-
require 'dokkit/document'
|
|
11
|
-
require 'dokkit/pathhelper'
|
|
12
|
-
require 'dokkit/dokkitlib'
|
|
13
|
-
require 'dokkit/fileselection'
|
|
14
|
-
|
|
15
|
-
module Dokkit
|
|
16
|
-
class RenderTask < DokkitLib
|
|
17
|
-
attr_accessor :documents, :data
|
|
18
|
-
def initialize(model, namespace = 'render')
|
|
19
|
-
super(model, namespace, { :check_dir => true })
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
private
|
|
23
|
-
|
|
24
|
-
def pre_block_configuration
|
|
25
|
-
@config.document_dir ||= Dokkit::DEFAULT_DOCUMENT_DIR
|
|
26
|
-
@config.data_dir ||= Dokkit::DEFAULT_DATA_DIR
|
|
27
|
-
@config.output_dir ||= Dokkit::DEFAULT_OUTPUT_DIR
|
|
28
|
-
@config.layout_dir ||= Dokkit::DEFAULT_LAYOUT_DIR
|
|
29
|
-
@config.config_dir ||= Dokkit::DEFAULT_CONFIG_DIR
|
|
30
|
-
@config.cache_dir ||= Dokkit::DEFAULT_CACHE_DIR
|
|
31
|
-
@documents = FileSelection.new(@config.document_dir) do |fs|
|
|
32
|
-
fs.include('*')
|
|
33
|
-
fs.exclude('*.yaml')
|
|
34
|
-
end
|
|
35
|
-
@documents.extend ExtMapping
|
|
36
|
-
@data = FileSelection.new(@config.data_dir) { |fs| fs.include('*') }
|
|
37
|
-
end
|
|
38
|
-
def post_block_configuration
|
|
39
|
-
data.dir = @config.data_dir
|
|
40
|
-
documents.dir = @config.document_dir
|
|
41
|
-
end
|
|
42
|
-
def define_document_task(document)
|
|
43
|
-
targets = document.targets
|
|
44
|
-
source_fn = document.document
|
|
45
|
-
targets.each do |format, target_fn|
|
|
46
|
-
file target_fn => document.prerequisites[format] do
|
|
47
|
-
dn = File.dirname(target_fn)
|
|
48
|
-
mkdir_p(dn, :verbose => false) unless File.exists?(dn)
|
|
49
|
-
@logger.info("Render #{target_fn}")
|
|
50
|
-
File.open(target_fn, 'w+') do |f|
|
|
51
|
-
f << document.render(format)
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
targets.values
|
|
56
|
-
end
|
|
57
|
-
def define_document_tasks
|
|
58
|
-
unless documents.files.empty?
|
|
59
|
-
documents.files.collect do |source_fn|
|
|
60
|
-
blk = documents.extmapping[source_fn] if documents.extmapping
|
|
61
|
-
define_document_task Document.new(source_fn, config, &blk)
|
|
62
|
-
end
|
|
63
|
-
else @logger.error("No documents found in '#{@config.document_dir}'")
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
def define_dokkit_render_doc_task
|
|
67
|
-
dokkit_task :doc => define_document_tasks.flatten!
|
|
68
|
-
task(:doc).comment = 'Render documents'
|
|
69
|
-
end
|
|
70
|
-
def define_dokkit_render_all_task
|
|
71
|
-
dokkit_task :all => ["#{@ns}:doc", "#{@ns}:data"]
|
|
72
|
-
task(:all).comment = 'Render documents and copy data'
|
|
73
|
-
end
|
|
74
|
-
def define_data_task(source_fn)
|
|
75
|
-
target_fn = data_fn_helper(source_fn, config)
|
|
76
|
-
file target_fn => source_fn do
|
|
77
|
-
dn = File.dirname(target_fn)
|
|
78
|
-
mkdir_p(dn, :verbose => false) unless File.exists?(dn)
|
|
79
|
-
@logger.info("Copy #{target_fn}")
|
|
80
|
-
cp(source_fn, target_fn, :preserve => true, :verbose => false)
|
|
81
|
-
end
|
|
82
|
-
target_fn
|
|
83
|
-
end
|
|
84
|
-
def define_data_tasks
|
|
85
|
-
unless data.files.empty?
|
|
86
|
-
data.files.collect do |source_fn|
|
|
87
|
-
define_data_task(source_fn)
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
def define_dokkit_copy_all_data_task
|
|
92
|
-
if data_tasks = define_data_tasks
|
|
93
|
-
dokkit_task :data => data_tasks
|
|
94
|
-
else
|
|
95
|
-
dokkit_task :data
|
|
96
|
-
end
|
|
97
|
-
task(:data).comment = 'Copy data files only'
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
end
|
|
101
|
-
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# File 'resourcemanager.rb' created on 06 feb 2008 at 21:44:10.
|
|
3
|
-
#
|
|
4
|
-
# See 'dokkit.rb' or +LICENSE+ for licence information.
|
|
5
|
-
#
|
|
6
|
-
# (C) 2006, 2007 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
|
|
7
|
-
#
|
|
8
|
-
|
|
9
|
-
require 'dokkit'
|
|
10
|
-
require 'dokkit/hash'
|
|
11
|
-
require 'dokkit/cachemanager'
|
|
12
|
-
require 'dokkit/fileselection'
|
|
13
|
-
|
|
14
|
-
DOCUMENT_DIR = 'doc/pages/'
|
|
15
|
-
OUTPUT_DIR = 'output/'
|
|
16
|
-
LAYOUT_DIR = 'doc/layouts/'
|
|
17
|
-
CONFIG_DIR = 'doc/configs/'
|
|
18
|
-
DATA_DIR = 'doc/data/'
|
|
19
|
-
|
|
20
|
-
module Dokkit
|
|
21
|
-
module DocumentManager
|
|
22
|
-
attr_accessor :document_dir
|
|
23
|
-
attr_accessor :documents
|
|
24
|
-
def documentmanager_defaults
|
|
25
|
-
@document_dir = DOCUMENT_DIR
|
|
26
|
-
@documents = FileSelection.new(@document_dir) { |fs| fs.include('*') }
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
module OutputManager
|
|
30
|
-
attr_accessor :output_dir
|
|
31
|
-
attr_accessor :output_ext
|
|
32
|
-
attr_reader :outputs
|
|
33
|
-
def outputmanager_defaults
|
|
34
|
-
@output_dir = OUTPUT_DIR
|
|
35
|
-
@output_ext = '.html'
|
|
36
|
-
@outputs = { }
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
private
|
|
40
|
-
|
|
41
|
-
def collect_outputs
|
|
42
|
-
@documents.files.each do |document|
|
|
43
|
-
if(@config[document]['document'].has_key?('render'))
|
|
44
|
-
output_ext = @config[document]['document']['render']['ext'] if @config[document]['document']['render']['ext']
|
|
45
|
-
output_dir = @config[document]['document']['render']['output'] if @config[document]['document']['render']['output']
|
|
46
|
-
@outputs[document] = File.join(@output_dir, output_dir, File.basename(document)) + output_ext
|
|
47
|
-
else
|
|
48
|
-
@outputs[document] = output_fn_helper(document)
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
def output_fn_helper(fn, output_ext = @output_ext)
|
|
53
|
-
filename_helper(fn, document_dir, output_dir, output_ext)
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
module DataManager
|
|
57
|
-
attr_accessor :data_dir
|
|
58
|
-
attr_reader :data
|
|
59
|
-
|
|
60
|
-
def datamanager_defaults
|
|
61
|
-
@data_dir = DATA_DIR
|
|
62
|
-
@data = Dokkit::FileSelection.new(@data_dir) { |fs| fs.include('*') }
|
|
63
|
-
end
|
|
64
|
-
def data_fn_helper(fn)
|
|
65
|
-
filename_helper(fn, data_dir, output_dir)
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
module ConfigManager
|
|
69
|
-
attr_accessor :config_dir
|
|
70
|
-
attr_reader :configs
|
|
71
|
-
attr_reader :config
|
|
72
|
-
def configmanager_defaults
|
|
73
|
-
@config_dir = 'doc/configs/'
|
|
74
|
-
@configs = { }
|
|
75
|
-
@config = { }
|
|
76
|
-
end
|
|
77
|
-
def resolve_common_configs(document)
|
|
78
|
-
FileList.new(File.join(document_dir, '**/COMMON.yaml')).exclude(/#{File.dirname(document)}\/.*\/.*/).reverse!
|
|
79
|
-
end
|
|
80
|
-
def collect_configs
|
|
81
|
-
@documents.files.each do |document|
|
|
82
|
-
@configs[document] = []
|
|
83
|
-
@configs[document] << (config_fn_helper(document)) if File.exists?(config_fn_helper(document))
|
|
84
|
-
@configs[document].concat(resolve_common_configs(document))
|
|
85
|
-
@configs[document] << (document + '.yaml') if File.exists?(document + '.yaml')
|
|
86
|
-
end
|
|
87
|
-
@configs
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
private
|
|
91
|
-
|
|
92
|
-
def load_configs
|
|
93
|
-
collect_configs.each do |document, configs|
|
|
94
|
-
@config[document] = { }
|
|
95
|
-
configs.each do |fn|
|
|
96
|
-
@config[document].recursive_merge!(YAML::load(File.open(fn)))
|
|
97
|
-
if @config[document].has_key?('document')
|
|
98
|
-
if @config[document]['document'].has_key?('config')
|
|
99
|
-
@configs[document] << @config[document]['document']['config'] + '.yaml'
|
|
100
|
-
@config[document]['document'].delete('config')
|
|
101
|
-
end
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
@config
|
|
106
|
-
end
|
|
107
|
-
def config_fn_helper(fn)
|
|
108
|
-
filename_helper(fn, document_dir, config_dir, '.yaml')
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
|
-
module LayoutManager
|
|
112
|
-
attr_accessor :layout_dir
|
|
113
|
-
attr_reader :layouts
|
|
114
|
-
def layoutmanager_defaults
|
|
115
|
-
@layout_dir = 'doc/layouts/'
|
|
116
|
-
@layouts = { }
|
|
117
|
-
end
|
|
118
|
-
def collect_layouts
|
|
119
|
-
@documents.files.each do |document|
|
|
120
|
-
@layouts[document] = []
|
|
121
|
-
@layouts[document] << (layout_fn_helper(document)) if File.exists?(layout_fn_helper(document))
|
|
122
|
-
@layouts[document] << (document + '.html') if File.exists?(document + '.html')
|
|
123
|
-
if @config[document]['document']['layout']
|
|
124
|
-
@layouts[document] = (@config[document]['document']['layout'] + '.html') if File.exists?(@config[document]['document']['layout'] + '.html')
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
@layouts
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
private
|
|
131
|
-
|
|
132
|
-
def layout_fn_helper(fn)
|
|
133
|
-
filename_helper(fn, document_dir, layout_dir, '.html')
|
|
134
|
-
end
|
|
135
|
-
end
|
|
136
|
-
class ResourceManager
|
|
137
|
-
include DocumentManager, OutputManager, ConfigManager, LayoutManager, DataManager
|
|
138
|
-
def initialize
|
|
139
|
-
set_defaults
|
|
140
|
-
|
|
141
|
-
yield self if block_given?
|
|
142
|
-
|
|
143
|
-
load_configs
|
|
144
|
-
collect_outputs
|
|
145
|
-
collect_layouts
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
def set_defaults
|
|
149
|
-
documentmanager_defaults
|
|
150
|
-
outputmanager_defaults
|
|
151
|
-
configmanager_defaults
|
|
152
|
-
layoutmanager_defaults
|
|
153
|
-
datamanager_defaults
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
private
|
|
157
|
-
|
|
158
|
-
# Get a new filename from a given filename substituting the
|
|
159
|
-
# sub_dir portion of the given file with new_dir and the file
|
|
160
|
-
# extension with new_ext.
|
|
161
|
-
#
|
|
162
|
-
# Example:
|
|
163
|
-
#
|
|
164
|
-
# filename_helper('output/subdir/document.output', 'output', 'doc/pages', '.in')
|
|
165
|
-
#
|
|
166
|
-
# should return:
|
|
167
|
-
#
|
|
168
|
-
# => 'doc/pages/subdir/document.in'
|
|
169
|
-
#
|
|
170
|
-
def filename_helper(fn, sub_dir, new_dir, new_ext = '')
|
|
171
|
-
ext = File.extname(fn).sub(/^\./,'') # strip leading dot
|
|
172
|
-
new_fn = fn.sub(/#{sub_dir}/, new_dir)
|
|
173
|
-
new_fn = new_fn << new_ext unless new_ext.empty? #new_fn.sub(/#{ext}$/, new_ext) unless new_ext.empty?
|
|
174
|
-
new_fn
|
|
175
|
-
end
|
|
176
|
-
end
|
|
177
|
-
end
|
data/lib/dokkit/taskconfig.rb
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# File 'taskconfig.rb' created on 29 feb 2008 at 07:50:50.
|
|
3
|
-
#
|
|
4
|
-
# See 'dokkit.rb' or +LICENSE+ for licence information.
|
|
5
|
-
#
|
|
6
|
-
# (C) 2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
|
|
7
|
-
#
|
|
8
|
-
|
|
9
|
-
require 'ostruct'
|
|
10
|
-
|
|
11
|
-
module Dokkit
|
|
12
|
-
class TaskConfig < OpenStruct
|
|
13
|
-
STRIP_SLASHES = /^\/?(.*?)\/*$/
|
|
14
|
-
attr_reader :config, :directories
|
|
15
|
-
def initialize(hash = nil)
|
|
16
|
-
super(hash)
|
|
17
|
-
@directories = { }
|
|
18
|
-
|
|
19
|
-
yield self if block_given?
|
|
20
|
-
|
|
21
|
-
strip_slashes_from_dir
|
|
22
|
-
end
|
|
23
|
-
def directories
|
|
24
|
-
methods.each do |meth|
|
|
25
|
-
@directories[meth.to_sym] = send(meth.to_sym) if (meth =~ /\_dir$/)
|
|
26
|
-
end
|
|
27
|
-
@directories
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
private
|
|
31
|
-
|
|
32
|
-
def strip_slashes_from_dir
|
|
33
|
-
directories.each do |meth, dir|
|
|
34
|
-
stripped_dir = send(meth)[STRIP_SLASHES, 1]
|
|
35
|
-
send((meth.to_s + '=').to_sym, stripped_dir)
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
data/lib/dokkit/templatetask.rb
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# File 'templatetask.rb' created on 03 mar 2008 at 13:16:03.
|
|
3
|
-
#
|
|
4
|
-
# See 'dokkit.rb' or +LICENSE+ for licence information.
|
|
5
|
-
#
|
|
6
|
-
# (C) 2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
|
|
7
|
-
#
|
|
8
|
-
|
|
9
|
-
require 'dokkit/dokkitlib'
|
|
10
|
-
|
|
11
|
-
module Dokkit
|
|
12
|
-
class TemplateTask < DokkitLib
|
|
13
|
-
def initialize(model, namespace = 'template')
|
|
14
|
-
super(model, namespace, { :check_dir => true })
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
private
|
|
18
|
-
|
|
19
|
-
def pre_block_configuration
|
|
20
|
-
@config.template_dir ||= Dokkit::DEFAULT_TEMPLATE_DIR
|
|
21
|
-
end
|
|
22
|
-
def define_dokkit_create_template
|
|
23
|
-
desc "Copy the template to the given directory."
|
|
24
|
-
dokkit_task 'create', :template do |t, args|
|
|
25
|
-
template_fn = File.join(@config.template_dir, args.template)
|
|
26
|
-
@logger.error("Template '#{args.template}' doesn't exist") unless File.exists?(template_fn)
|
|
27
|
-
if ARGV.size == 2
|
|
28
|
-
dest_fn = t.application.top_level_tasks.pop
|
|
29
|
-
else
|
|
30
|
-
dest_fn = File.join('doc', args.template)
|
|
31
|
-
end
|
|
32
|
-
@logger.info("Copy template '#{File.basename(template_fn)}' to '#{dest_fn}'")
|
|
33
|
-
cp(template_fn, dest_fn, :preserve => true, :verbose => false)
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
data/spec/app_spec.rb
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# File 'app_spec.rb' created on 20 feb 2008 at 20:15:42.
|
|
3
|
-
# See 'dokkit.rb' or +LICENSE+ for licence information.
|
|
4
|
-
#
|
|
5
|
-
# (c)2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
|
|
6
|
-
#
|
|
7
|
-
# To execute this spec run:
|
|
8
|
-
#
|
|
9
|
-
# spec spec/app_spec.rb
|
|
10
|
-
#
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
$LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__),'../lib')))
|
|
14
|
-
|
|
15
|
-
require 'rubygems'
|
|
16
|
-
require 'spec'
|
|
17
|
-
require 'dokkit'
|
|
18
|
-
require 'dokkit/app'
|
|
19
|
-
require File.dirname(__FILE__) + '/spec_helper.rb'
|
|
20
|
-
|
|
21
|
-
describe Dokkit::Application, ' when initialized' do
|
|
22
|
-
before do
|
|
23
|
-
@app = Dokkit.application
|
|
24
|
-
end
|
|
25
|
-
after(:all) do
|
|
26
|
-
Dokkit.release
|
|
27
|
-
end
|
|
28
|
-
it 'should instantiate a ModelTask object to manage built-in tasks' do
|
|
29
|
-
@app.builtintask.should_not be_nil
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
describe Dokkit::Application, ' running' do
|
|
34
|
-
include CaptureStdout, SpecPathHelper
|
|
35
|
-
before(:all) do
|
|
36
|
-
@initial_dir = Dir.pwd
|
|
37
|
-
Dir.chdir(File.join(File.dirname(__FILE__), SpecPathHelper::DATA_DEST_DIR))
|
|
38
|
-
end
|
|
39
|
-
before do
|
|
40
|
-
@app = Dokkit.application
|
|
41
|
-
end
|
|
42
|
-
after do
|
|
43
|
-
Dokkit.release
|
|
44
|
-
rm_rf 'spec/data/simpledocument'
|
|
45
|
-
end
|
|
46
|
-
after(:all) do
|
|
47
|
-
Dir.chdir(@initial_dir)
|
|
48
|
-
end
|
|
49
|
-
it 'should output the list of built-in tasks' do
|
|
50
|
-
capture_stdout do
|
|
51
|
-
@app.do_option('--tasks', nil)
|
|
52
|
-
@app.run
|
|
53
|
-
end.should match(/new documentation/)
|
|
54
|
-
end
|
|
55
|
-
end
|
data/spec/builtintask_spec.rb
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# File 'modeltask_spec.rb' created on 23 feb 2008 at 20:33:52.
|
|
3
|
-
# See 'dokkit.rb' or +LICENSE+ for licence information.
|
|
4
|
-
#
|
|
5
|
-
# (c)2008 Andrea Fazzi <andrea.fazzi@alca.le.it> (and contributors).
|
|
6
|
-
#
|
|
7
|
-
# To execute this spec run:
|
|
8
|
-
#
|
|
9
|
-
# spec spec/modeltask_spec.rb
|
|
10
|
-
#
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__),'../lib')))
|
|
13
|
-
|
|
14
|
-
require 'rubygems'
|
|
15
|
-
require 'spec'
|
|
16
|
-
require 'dokkit'
|
|
17
|
-
require 'dokkit/builtintask'
|
|
18
|
-
require File.dirname(__FILE__) + '/spec_helper.rb'
|
|
19
|
-
|
|
20
|
-
describe Dokkit::BuiltinTask, ' when initialized' do
|
|
21
|
-
before do
|
|
22
|
-
Rake.application = nil
|
|
23
|
-
application = mock('application')
|
|
24
|
-
application.stub!(:logger)
|
|
25
|
-
@builtintask = Dokkit::BuiltinTask.new(application)
|
|
26
|
-
end
|
|
27
|
-
it 'should know the full path of dokkit installation directory' do
|
|
28
|
-
File.exists?(@builtintask.dokkit_dir).should be_true
|
|
29
|
-
end
|
|
30
|
-
it 'should know the full path of the built-in models dir' do
|
|
31
|
-
File.exists?(@builtintask.builtin_model_dir).should be_true
|
|
32
|
-
end
|
|
33
|
-
it 'should set a default project model' do
|
|
34
|
-
Dokkit::DEFAULT_MODEL.should == 'simpledocument'
|
|
35
|
-
end
|
|
36
|
-
it 'should store the list of the installed models' do
|
|
37
|
-
File.exists?(File.join(@builtintask.models['simpledocument'], 'model')).should be_true
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
describe Dokkit::BuiltinTask, ' when list task is invoked' do
|
|
42
|
-
include CaptureStdout
|
|
43
|
-
before do
|
|
44
|
-
Rake.application = nil
|
|
45
|
-
application = mock('application')
|
|
46
|
-
application.stub!(:logger).and_return(Dokkit::Log::ConsoleLog.consolelog)
|
|
47
|
-
@builtintask = Dokkit::BuiltinTask.new(application)
|
|
48
|
-
end
|
|
49
|
-
it 'should list the models installed on the system' do
|
|
50
|
-
capture_stdout do
|
|
51
|
-
task('list').invoke
|
|
52
|
-
end.should match(/Found model 'simpledocument'/)
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
describe Dokkit::BuiltinTask, ' when create task is invoked' do
|
|
57
|
-
include CaptureStdout
|
|
58
|
-
before do
|
|
59
|
-
Rake.application = nil
|
|
60
|
-
ARGV.clear
|
|
61
|
-
application = mock('application')
|
|
62
|
-
application.stub!(:logger).and_return(Dokkit::Log::ConsoleLog.consolelog)
|
|
63
|
-
@builtintask = Dokkit::BuiltinTask.new(application)
|
|
64
|
-
end
|
|
65
|
-
after do
|
|
66
|
-
rm_rf 'spec/data/simpledocument'
|
|
67
|
-
end
|
|
68
|
-
it 'should create a new documentation directory using the given model' do
|
|
69
|
-
ARGV.push('model:create[simpledocument]')
|
|
70
|
-
ARGV.push('spec/data/simpledocument')
|
|
71
|
-
Rake.application.collect_tasks
|
|
72
|
-
task('create').invoke('simpledocument')
|
|
73
|
-
File.exists?('spec/data/simpledocument').should be_true
|
|
74
|
-
end
|
|
75
|
-
it 'should create a new documentation directory using simpledocument as default model' do
|
|
76
|
-
ARGV.push('create')
|
|
77
|
-
ARGV.push('spec/data/simpledocument')
|
|
78
|
-
Rake.application.collect_tasks
|
|
79
|
-
task('create').invoke
|
|
80
|
-
File.exists?('spec/data/simpledocument').should be_true
|
|
81
|
-
end
|
|
82
|
-
it 'should inform that a new documentation directory has been created' do
|
|
83
|
-
ARGV.push('create')
|
|
84
|
-
ARGV.push('spec/data/simpledocument')
|
|
85
|
-
Rake.application.collect_tasks
|
|
86
|
-
capture_stdout do
|
|
87
|
-
task('create').invoke
|
|
88
|
-
end.should match(/Create '.*' based on '.*' model/)
|
|
89
|
-
end
|
|
90
|
-
it 'should raise an error if model not found' do
|
|
91
|
-
ARGV.push('create[notexists]')
|
|
92
|
-
ARGV.push('spec/data/simpledocument')
|
|
93
|
-
Rake.application.collect_tasks
|
|
94
|
-
lambda {
|
|
95
|
-
task('create').invoke('spec/data/simpledocument')
|
|
96
|
-
}.should raise_error(RuntimeError, /Model '.*' not found/)
|
|
97
|
-
end
|
|
98
|
-
it 'should raise an error if target directory exists' do
|
|
99
|
-
ARGV.push('create')
|
|
100
|
-
ARGV.push('spec/data/test_build')
|
|
101
|
-
Rake.application.collect_tasks
|
|
102
|
-
lambda {
|
|
103
|
-
task('create').invoke
|
|
104
|
-
}.should raise_error(RuntimeError, /Directory '.*' exists./)
|
|
105
|
-
end
|
|
106
|
-
it 'should copy model.yaml in the target directory' do
|
|
107
|
-
ARGV.push('create')
|
|
108
|
-
ARGV.push('spec/data/simpledocument')
|
|
109
|
-
Rake.application.collect_tasks
|
|
110
|
-
task('create').invoke
|
|
111
|
-
File.exists?('spec/data/simpledocument/doc/configs/model.yaml').should be_true
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
|