fontcustom 1.1.0.pre → 1.1.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/TODO.md +20 -5
- data/lib/fontcustom.rb +42 -4
- data/lib/fontcustom/cli.rb +65 -25
- data/lib/fontcustom/generator/font.rb +26 -26
- data/lib/fontcustom/generator/template.rb +29 -30
- data/lib/fontcustom/options.rb +207 -23
- data/lib/fontcustom/templates/_fontcustom-bootstrap-ie7.scss +9 -9
- data/lib/fontcustom/templates/_fontcustom-bootstrap.scss +19 -19
- data/lib/fontcustom/templates/_fontcustom-rails.scss +28 -0
- data/lib/fontcustom/templates/_fontcustom.scss +11 -11
- data/lib/fontcustom/templates/fontcustom-bootstrap-ie7.css +9 -9
- data/lib/fontcustom/templates/fontcustom-bootstrap.css +19 -19
- data/lib/fontcustom/templates/fontcustom-preview.html +34 -7
- data/lib/fontcustom/templates/fontcustom.css +11 -11
- data/lib/fontcustom/templates/fontcustom.yml +11 -6
- data/lib/fontcustom/util.rb +38 -159
- data/lib/fontcustom/version.rb +1 -1
- data/lib/fontcustom/watcher.rb +16 -14
- data/spec/fixtures/generators/.fontcustom-data-corrupted +18 -0
- data/spec/fixtures/generators/fontcustom.yml +1 -0
- data/spec/fixtures/{util/fontcustom.yml → options/any-file-name.yml} +0 -0
- data/spec/fixtures/{util → options}/config-is-in-dir/fontcustom.yml +0 -0
- data/spec/fixtures/options/fontcustom-empty.yml +1 -0
- data/spec/fixtures/{util → options}/fontcustom-malformed.yml +0 -0
- data/spec/fixtures/options/fontcustom.yml +1 -0
- data/spec/fixtures/options/no-config-here/.gitkeep +0 -0
- data/spec/fixtures/{util → options}/rails-like/config/fontcustom.yml +0 -0
- data/spec/fontcustom/generator/font_spec.rb +31 -15
- data/spec/fontcustom/generator/template_spec.rb +20 -18
- data/spec/fontcustom/options_spec.rb +428 -0
- data/spec/fontcustom/util_spec.rb +38 -336
- data/spec/fontcustom/watcher_spec.rb +7 -2
- data/spec/spec_helper.rb +1 -2
- metadata +23 -13
- data/lib/fontcustom/actions.rb +0 -28
- data/spec/fontcustom/actions_spec.rb +0 -22
@@ -1,63 +1,63 @@
|
|
1
1
|
/*
|
2
|
-
Icon Font: <%= @opts
|
2
|
+
Icon Font: <%= @opts.font_name %>
|
3
3
|
Bootstrap Override
|
4
4
|
*/
|
5
5
|
|
6
6
|
@font-face {
|
7
|
-
font-family: "<%= @opts
|
8
|
-
src: url("<%= @
|
9
|
-
src: url("<%= @
|
10
|
-
url("<%= @
|
11
|
-
url("<%= @
|
12
|
-
url("<%= @
|
7
|
+
font-family: "<%= @opts.font_name %>";
|
8
|
+
src: url("<%= @font_path %>.eot");
|
9
|
+
src: url("<%= @font_path %>.eot?#iefix") format("embedded-opentype"),
|
10
|
+
url("<%= @font_path %>.woff") format("woff"),
|
11
|
+
url("<%= @font_path %>.ttf") format("truetype"),
|
12
|
+
url("<%= @font_path %>.svg#<%= @opts.font_name %>") format("svg");
|
13
13
|
font-weight: normal;
|
14
14
|
font-style: normal;
|
15
15
|
}
|
16
16
|
|
17
|
-
[class^="<%= @opts
|
18
|
-
font-family: "<%= @opts
|
17
|
+
[class^="<%= @opts.css_prefix %>"]:before, [class*=" <%= @opts.css_prefix %>"]:before {
|
18
|
+
font-family: "<%= @opts.font_name %>";
|
19
19
|
font-weight: normal;
|
20
20
|
font-style: normal;
|
21
21
|
display: inline-block;
|
22
22
|
text-decoration: inherit;
|
23
23
|
}
|
24
24
|
|
25
|
-
a [class^="<%= @opts
|
25
|
+
a [class^="<%= @opts.css_prefix %>"], a [class*=" <%= @opts.css_prefix %>"] {
|
26
26
|
display: inline-block;
|
27
27
|
text-decoration: inherit;
|
28
28
|
}
|
29
29
|
|
30
|
-
.<%= @opts
|
30
|
+
.<%= @opts.css_prefix %>large:before {
|
31
31
|
vertical-align: top;
|
32
32
|
font-size: 1.333em;
|
33
33
|
}
|
34
34
|
|
35
|
-
.btn [class^="<%= @opts
|
35
|
+
.btn [class^="<%= @opts.css_prefix %>"], .btn [class*=" <%= @opts.css_prefix %>"] {
|
36
36
|
line-height: 0.9em;
|
37
37
|
}
|
38
38
|
|
39
|
-
li [class^="<%= @opts
|
39
|
+
li [class^="<%= @opts.css_prefix %>"], li [class*=" <%= @opts.css_prefix %>"] {
|
40
40
|
display: inline-block;
|
41
41
|
width: 1.25em;
|
42
42
|
text-align: center;
|
43
43
|
}
|
44
44
|
|
45
|
-
li .<%= @opts
|
45
|
+
li .<%= @opts.css_prefix %>large[class^="<%= @opts.css_prefix %>"], li .<%= @opts.css_prefix %>large[class*=" <%= @opts.css_prefix %>"] {
|
46
46
|
width: 1.875em;
|
47
47
|
}
|
48
48
|
|
49
|
-
li[class^="<%= @opts
|
49
|
+
li[class^="<%= @opts.css_prefix %>"], li[class*=" <%= @opts.css_prefix %>"] {
|
50
50
|
margin-left: 0;
|
51
51
|
list-style-type: none;
|
52
52
|
}
|
53
53
|
|
54
|
-
li[class^="<%= @opts
|
54
|
+
li[class^="<%= @opts.css_prefix %>"]:before, li[class*=" <%= @opts.css_prefix %>"]:before {
|
55
55
|
text-indent: -2em;
|
56
56
|
text-align: center;
|
57
57
|
}
|
58
58
|
|
59
|
-
li[class^="<%= @opts
|
59
|
+
li[class^="<%= @opts.css_prefix %>"].<%= @opts.css_prefix %>large:before, li[class*=" <%= @opts.css_prefix %>"].<%= @opts.css_prefix %>large:before {
|
60
60
|
text-indent: -1.333em;
|
61
61
|
}
|
62
|
-
<% @
|
63
|
-
.<%= @opts
|
62
|
+
<% @glyphs.each_with_index do |name, index| %>
|
63
|
+
.<%= @opts.css_prefix + name %>:before { content: "\<%= (61696+index).to_s(16) %>"; }<% end %>
|
@@ -1,11 +1,11 @@
|
|
1
1
|
<% scale = %w|12 14 16 18 21 24 36 48 60 72| %><!DOCTYPE html>
|
2
2
|
<html>
|
3
3
|
<head>
|
4
|
-
<title><%= @opts
|
5
|
-
<link rel="stylesheet" href="<%= @data[:paths][:preview_to_css] %>" />
|
6
|
-
<!--[if lte IE 7]><link rel="stylesheet" href="fontcustom-ie7.css" /><![endif]-->
|
4
|
+
<title><%= @opts.font_name %> glyphs preview</title>
|
7
5
|
|
8
6
|
<style>
|
7
|
+
/* Page Styles */
|
8
|
+
|
9
9
|
* {
|
10
10
|
-moz-box-sizing: border-box;
|
11
11
|
-webkit-box-sizing: border-box;
|
@@ -86,6 +86,33 @@
|
|
86
86
|
font-size: 12px;
|
87
87
|
padding: 20px 0;
|
88
88
|
}
|
89
|
+
|
90
|
+
/* Icon Font: <%= @opts.font_name %> */
|
91
|
+
|
92
|
+
@font-face {
|
93
|
+
font-family: "<%= @opts.font_name %>";
|
94
|
+
src: url("<%= @data[:paths][:preview_to_fonts] %>.eot");
|
95
|
+
src: url("<%= @data[:paths][:preview_to_fonts] %>.eot?#iefix") format("embedded-opentype"),
|
96
|
+
url("<%= @data[:paths][:preview_to_fonts] %>.woff") format("woff"),
|
97
|
+
url("<%= @data[:paths][:preview_to_fonts] %>.ttf") format("truetype"),
|
98
|
+
url("<%= @data[:paths][:preview_to_fonts] %>.svg#<%= @opts.font_name %>") format("svg");
|
99
|
+
font-weight: normal;
|
100
|
+
font-style: normal;
|
101
|
+
}
|
102
|
+
|
103
|
+
<%= @glyphs.map {|name| ".#{@opts.css_prefix + name}:before"}.join(",\n") %> {
|
104
|
+
font-family: "<%= @opts.font_name %>";
|
105
|
+
font-style: normal;
|
106
|
+
font-weight: normal;
|
107
|
+
font-variant: normal;
|
108
|
+
text-transform: none;
|
109
|
+
line-height: 1;
|
110
|
+
-webkit-font-smoothing: antialiased;
|
111
|
+
display: inline-block;
|
112
|
+
text-decoration: inherit;
|
113
|
+
}
|
114
|
+
<% @glyphs.each_with_index do |name, index| %>
|
115
|
+
.<%= @opts.css_prefix + name %>:before { content: "\<%= (61696+index).to_s(16) %>"; }<% end %>
|
89
116
|
</style>
|
90
117
|
|
91
118
|
<!--[if lte IE 8]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
|
@@ -93,18 +120,18 @@
|
|
93
120
|
|
94
121
|
<body>
|
95
122
|
<div class="container">
|
96
|
-
<h1><%= @opts
|
123
|
+
<h1><%= @opts.font_name %> contains <%= @glyphs.length %> glyphs:</h1>
|
97
124
|
|
98
|
-
<% @
|
125
|
+
<% @glyphs.each_with_index do |name, index| %>
|
99
126
|
<div class="glyph">
|
100
127
|
<div class="preview-glyphs">
|
101
|
-
<% scale.each do |n| %><i class="step <%= @opts
|
128
|
+
<% scale.each do |n| %><i class="step <%= @opts.css_prefix + name %> size-<%= n %>"></i><% end %>
|
102
129
|
</div>
|
103
130
|
<div class="preview-scale">
|
104
131
|
<% scale.each do |n| %><span class="step"><%= n %></span><% end %>
|
105
132
|
</div>
|
106
133
|
<div class="usage">
|
107
|
-
<input class="class" type="text" readonly="readonly" onClick="this.select();" value=".<%= @opts
|
134
|
+
<input class="class" type="text" readonly="readonly" onClick="this.select();" value=".<%= @opts.css_prefix + name %>" />
|
108
135
|
<input class="point" type="text" readonly="readonly" onClick="this.select();" value="&#x<%= (61696+index).to_s(16) %>;" />
|
109
136
|
</div>
|
110
137
|
</div>
|
@@ -1,20 +1,20 @@
|
|
1
1
|
/*
|
2
|
-
Icon Font: <%= @opts
|
2
|
+
Icon Font: <%= @opts.font_name %>
|
3
3
|
*/
|
4
4
|
|
5
5
|
@font-face {
|
6
|
-
font-family: "<%= @opts
|
7
|
-
src: url("<%= @
|
8
|
-
src: url("<%= @
|
9
|
-
url("<%= @
|
10
|
-
url("<%= @
|
11
|
-
url("<%= @
|
6
|
+
font-family: "<%= @opts.font_name %>";
|
7
|
+
src: url("<%= @font_path %>.eot");
|
8
|
+
src: url("<%= @font_path %>.eot?#iefix") format("embedded-opentype"),
|
9
|
+
url("<%= @font_path %>.woff") format("woff"),
|
10
|
+
url("<%= @font_path %>.ttf") format("truetype"),
|
11
|
+
url("<%= @font_path %>.svg#<%= @opts.font_name %>") format("svg");
|
12
12
|
font-weight: normal;
|
13
13
|
font-style: normal;
|
14
14
|
}
|
15
15
|
|
16
|
-
<%= @
|
17
|
-
font-family: "<%= @opts
|
16
|
+
<%= @glyphs.map {|name| ".#{@opts.css_prefix + name}:before"}.join(",\n") %> {
|
17
|
+
font-family: "<%= @opts.font_name %>";
|
18
18
|
font-style: normal;
|
19
19
|
font-weight: normal;
|
20
20
|
font-variant: normal;
|
@@ -24,5 +24,5 @@
|
|
24
24
|
display: inline-block;
|
25
25
|
text-decoration: inherit;
|
26
26
|
}
|
27
|
-
<% @
|
28
|
-
.<%= @opts
|
27
|
+
<% @glyphs.each_with_index do |name, index| %>
|
28
|
+
.<%= @opts.css_prefix + name %>:before { content: "\<%= (61696+index).to_s(16) %>"; }<% end %>
|
@@ -1,23 +1,27 @@
|
|
1
1
|
# ---------------------------------------------------------------------------- #
|
2
2
|
# Project Info
|
3
|
-
# Learn more about these options
|
3
|
+
# Learn more about these options by running `fontcustom help` or visit
|
4
|
+
# <http://fontcustom.com>.
|
4
5
|
# ---------------------------------------------------------------------------- #
|
5
6
|
|
6
7
|
#font_name: My Custom Font
|
7
8
|
#file_hash: false
|
8
9
|
#css_prefix: glyph-
|
9
|
-
#
|
10
|
+
#preprocessor_path: fonts/fontcustom
|
10
11
|
#debug: true
|
11
12
|
#verbose: false
|
12
13
|
|
13
14
|
|
14
15
|
# ---------------------------------------------------------------------------- #
|
15
|
-
# Project
|
16
|
+
# Project Paths
|
16
17
|
# All paths are relative to PROJECT_ROOT (default: working directory).
|
17
|
-
#
|
18
|
-
#
|
18
|
+
# PROJECT_ROOT can be configured (absolute path recommended).
|
19
|
+
# For finer control, assign INPUT and OUTPUT as hashes instead of a strings.
|
20
|
+
# The OUPUT hash can route custom templates according to their filename.
|
19
21
|
# ---------------------------------------------------------------------------- #
|
20
22
|
|
23
|
+
#project_root: some/other/place
|
24
|
+
|
21
25
|
#input:
|
22
26
|
# vectors: app/assets/fontcustom/vectors
|
23
27
|
# templates: app/assets/fontcustom/templates
|
@@ -26,11 +30,12 @@
|
|
26
30
|
# fonts: app/assets/fonts
|
27
31
|
# css: app/assets/stylesheets
|
28
32
|
# preview: app/views/styleguide
|
33
|
+
# my-custom-template.yml: config
|
29
34
|
|
30
35
|
|
31
36
|
# ---------------------------------------------------------------------------- #
|
32
37
|
# Templates
|
33
|
-
#
|
38
|
+
# Included in Font Custom:
|
34
39
|
# preview, css, scss, bootstrap, bootstrap-scss, bootstrap-ie7,
|
35
40
|
# bootstrap-ie7-scss
|
36
41
|
# Custom templates should be saved in the INPUT[:templates] directory.
|
data/lib/fontcustom/util.rb
CHANGED
@@ -1,172 +1,51 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
##
|
2
|
+
# Needs access to @shell and an Options instance
|
3
|
+
# (@opts in thor, @cli_options or self in Options)
|
4
4
|
module Fontcustom
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
raise Fontcustom::Error, "Please install fontforge first. Visit http://fontcustom.com for more details."
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
# Converts all options into symbol-accessible hashes
|
15
|
-
# Priority: Passed args > config file > default
|
16
|
-
def collect_options(args = {})
|
17
|
-
options = Fontcustom::DEFAULT_OPTIONS.clone
|
18
|
-
options[:project_root] = args[:project_root] if args[:project_root]
|
19
|
-
|
20
|
-
# Parse fontcustom.yml if it exists
|
21
|
-
# Deletes :config so that it can't overwrite the output of .get_config_path
|
22
|
-
options[:config] = args.delete(:config) if args[:config]
|
23
|
-
options[:config] = get_config_path options
|
24
|
-
|
25
|
-
if options[:config]
|
26
|
-
begin
|
27
|
-
config = YAML.load File.open(options[:config])
|
28
|
-
options.merge! config
|
29
|
-
rescue
|
30
|
-
raise Fontcustom::Error, "I couldn't read your configuration file. Please check #{options[:config]} and try again."
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
# Override with passed arguments
|
35
|
-
args.delete(:input) unless args[:input] # allows nil input from CLI
|
36
|
-
options.merge! args
|
37
|
-
options[:font_name] = options[:font_name].strip.gsub(/\W/, '-')
|
38
|
-
|
39
|
-
options[:input] = get_input_paths options
|
40
|
-
options[:output] = get_output_paths options
|
41
|
-
options[:templates] = get_templates options
|
42
|
-
options
|
5
|
+
module Util
|
6
|
+
def check_fontforge
|
7
|
+
fontforge = `which fontforge`
|
8
|
+
if fontforge == "" || fontforge == "fontforge not found"
|
9
|
+
raise Fontcustom::Error, "Please install fontforge. Visit http://fontcustom.com for instructions."
|
43
10
|
end
|
11
|
+
end
|
44
12
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
if File.exists?(config) && ! File.directory?(config)
|
51
|
-
config
|
52
|
-
|
53
|
-
# :config is a dir containing fontcustom.yml
|
54
|
-
elsif File.exists? File.join(config, "fontcustom.yml")
|
55
|
-
File.join config, "fontcustom.yml"
|
56
|
-
|
57
|
-
else
|
58
|
-
raise Fontcustom::Error, "I couldn't find your configuration file. Check #{config} and try again."
|
59
|
-
end
|
60
|
-
else
|
61
|
-
# fontcustom.yml is in the project_root
|
62
|
-
if File.exists? File.join(options[:project_root], "fontcustom.yml")
|
63
|
-
File.join options[:project_root], "fontcustom.yml"
|
64
|
-
|
65
|
-
# config/fontcustom.yml is in the project_root
|
66
|
-
elsif File.exists? File.join(options[:project_root], "config", "fontcustom.yml")
|
67
|
-
File.join options[:project_root], "config", "fontcustom.yml"
|
68
|
-
|
69
|
-
else
|
70
|
-
# TODO helpful warning that no config was found
|
71
|
-
false
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
def get_input_paths(options)
|
77
|
-
paths = if options[:input].is_a? Hash
|
78
|
-
input = Thor::CoreExt::HashWithIndifferentAccess.new options[:input]
|
79
|
-
raise Fontcustom::Error, "INPUT should be a string or a hash containing a \"vectors\" key." unless input[:vectors]
|
80
|
-
|
81
|
-
input[:vectors] = File.expand_path File.join(options[:project_root], input[:vectors])
|
82
|
-
raise Fontcustom::Error, "INPUT[\"vectors\"] should be a directory. Check #{input[:vectors]} and try again." unless File.directory? input[:vectors]
|
83
|
-
|
84
|
-
if input[:templates]
|
85
|
-
input[:templates] = File.expand_path File.join(options[:project_root], input[:templates])
|
86
|
-
raise Fontcustom::Error, "INPUT[\"templates\"] should be a directory. Check #{input[:templates]} and try again." unless File.directory? input[:templates]
|
87
|
-
else
|
88
|
-
input[:templates] = input[:vectors]
|
89
|
-
end
|
90
|
-
input
|
91
|
-
elsif options[:input].is_a? String
|
92
|
-
input = File.join options[:project_root], options[:input]
|
93
|
-
raise Fontcustom::Error, "INPUT should be a directory. Check #{input} and try again." unless File.directory? input
|
94
|
-
Thor::CoreExt::HashWithIndifferentAccess.new({
|
95
|
-
:vectors => input,
|
96
|
-
:templates => input
|
97
|
-
})
|
98
|
-
end
|
99
|
-
|
100
|
-
if Dir[File.join(paths[:vectors], "*.{svg,eps}")].empty?
|
101
|
-
raise Fontcustom::Error, "#{paths[:vectors]} doesn't contain any vectors (*.svg or *.eps files)."
|
102
|
-
end
|
13
|
+
def say_changed(status, changed)
|
14
|
+
return unless base(:verbose)
|
15
|
+
message = changed.map { |file| relative_to_root(file) }
|
16
|
+
@shell.say_status status, message.join(" ")
|
17
|
+
end
|
103
18
|
|
104
|
-
|
105
|
-
|
19
|
+
def say_message(status, message)
|
20
|
+
return unless base(:verbose)
|
21
|
+
@shell.say_status status, message
|
22
|
+
end
|
106
23
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
24
|
+
def relative_to_root(path)
|
25
|
+
path = path.sub(base(:project_root), "")
|
26
|
+
path = path[1..-1] if path[0] == "/"
|
27
|
+
path
|
28
|
+
end
|
111
29
|
|
112
|
-
|
113
|
-
|
114
|
-
|
30
|
+
def overwrite_file(file, content = "")
|
31
|
+
File.open(file, "w") { |f| f.write(content) }
|
32
|
+
say_changed :update, [ file ]
|
33
|
+
end
|
115
34
|
|
116
|
-
|
117
|
-
output[:preview] ||= output[:fonts]
|
118
|
-
output
|
119
|
-
else
|
120
|
-
if options[:output].is_a? String
|
121
|
-
output = File.expand_path File.join(options[:project_root], options[:output])
|
122
|
-
raise Fontcustom::Error, "OUTPUT should be a directory, not a file. Check #{output} and try again." if File.exists?(output) && ! File.directory?(output)
|
123
|
-
else
|
124
|
-
# TODO friendly warning that we're defaulting to pwd/:font_name
|
125
|
-
output = File.join options[:project_root], options[:font_name]
|
126
|
-
end
|
127
|
-
Thor::CoreExt::HashWithIndifferentAccess.new({
|
128
|
-
:fonts => output,
|
129
|
-
:css => output,
|
130
|
-
:preview => output
|
131
|
-
})
|
132
|
-
end
|
133
|
-
end
|
35
|
+
private
|
134
36
|
|
135
|
-
|
136
|
-
#
|
137
|
-
|
138
|
-
|
139
|
-
# be able to catch template errors before any generator runs.
|
140
|
-
def get_templates(options)
|
141
|
-
# ensure that preview has plain stylesheet to reference
|
142
|
-
options[:templates] << "css" if options[:templates].include?("preview") && ! options[:templates].include?("css")
|
37
|
+
def base(sym)
|
38
|
+
# Generators have @opts
|
39
|
+
if @opts
|
40
|
+
@opts.send sym
|
143
41
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
File.join gem_lib_path, "templates", "fontcustom-preview.html"
|
148
|
-
when "css"
|
149
|
-
File.join gem_lib_path, "templates", "fontcustom.css"
|
150
|
-
when "scss"
|
151
|
-
File.join gem_lib_path, "templates", "_fontcustom.scss"
|
152
|
-
when "bootstrap"
|
153
|
-
File.join gem_lib_path, "templates", "fontcustom-bootstrap.css"
|
154
|
-
when "bootstrap-scss"
|
155
|
-
File.join gem_lib_path, "templates", "_fontcustom-bootstrap.scss"
|
156
|
-
when "bootstrap-ie7"
|
157
|
-
File.join gem_lib_path, "templates", "fontcustom-bootstrap-ie7.css"
|
158
|
-
when "bootstrap-ie7-scss"
|
159
|
-
File.join gem_lib_path, "templates", "_fontcustom-bootstrap-ie7.scss"
|
160
|
-
else
|
161
|
-
path = File.join options[:input][:templates], template
|
162
|
-
raise Fontcustom::Error, "We couldn't find your custom template at #{path}. Double check and try again?" unless File.exists? path
|
163
|
-
path
|
164
|
-
end
|
165
|
-
end
|
166
|
-
end
|
42
|
+
# Options (before merge) uses @cli_options
|
43
|
+
elsif @cli_options
|
44
|
+
@cli_options[sym]
|
167
45
|
|
168
|
-
|
169
|
-
|
46
|
+
# Options (after merge) has its own methods
|
47
|
+
else
|
48
|
+
send sym
|
170
49
|
end
|
171
50
|
end
|
172
51
|
end
|