jeckyl 0.2.7 → 0.3.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/Bugs.rdoc +14 -2
- data/Gemfile +4 -2
- data/History.txt +36 -1
- data/bin/jeckyl +89 -57
- data/bin/jeckyl-old +259 -0
- data/lib/jeckyl/helpers.rb +316 -0
- data/lib/jeckyl/version.rb +9 -8
- data/lib/jeckyl.rb +178 -251
- data/spec/jeckyl_spec.rb +25 -1
- data/test/conf.d/jeckyl +11 -2
- data/test/conf.d/jeckyl_alt.rb +55 -0
- data/test/conf.d/merger.rb +1 -1
- data/test/conf.d/not_a_hash +1 -1
- data/test/conf.d/not_positive.rb +1 -0
- data/test/test_command +42 -0
- data/test/test_configurator.rb +39 -5
- metadata +58 -78
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NTVhZDM0YjllODFmZmViOGFjMmE1YzkwNmEzNDc5ODAwMTE4Y2Q1NA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
Y2E5NWYxZjllYzI5ODE4YTk3MWRkODgxMWQ5NDY4MTQ2MjlmNzRjOA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YzY0MTQ5YjNjZWZlZmU2ODFlY2E4Njg0MmYzYjZlODg4MWIzNDQ2MmNiYTVk
|
10
|
+
MzdhN2NmNDZkNmNkZGM0YWJkOTU0YmQ2ZjFjODNhZDlkYzFiNzAyNGEzMDVl
|
11
|
+
MDcyMjFmNjNiZGM5NDJiNmQwZWQwMDYyOGVlMWEzZTk3ZjI4YWE=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MzhhYjQ1MTRiNGMwOGFlZTM2Mjg3OTZkNDQ4YzYzNjQ1N2YyOTY5NDVhNzBi
|
14
|
+
MmUwMWJiMThlYTQ3ZmRjNmIwZmQ4N2Q1MjhlNTRlM2IzZWUwNTE0MmZjMjdm
|
15
|
+
YTViNDYxMjg3ZDcyMjcwOTQwZGFiOTRhN2UwZWNmMDkyMjAzM2Q=
|
data/Bugs.rdoc
CHANGED
@@ -1,6 +1,18 @@
|
|
1
1
|
=== BUGS
|
2
2
|
|
3
|
-
[jeckyl-0.2
|
3
|
+
[jeckyl-0.3.2 22-Aug-2013]
|
4
4
|
|
5
|
-
|
5
|
+
Can use a *arg but it fails to get through method_missing. Would be nice if it could?
|
6
|
+
|
7
|
+
[jeckyl-0.3.2 26-July-2013]
|
8
|
+
|
9
|
+
When accessing a newly created options hash, it appears that undefined keys do not return nil/false as expected.
|
10
|
+
If the same request is made again the expected nil is returned.
|
11
|
+
|
12
|
+
force = options[:force_init] # where :force_init is NOT a key
|
13
|
+
=> true
|
14
|
+
force_again = options[:force_init]
|
15
|
+
=> false
|
16
|
+
|
17
|
+
Very strange and unexpected behaviour.
|
6
18
|
|
data/Gemfile
CHANGED
data/History.txt
CHANGED
@@ -4,13 +4,48 @@
|
|
4
4
|
|
5
5
|
== History
|
6
6
|
|
7
|
+
[jeckyl-0.3.7 19-Sep-2013]
|
8
|
+
|
9
|
+
Corrected some minor yard issues
|
10
|
+
|
11
|
+
[jeckyl-0.3.6 11-Sep-2013]
|
12
|
+
|
13
|
+
Added a couple of helpers (an_executable) and removed thor from utility.
|
14
|
+
|
15
|
+
[jeckyl-0.3.5 23-Aug-2013]
|
16
|
+
|
17
|
+
Ensure 1.9 compliance
|
18
|
+
|
19
|
+
[jeckyl-0.3.4 23-Aug-2013]
|
20
|
+
|
21
|
+
Test for files in merge and ignore if not there
|
22
|
+
|
23
|
+
[jeckyl-0.3.3 22-Aug-2013]
|
24
|
+
|
25
|
+
Set :config_files to an empty array by default
|
26
|
+
|
27
|
+
[jeckyl-0.3.2 25-Jul-2013]
|
28
|
+
|
29
|
+
Updated merge to merge a hash as well as a file (using Hash#merge!)
|
30
|
+
|
31
|
+
[jeckyl-0.3.1 9-Apr-2013]
|
32
|
+
|
33
|
+
Added class method get_config_opt to pre-parse -c cfile from the command line so that
|
34
|
+
the specified config file can then be used for the rest of the options
|
35
|
+
|
36
|
+
[jeckyl-0.3.0 29-Mar-2013]
|
37
|
+
|
38
|
+
Beta test. Jeckyl can now process command switches for the same options using optparse.
|
39
|
+
Helper methods moved to a separate module and a couple of new ones added (a_number, a_positive_number).
|
40
|
+
A to_s method added to make it easier to display values.
|
41
|
+
|
7
42
|
[jeckyl-0.2.7 15-Nov-2012]
|
8
43
|
|
9
44
|
Change base directory for configs to /etc/jerbil consistent with the main jerbil gem
|
10
45
|
|
11
46
|
[jeckyl-0.2.6 25-Oct-2012]
|
12
47
|
|
13
|
-
Revert to /etc/jermine while working through changes to
|
48
|
+
Revert to /etc/jermine while working through changes to other gems
|
14
49
|
|
15
50
|
[jeckyl-0.2.5 25-Oct-2012]
|
16
51
|
|
data/bin/jeckyl
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
#!/usr/bin/env
|
1
|
+
#!/usr/bin/env ruby
|
2
2
|
#
|
3
|
-
#
|
3
|
+
# Command Line utilities for Jeckyl
|
4
4
|
#
|
5
5
|
# Author:: Robert Sharp
|
6
|
-
# Copyright:: Copyright (c)
|
6
|
+
# Copyright:: Copyright (c) 2013 Robert Sharp
|
7
7
|
# License:: Open Software Licence v3.0
|
8
8
|
#
|
9
9
|
# This software is licensed for use under the Open Software Licence v. 3.0
|
@@ -12,36 +12,34 @@
|
|
12
12
|
# must themselves be licensed under the Open Software Licence v. 3.0
|
13
13
|
#
|
14
14
|
#
|
15
|
-
# replace this to point to your config class
|
16
|
-
# require 'my_jeckyl_configurator'
|
17
|
-
require 'rubygems' # want to find classes that might be in gems
|
18
|
-
require 'jeckyl'
|
19
|
-
require 'jeckyl/errors'
|
20
|
-
require 'thor'
|
21
|
-
require 'thor/group'
|
22
|
-
require 'colored'
|
23
15
|
|
16
|
+
require 'rubygems'
|
17
|
+
require 'optplus'
|
24
18
|
|
19
|
+
require 'jeckyl'
|
20
|
+
require 'jeckyl/errors'
|
25
21
|
|
26
|
-
|
27
|
-
# config files, generate a simple template or check a config file
|
28
|
-
class JeckylCLI < Thor
|
22
|
+
class JeckylCli < Optplus::Parser
|
29
23
|
|
30
|
-
|
24
|
+
usage "action [params] [options]"
|
31
25
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
26
|
+
description "Useful utilities for Jeckyl configuration files.",
|
27
|
+
"To find out more, type 'jeckyl readme'"
|
28
|
+
|
29
|
+
# before_all
|
30
|
+
|
31
|
+
def options(opts)
|
32
|
+
opts.on('-C', '--class Index', Integer, 'select a class by index') do |i|
|
33
|
+
set_option :klass_index, i
|
34
|
+
end
|
35
|
+
opts.on('-k', '--concat', 'concat all classes, starting with the oldest') do
|
36
|
+
set_option :konkat
|
37
|
+
end
|
42
38
|
end
|
43
39
|
|
44
|
-
|
40
|
+
# before_actions
|
41
|
+
|
42
|
+
describe "readme", "display the readme file for the gem"
|
45
43
|
def readme
|
46
44
|
gem_spec = Gem::Specification.find_by_name('jeckyl')
|
47
45
|
readme_path = File.join(gem_spec.gem_dir, 'README.md')
|
@@ -54,30 +52,36 @@ class JeckylCLI < Thor
|
|
54
52
|
|
55
53
|
end
|
56
54
|
|
57
|
-
|
58
|
-
def list
|
55
|
+
describe "list", "list all the config classes involved in a given class"
|
56
|
+
def list
|
57
|
+
cfile = next_argument_or_error("missing config class")
|
59
58
|
require cfile
|
60
59
|
classes = Jeckyl::Options.descendants
|
61
60
|
display_classes(classes)
|
62
61
|
rescue LoadError
|
63
62
|
puts "Error: could not load #{cfile}".red.bold
|
64
63
|
end
|
64
|
+
help :list, "Show a list of this config class and its ancestors",
|
65
|
+
"This is useful when you have create a config class from a parent class",
|
66
|
+
"in order to include the parent classes' parameters.",
|
67
|
+
"The list is indexed and the index can be used in other actions,",
|
68
|
+
"include 'jeckyl config'."
|
65
69
|
|
66
70
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
71
|
+
|
72
|
+
describe "config", "generate config file for the given config class"
|
73
|
+
def config
|
74
|
+
cfile = next_argument_or_error("You must provide a config class")
|
72
75
|
require cfile # catch LoadError if cfile does not load
|
73
76
|
|
74
|
-
my_class_index =
|
75
|
-
my_class_index
|
77
|
+
my_class_index = get_option(:klass_index) || 0
|
78
|
+
my_class_index -= 1 if my_class_index > 0
|
76
79
|
|
80
|
+
konkat = get_option :konkat
|
77
81
|
|
78
82
|
classes = Jeckyl::Options.descendants
|
79
83
|
|
80
|
-
if
|
84
|
+
if !konkat && classes[my_class_index].nil? then
|
81
85
|
$stderr.puts "Index #{my_class_index + 1} is invalid. Please select a valid index".red.bold
|
82
86
|
display_classes(classes)
|
83
87
|
return false
|
@@ -86,7 +90,7 @@ class JeckylCLI < Thor
|
|
86
90
|
$stderr.puts "There are #{classes.length} sets of configs, use 'jeckyl list' to list them or -k to generate them all".yellow if classes.length > 1
|
87
91
|
|
88
92
|
my_classes = []
|
89
|
-
if
|
93
|
+
if konkat then
|
90
94
|
classes.each_index {|i| my_classes.unshift i}
|
91
95
|
else
|
92
96
|
my_classes << my_class_index
|
@@ -100,7 +104,7 @@ class JeckylCLI < Thor
|
|
100
104
|
classes[ci].generate_config(true)
|
101
105
|
end
|
102
106
|
|
103
|
-
unless
|
107
|
+
unless konkat || classes.length == 1
|
104
108
|
puts ""
|
105
109
|
puts "# There are also parameters in:"
|
106
110
|
classes.each do |klass|
|
@@ -109,11 +113,24 @@ class JeckylCLI < Thor
|
|
109
113
|
end
|
110
114
|
|
111
115
|
rescue LoadError
|
112
|
-
|
116
|
+
if cfile.nil? then
|
117
|
+
puts "Error: you need to specify a configration file".red.bold
|
118
|
+
else
|
119
|
+
puts "Error: could not load #{cfile}".red.bold
|
120
|
+
end
|
113
121
|
end
|
122
|
+
help :config, "Outputs a default config file for the given class.",
|
123
|
+
"Use this to create a default file that you can then tailor for",
|
124
|
+
"specific settings. If there is more than one class involved use",
|
125
|
+
"-k to create an output with all the config parameters included.",
|
126
|
+
"Output is to stdout and can easily be redirected to a file as needed."
|
114
127
|
|
115
|
-
|
116
|
-
|
128
|
+
|
129
|
+
|
130
|
+
describe "klass", "generate a simple class template"
|
131
|
+
def klass
|
132
|
+
name = next_argument_or_error("missing class name")
|
133
|
+
parent = next_argument_or('Jeckyl::Config')
|
117
134
|
puts <<EOTXT
|
118
135
|
# Simple framework for defining Jeckyl options to put into a config hash
|
119
136
|
|
@@ -135,13 +152,20 @@ module #{name}
|
|
135
152
|
end
|
136
153
|
end
|
137
154
|
EOTXT
|
138
|
-
|
155
|
+
|
139
156
|
end
|
157
|
+
help :klass, "Generate a simple class file as a template for defining your",
|
158
|
+
"own parameters. You can also specify a class to inherit if you want to",
|
159
|
+
"pick up additional parameters. Otherwise the parent will default to",
|
160
|
+
"Jeckyl::Config. Alternatives include Jellog::Config and JerbilService::Config."
|
140
161
|
|
141
162
|
|
142
|
-
|
163
|
+
describe "check", "check the given config file is valid for the given class"
|
143
164
|
def check(klass_file, conf_file)
|
144
165
|
|
166
|
+
klass_file = next_argument_or_error("missing class name")
|
167
|
+
conf_file = next_argument_or_error("missing config file")
|
168
|
+
|
145
169
|
require klass_file # catch LoadError if cfile does not load
|
146
170
|
|
147
171
|
my_class_index = 0 # assume there is only one
|
@@ -153,23 +177,27 @@ EOTXT
|
|
153
177
|
|
154
178
|
rescue LoadError
|
155
179
|
puts "Error: could not load #{cfile}".red
|
156
|
-
|
180
|
+
|
157
181
|
end
|
182
|
+
help :check, "Use the given class (which must be requirable) and check",
|
183
|
+
"that the given config file is OK or show errors if not.",
|
184
|
+
"Useful way to check that a config file works before using it in earnest."
|
158
185
|
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
def markdown(cfile)
|
186
|
+
|
187
|
+
describe "markdown", "display the comments from a class in markdown format"
|
188
|
+
def markdown
|
163
189
|
|
164
|
-
|
190
|
+
cfile = next_argument_or_error("missing class")
|
165
191
|
|
166
|
-
|
167
|
-
my_class_index += -1 if my_class_index > 0
|
192
|
+
require cfile # catch LoadError if cfile does not load
|
168
193
|
|
194
|
+
my_class_index = get_option(:klass_index) || 0
|
195
|
+
my_class_index -= 1 if my_class_index > 0
|
196
|
+
konkat = get_option :konkat
|
169
197
|
|
170
198
|
classes = Jeckyl::Options.descendants
|
171
199
|
|
172
|
-
if
|
200
|
+
if !konkat && classes[my_class_index].nil? then
|
173
201
|
$stderr.puts "Index #{my_class_index + 1} is invalid. Please select a valid index".red.bold
|
174
202
|
display_classes(classes)
|
175
203
|
return false
|
@@ -178,7 +206,7 @@ EOTXT
|
|
178
206
|
$stderr.puts "There are #{classes.length} sets of configs, use 'jeckyl list' to list them or -k to generate them all".yellow if classes.length > 1
|
179
207
|
|
180
208
|
my_classes = []
|
181
|
-
if
|
209
|
+
if konkat then
|
182
210
|
classes.each_index {|i| my_classes << i}
|
183
211
|
else
|
184
212
|
my_classes << my_class_index
|
@@ -225,7 +253,7 @@ EOTXT
|
|
225
253
|
end
|
226
254
|
end
|
227
255
|
|
228
|
-
unless
|
256
|
+
unless konkat || classes.length == 1
|
229
257
|
puts ""
|
230
258
|
puts "## See Also"
|
231
259
|
puts ""
|
@@ -240,8 +268,11 @@ EOTXT
|
|
240
268
|
puts "Error: could not load #{cfile}".red
|
241
269
|
|
242
270
|
end
|
271
|
+
help :markdown, "Similar to config but instead of creating the config file itself",
|
272
|
+
"this creates a markdown file that can be used in rdoc to describe the config",
|
273
|
+
"parameters."
|
243
274
|
|
244
|
-
|
275
|
+
|
245
276
|
def display_classes(classes)
|
246
277
|
$stderr.puts "The following classes are available:".green
|
247
278
|
count = 1
|
@@ -250,8 +281,9 @@ EOTXT
|
|
250
281
|
count += 1
|
251
282
|
end
|
252
283
|
end
|
253
|
-
end
|
254
284
|
|
285
|
+
|
286
|
+
|
255
287
|
end
|
256
288
|
|
257
|
-
|
289
|
+
JeckylCli.run!
|
data/bin/jeckyl-old
ADDED
@@ -0,0 +1,259 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Description
|
4
|
+
#
|
5
|
+
# Author:: Robert Sharp
|
6
|
+
# Copyright:: Copyright (c) 2010 Robert Sharp
|
7
|
+
# License:: Open Software Licence v3.0
|
8
|
+
#
|
9
|
+
# This software is licensed for use under the Open Software Licence v. 3.0
|
10
|
+
# The terms of this licence can be found at http://www.opensource.org/licenses/osl-3.0.php
|
11
|
+
# and in the file copyright.txt. Under the terms of this licence, all derivative works
|
12
|
+
# must themselves be licensed under the Open Software Licence v. 3.0
|
13
|
+
#
|
14
|
+
#
|
15
|
+
# replace this to point to your config class
|
16
|
+
# require 'my_jeckyl_configurator'
|
17
|
+
require 'rubygems' # want to find classes that might be in gems
|
18
|
+
require 'jeckyl'
|
19
|
+
require 'jeckyl/errors'
|
20
|
+
require 'thor'
|
21
|
+
require 'thor/group'
|
22
|
+
require 'colored'
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
# the Command Line Interface for jeckyl to allow users to generate
|
27
|
+
# config files, generate a simple template or check a config file
|
28
|
+
class JeckylCLI < Thor
|
29
|
+
|
30
|
+
default_task :usage
|
31
|
+
|
32
|
+
class_option :gem, :aliases=>'-g', :type=>:string, :desc=>'get config classes etc from the given gem'
|
33
|
+
|
34
|
+
desc "usage", "You are looking at it"
|
35
|
+
def usage
|
36
|
+
puts "Useful tasks for managing Jeckyl config files."
|
37
|
+
puts ""
|
38
|
+
help
|
39
|
+
puts ""
|
40
|
+
puts "See Also:"
|
41
|
+
puts " README.md: (see jeckyl readme above)"
|
42
|
+
puts " GitHub: https://github.com/osburn-sharp/jeckyl"
|
43
|
+
puts " RubyDoc: http://rdoc.info/github/osburn-sharp/jeckyl/frames"
|
44
|
+
end
|
45
|
+
|
46
|
+
desc "readme", "display the readme file for the gem"
|
47
|
+
def readme
|
48
|
+
gem_spec = Gem::Specification.find_by_name('jeckyl')
|
49
|
+
readme_path = File.join(gem_spec.gem_dir, 'README.md')
|
50
|
+
|
51
|
+
File.open(readme_path) do |rfile|
|
52
|
+
rfile.each_line do |rline|
|
53
|
+
puts rline
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
desc "list", "list all the config classes involved in a given class"
|
60
|
+
def list(cfile)
|
61
|
+
require cfile
|
62
|
+
classes = Jeckyl::Options.descendants
|
63
|
+
display_classes(classes)
|
64
|
+
rescue LoadError
|
65
|
+
puts "Error: could not load #{cfile}".red.bold
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
desc "config", "generate config file for the given config class"
|
70
|
+
method_option :class, :aliases=>'-C', :type=>:numeric, :desc=>'select class by index'
|
71
|
+
method_option :concat, :aliases=>'-k', :desc=>'concat all classes, starting with the oldest'
|
72
|
+
def config(cfile, my_class_name=nil)
|
73
|
+
|
74
|
+
require cfile # catch LoadError if cfile does not load
|
75
|
+
|
76
|
+
my_class_index = options[:class] || 0
|
77
|
+
my_class_index += -1 if my_class_index > 0
|
78
|
+
|
79
|
+
|
80
|
+
classes = Jeckyl::Options.descendants
|
81
|
+
|
82
|
+
if options[:concat].nil? && classes[my_class_index].nil? then
|
83
|
+
$stderr.puts "Index #{my_class_index + 1} is invalid. Please select a valid index".red.bold
|
84
|
+
display_classes(classes)
|
85
|
+
return false
|
86
|
+
end
|
87
|
+
|
88
|
+
$stderr.puts "There are #{classes.length} sets of configs, use 'jeckyl list' to list them or -k to generate them all".yellow if classes.length > 1
|
89
|
+
|
90
|
+
my_classes = []
|
91
|
+
if options[:concat] then
|
92
|
+
classes.each_index {|i| my_classes.unshift i}
|
93
|
+
else
|
94
|
+
my_classes << my_class_index
|
95
|
+
end
|
96
|
+
|
97
|
+
my_classes.each do |ci|
|
98
|
+
puts "#"
|
99
|
+
puts "# Configuration Options for: #{classes[ci].name}"
|
100
|
+
puts "#"
|
101
|
+
puts
|
102
|
+
classes[ci].generate_config(true)
|
103
|
+
end
|
104
|
+
|
105
|
+
unless options[:concat] || classes.length == 1
|
106
|
+
puts ""
|
107
|
+
puts "# There are also parameters in:"
|
108
|
+
classes.each do |klass|
|
109
|
+
puts "# #{klass.name}"unless klass == classes[my_class_index]
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
rescue LoadError
|
114
|
+
puts "Error: could not load #{cfile}".red.bold
|
115
|
+
end
|
116
|
+
|
117
|
+
desc "klass", "generate a simple class template"
|
118
|
+
def klass(name, parent="Jeckyl::Config")
|
119
|
+
puts <<EOTXT
|
120
|
+
# Simple framework for defining Jeckyl options to put into a config hash
|
121
|
+
|
122
|
+
module #{name}
|
123
|
+
|
124
|
+
# configuration parameters for #{name}
|
125
|
+
#
|
126
|
+
# @see file:<PATH_TO_CONFIG_MARKDOWN_FILE> #{name} Parameter Descriptions
|
127
|
+
#
|
128
|
+
class Config < #{parent}
|
129
|
+
|
130
|
+
def configure_a_parameter(val)
|
131
|
+
default "default"
|
132
|
+
comment "Comment line",
|
133
|
+
"more comments"
|
134
|
+
a_type_of(String)
|
135
|
+
end
|
136
|
+
|
137
|
+
end
|
138
|
+
end
|
139
|
+
EOTXT
|
140
|
+
|
141
|
+
end
|
142
|
+
|
143
|
+
|
144
|
+
desc "check", "check the given config file is valid for the given class"
|
145
|
+
def check(klass_file, conf_file)
|
146
|
+
|
147
|
+
require klass_file # catch LoadError if cfile does not load
|
148
|
+
|
149
|
+
my_class_index = 0 # assume there is only one
|
150
|
+
|
151
|
+
classes = Jeckyl::Options.descendants
|
152
|
+
|
153
|
+
|
154
|
+
classes[my_class_index].check_config(conf_file)
|
155
|
+
|
156
|
+
rescue LoadError
|
157
|
+
puts "Error: could not load #{cfile}".red
|
158
|
+
|
159
|
+
end
|
160
|
+
|
161
|
+
desc "markdown", "display the comments from a class in markdown format"
|
162
|
+
method_option :class, :aliases=>'-C', :type=>:numeric, :desc=>'select class by index'
|
163
|
+
method_option :concat, :aliases=>'-k', :desc=>'concat all classes, starting with the oldest'
|
164
|
+
def markdown(cfile)
|
165
|
+
|
166
|
+
require cfile # catch LoadError if cfile does not load
|
167
|
+
|
168
|
+
my_class_index = options[:class] || 0
|
169
|
+
my_class_index += -1 if my_class_index > 0
|
170
|
+
|
171
|
+
|
172
|
+
classes = Jeckyl::Options.descendants
|
173
|
+
|
174
|
+
if options[:concat].nil? && classes[my_class_index].nil? then
|
175
|
+
$stderr.puts "Index #{my_class_index + 1} is invalid. Please select a valid index".red.bold
|
176
|
+
display_classes(classes)
|
177
|
+
return false
|
178
|
+
end
|
179
|
+
|
180
|
+
$stderr.puts "There are #{classes.length} sets of configs, use 'jeckyl list' to list them or -k to generate them all".yellow if classes.length > 1
|
181
|
+
|
182
|
+
my_classes = []
|
183
|
+
if options[:concat] then
|
184
|
+
classes.each_index {|i| my_classes << i}
|
185
|
+
else
|
186
|
+
my_classes << my_class_index
|
187
|
+
end
|
188
|
+
|
189
|
+
first = true
|
190
|
+
sublevel = 2
|
191
|
+
|
192
|
+
my_classes.each do |ci|
|
193
|
+
my_class = classes[ci]
|
194
|
+
my_configurator = my_class.new(nil, :local=>true)
|
195
|
+
|
196
|
+
if first then
|
197
|
+
puts "# #{my_class.name} Parameters"
|
198
|
+
puts ""
|
199
|
+
puts "The following parameters are defined in {#{my_class.name}} and should be used"
|
200
|
+
puts "in a configuration file. A default config file can be generated using:"
|
201
|
+
puts ""
|
202
|
+
puts " jeckyl config #{cfile}"
|
203
|
+
else
|
204
|
+
puts "## Additional Parameters from #{my_class.name}"
|
205
|
+
puts ""
|
206
|
+
puts "The following additional parameters are defined in #{my_class.name}, which"
|
207
|
+
puts "is an ancestor of this config class. See separate documentation for more details."
|
208
|
+
sublevel = 3
|
209
|
+
end
|
210
|
+
first = false
|
211
|
+
puts ""
|
212
|
+
|
213
|
+
puts "#" * sublevel + " Parameters"
|
214
|
+
puts ""
|
215
|
+
|
216
|
+
my_configurator.comments.each do |param, comment|
|
217
|
+
puts " * **#{param}**"
|
218
|
+
puts " "
|
219
|
+
comment.each {|line| puts " #{line}"}
|
220
|
+
puts ""
|
221
|
+
if my_configurator.defaults.has_key?(param) then
|
222
|
+
puts " Default: #{my_configurator.defaults[param].inspect}"
|
223
|
+
else
|
224
|
+
puts " No default set"
|
225
|
+
end
|
226
|
+
puts ""
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
unless options[:concat] || classes.length == 1
|
231
|
+
puts ""
|
232
|
+
puts "## See Also"
|
233
|
+
puts ""
|
234
|
+
puts "There are also parameters in:"
|
235
|
+
puts ""
|
236
|
+
classes.each do |klass|
|
237
|
+
puts " * #{klass.name}"unless klass == classes[my_class_index]
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
rescue LoadError
|
242
|
+
puts "Error: could not load #{cfile}".red
|
243
|
+
|
244
|
+
end
|
245
|
+
|
246
|
+
no_tasks do
|
247
|
+
def display_classes(classes)
|
248
|
+
$stderr.puts "The following classes are available:".green
|
249
|
+
count = 1
|
250
|
+
classes.each do |klass|
|
251
|
+
$stderr.puts " #{count}. #{klass.name}"
|
252
|
+
count += 1
|
253
|
+
end
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
257
|
+
end
|
258
|
+
|
259
|
+
JeckylCLI.start
|