showoff 0.15.4 → 0.16.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.
- checksums.yaml +4 -4
- data/bin/showoff +247 -240
- data/lib/showoff.rb +11 -6
- data/lib/showoff/version.rb +1 -1
- data/lib/showoff_utils.rb +18 -17
- data/public/css/jquery-ui-1.12.1.css +1311 -0
- data/public/css/presenter.css +97 -85
- data/public/css/showoff.css +19 -0
- data/public/js/jquery-ui-1.12.1.js +18706 -0
- data/public/js/presenter.js +79 -14
- data/public/js/showoff.js +49 -10
- data/views/index.erb +1 -0
- data/views/presenter.erb +73 -63
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: edfa1cf6d1dfe2553c4f396f2e9a9045d6057a82
|
4
|
+
data.tar.gz: f17838ab1a2bfc0d72d19e4a3f6605bf10da9a97
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d19829d0084d9748e6afca84fd8c135462a1322224da66e7ee712db13ce21f9937e9b57e4eb9f68baf07c1a1f257ce3577b971ba7cbcb3c2a17dcb7c51751b70
|
7
|
+
data.tar.gz: 9bdb3c83be7a45818cb5f2389c0e2bb2d35eaeaf3242b54f681e813c3ee1c0ee3914c1b0ddc12881e63a183434f36f385d40bbf6eb24ce96b382438f2311e2d0
|
data/bin/showoff
CHANGED
@@ -6,227 +6,241 @@ require 'showoff/version'
|
|
6
6
|
require 'rubygems'
|
7
7
|
require 'gli'
|
8
8
|
|
9
|
-
#
|
10
|
-
|
9
|
+
# See https://github.com/davetron5000/gli/issues/196 for rationale for this silly wrapper
|
10
|
+
module Wrapper
|
11
11
|
include GLI::App
|
12
|
-
|
13
|
-
include GLI
|
14
|
-
end
|
12
|
+
extend self
|
15
13
|
|
16
|
-
version SHOWOFF_VERSION
|
17
|
-
program_desc <<-desc
|
18
|
-
A web based presentation engine with awesome interaction features.
|
14
|
+
version SHOWOFF_VERSION
|
15
|
+
program_desc <<-desc
|
16
|
+
A web based presentation engine with awesome interaction features.
|
19
17
|
|
20
|
-
|
21
|
-
|
22
|
-
|
18
|
+
ShowOff uses Markdown files with a few custom extensions to generate slides
|
19
|
+
that are served locally for presentation via web browser. Your audience can
|
20
|
+
view presentations directly as well, and interact with you in many ways.
|
23
21
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
22
|
+
Showoff can optionally use the PDFKit gem to autogenerate PDF files on demand.
|
23
|
+
Viewers can access the /pdf endpoint to download a generated PDF file. This
|
24
|
+
functionality is likely to be deprecated, since it is simpler and easier to
|
25
|
+
just print the /print endpoint directly from your browser.
|
28
26
|
|
29
|
-
|
30
|
-
|
31
|
-
desc
|
27
|
+
The simplest use case is to run `showoff serve` from the directory containing
|
28
|
+
the showoff.json file.
|
29
|
+
desc
|
32
30
|
|
33
31
|
|
34
|
-
desc 'Create new showoff presentation'
|
35
|
-
long_desc 'This command helps start a new showoff presentation by setting up the proper directory structure for you. It takes the directory name you would like showoff to create for you.'
|
36
|
-
command [:create,:init] do |c|
|
32
|
+
desc 'Create new showoff presentation'
|
33
|
+
long_desc 'This command helps start a new showoff presentation by setting up the proper directory structure for you. It takes the directory name you would like showoff to create for you.'
|
34
|
+
command [:create,:init] do |c|
|
37
35
|
|
38
|
-
|
39
|
-
|
36
|
+
c.desc 'Don''t create sample slides'
|
37
|
+
c.switch [:n,:nosamples]
|
40
38
|
|
41
|
-
|
42
|
-
|
43
|
-
|
39
|
+
c.desc 'Comma separated list of initial slide directory name(s).'
|
40
|
+
c.default_value 'one'
|
41
|
+
c.flag [:d,:slidedir]
|
44
42
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
43
|
+
c.action do |global_options,options,args|
|
44
|
+
dir_name = args.first || '.'
|
45
|
+
ShowOffUtils.create(dir_name,!options[:n],options[:d])
|
46
|
+
if options[:n]
|
47
|
+
puts "Add slides and update #{dir_name}/#{ShowOffUtils.presentation_config_file}"
|
48
|
+
end
|
49
|
+
if args.empty?
|
50
|
+
puts "Run 'showoff serve' to see your new slideshow"
|
51
|
+
else
|
52
|
+
puts "Run 'showoff serve' in the #{dir_name} directory to see your new slideshow"
|
53
|
+
end
|
55
54
|
end
|
56
55
|
end
|
57
|
-
end
|
58
56
|
|
59
|
-
desc 'Build a showoff presentation from a showoff.json outline'
|
60
|
-
long_desc 'This command helps start a new showoff presentation by creating each slide listing in the showoff.json file.'
|
61
|
-
command [:skeleton] do |c|
|
57
|
+
desc 'Build a showoff presentation from a showoff.json outline'
|
58
|
+
long_desc 'This command helps start a new showoff presentation by creating each slide listing in the showoff.json file.'
|
59
|
+
command [:skeleton] do |c|
|
62
60
|
|
63
|
-
|
64
|
-
|
61
|
+
c.desc 'alternate json filename'
|
62
|
+
c.flag [:f,:file]
|
65
63
|
|
66
|
-
|
67
|
-
|
68
|
-
|
64
|
+
c.action do |global_options,options,args|
|
65
|
+
ShowOffUtils.skeleton(options[:f])
|
66
|
+
puts "done. run 'showoff serve' to see your slideshow"
|
67
|
+
end
|
69
68
|
end
|
70
|
-
end
|
71
69
|
|
72
|
-
desc 'Validate the consistency of your presentation.'
|
73
|
-
long_desc 'This ensures that each file listed in showoff.json exists and validates code blocks on each slide.'
|
74
|
-
command [:validate] do |c|
|
70
|
+
desc 'Validate the consistency of your presentation.'
|
71
|
+
long_desc 'This ensures that each file listed in showoff.json exists and validates code blocks on each slide.'
|
72
|
+
command [:validate] do |c|
|
75
73
|
|
76
|
-
|
77
|
-
|
74
|
+
c.desc 'alternate json filename'
|
75
|
+
c.flag [:f,:file]
|
78
76
|
|
79
|
-
|
80
|
-
|
77
|
+
c.action do |global_options,options,args|
|
78
|
+
ShowOffUtils.validate(options[:f])
|
79
|
+
end
|
81
80
|
end
|
82
|
-
end
|
83
81
|
|
84
|
-
desc 'Puts your showoff presentation into a gh-pages branch'
|
85
|
-
long_desc 'Generates a static version of your presentation into your gh-pages branch for publishing to GitHub Pages'
|
86
|
-
command :github do |c|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
82
|
+
desc 'Puts your showoff presentation into a gh-pages branch'
|
83
|
+
long_desc 'Generates a static version of your presentation into your gh-pages branch for publishing to GitHub Pages'
|
84
|
+
command :github do |c|
|
85
|
+
c.action do |global_options,options,args|
|
86
|
+
puts "Generating static content"
|
87
|
+
ShowOffUtils.github
|
88
|
+
puts "I've updated your 'gh-pages' branch with the static version of your presentation."
|
89
|
+
puts "Push it to GitHub to publish it. Probably something like:"
|
90
|
+
puts
|
91
|
+
puts " git push origin gh-pages"
|
92
|
+
puts
|
93
|
+
end
|
95
94
|
end
|
96
|
-
end
|
97
95
|
|
98
|
-
desc 'Serves the showoff presentation in the current directory'
|
99
|
-
desc 'Setup your presentation to serve on Heroku'
|
100
|
-
arg_name 'heroku_name'
|
101
|
-
long_desc 'Creates the
|
102
|
-
command :heroku do |c|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
puts "herokuized. run something like this to launch your heroku presentation:
|
117
|
-
|
118
|
-
heroku create #{args[0]}"
|
119
|
-
|
120
|
-
if options[:g]
|
121
|
-
puts " git add .gems config.ru"
|
122
|
-
else
|
123
|
-
puts " bundle install"
|
124
|
-
puts " git add Gemfile Gemfile.lock config.ru"
|
96
|
+
desc 'Serves the showoff presentation in the current directory'
|
97
|
+
desc 'Setup your presentation to serve on Heroku'
|
98
|
+
arg_name 'heroku_name'
|
99
|
+
long_desc 'Creates the configuration files needed to Herokuize a Showoff presentation and then deploys it for you.'
|
100
|
+
command :heroku do |c|
|
101
|
+
|
102
|
+
c.desc 'add password protection to your heroku site'
|
103
|
+
c.flag [:p,:password]
|
104
|
+
|
105
|
+
c.desc 'force overwrite of existing Gemfile/.gems and config.ru files if they exist'
|
106
|
+
c.switch [:f,:force]
|
107
|
+
|
108
|
+
c.action do |global_options,options,args|
|
109
|
+
raise "heroku_name is required" if args.empty?
|
110
|
+
raise "Name must start with a letter and can only contain lowercase letters, numbers, and dashes." unless args.first =~ /^[a-z][a-z1-9-]*$/
|
111
|
+
|
112
|
+
unless system('git remote get-url heroku')
|
113
|
+
ShowOffUtils.command("heroku create #{args[0]}", "Please ensure that the heroku gem is installed and you're logged in.")
|
125
114
|
end
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
115
|
+
|
116
|
+
if ShowOffUtils.heroku(args[0],options[:f],options[:p])
|
117
|
+
ShowOffUtils.command('bundle install', 'Please ensure that the bundler gem is installed.')
|
118
|
+
|
119
|
+
begin
|
120
|
+
ShowOffUtils.command('git add Procfile Gemfile Gemfile.lock config.ru')
|
121
|
+
ShowOffUtils.command('git commit -m "Herokuized by Showoff"')
|
122
|
+
ShowOffUtils.command('git push heroku master')
|
123
|
+
rescue => e
|
124
|
+
puts 'Git operations failed. Please correct issues, then manually commit the following files:'
|
125
|
+
puts ' * Procfile'
|
126
|
+
puts ' * Gemfile'
|
127
|
+
puts ' * Gemfile.lock'
|
128
|
+
puts ' * config.ru'
|
129
|
+
puts
|
130
|
+
puts 'When done, please run "git push heroku master"'
|
131
|
+
end
|
132
|
+
|
133
|
+
if options[:p]
|
134
|
+
puts "CAREFUL: you are commiting your access password - anyone with read access to the repo can access the preso\n\n"
|
135
|
+
end
|
136
|
+
|
137
|
+
puts 'Your presentation has been Herokuized. Run `heroku open` to see it.'
|
132
138
|
end
|
133
139
|
end
|
134
140
|
end
|
135
|
-
end
|
136
141
|
|
137
|
-
desc 'Serves the showoff presentation in the specified (or current) directory'
|
138
|
-
arg_name "[pres_dir]"
|
139
|
-
default_value "."
|
140
|
-
command :serve do |c|
|
142
|
+
desc 'Serves the showoff presentation in the specified (or current) directory'
|
143
|
+
arg_name "[pres_dir]"
|
144
|
+
default_value "."
|
145
|
+
command :serve do |c|
|
141
146
|
|
142
|
-
|
143
|
-
|
147
|
+
c.desc 'Show verbose messaging'
|
148
|
+
c.switch [:v, :verbose]
|
144
149
|
|
145
|
-
|
146
|
-
|
150
|
+
c.desc 'Enable code review'
|
151
|
+
c.switch [:r, :review]
|
147
152
|
|
148
|
-
|
149
|
-
|
153
|
+
c.desc 'Enable remote code execution'
|
154
|
+
c.switch [:x, :execute, :executecode]
|
150
155
|
|
151
|
-
|
152
|
-
|
156
|
+
c.desc 'Run in standalone mode, with no audience interaction'
|
157
|
+
c.switch [:S, :standalone]
|
153
158
|
|
154
|
-
|
155
|
-
|
159
|
+
c.desc 'Disable content caching'
|
160
|
+
c.switch :nocache
|
156
161
|
|
157
|
-
|
158
|
-
|
159
|
-
|
162
|
+
c.desc 'Port on which to run'
|
163
|
+
c.default_value "9090"
|
164
|
+
c.flag [:p, :port]
|
160
165
|
|
161
|
-
|
162
|
-
|
163
|
-
|
166
|
+
c.desc 'Host or ip to run on'
|
167
|
+
c.default_value "0.0.0.0"
|
168
|
+
c.flag [:h, :host]
|
164
169
|
|
165
|
-
|
166
|
-
|
170
|
+
c.desc 'Run via HTTPS'
|
171
|
+
c.switch [:s, :ssl]
|
167
172
|
|
168
|
-
|
169
|
-
|
173
|
+
c.desc 'Path to SSL certificate. Showoff will generate one automatically if unset.'
|
174
|
+
c.flag :ssl_certificate
|
170
175
|
|
171
|
-
|
172
|
-
|
176
|
+
c.desc 'Path to SSL private key. Showoff will generate one automatically if unset.'
|
177
|
+
c.flag :ssl_private_key
|
173
178
|
|
174
|
-
|
175
|
-
|
176
|
-
|
179
|
+
c.desc 'JSON file used to describe presentation'
|
180
|
+
c.default_value "showoff.json"
|
181
|
+
c.flag [:f, :file, :pres_file]
|
177
182
|
|
178
|
-
|
179
|
-
|
183
|
+
c.desc 'Git URL to a repository containing the presentation'
|
184
|
+
c.flag [:u, :url, :git_url]
|
180
185
|
|
181
|
-
|
182
|
-
|
186
|
+
c.desc 'Branch of the git repository to use'
|
187
|
+
c.flag [:git_branch]
|
183
188
|
|
184
|
-
|
185
|
-
|
189
|
+
c.desc 'Path of the presentation within the git repository'
|
190
|
+
c.flag [:git_path]
|
186
191
|
|
187
|
-
|
192
|
+
c.action do |global_options,options,args|
|
188
193
|
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
+
# This is gross. A serious revamp in config file parsing is due.
|
195
|
+
config = JSON.parse(File.read(options[:f])) rescue {}
|
196
|
+
if Gem::Version.new(config['version']) > Gem::Version.new(SHOWOFF_VERSION) then
|
197
|
+
raise "This presentation requires Showoff version #{config['version']} or greater."
|
198
|
+
end
|
199
|
+
|
200
|
+
options[:host] ||= config['host']
|
201
|
+
options[:port] ||= config['port']
|
202
|
+
options[:ssl] ||= config['ssl']
|
203
|
+
options[:ssl_certificate] ||= config['ssl_certificate']
|
204
|
+
options[:ssl_private_key] ||= config['ssl_private_key']
|
205
|
+
options[:standalone] ||= config['standalone']
|
194
206
|
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
options[:ssl_certificate] ||= config['ssl_certificate']
|
199
|
-
options[:ssl_private_key] ||= config['ssl_private_key']
|
200
|
-
options[:standalone] ||= config['standalone']
|
207
|
+
options[:pres_dir] = args[0]
|
208
|
+
options[:port] = options[:port].to_i
|
209
|
+
options[:bind] = options[:host]
|
201
210
|
|
202
|
-
|
203
|
-
|
204
|
-
|
211
|
+
ssl_options = {
|
212
|
+
:cert_chain_file => options[:ssl_certificate],
|
213
|
+
:private_key_file => options[:ssl_private_key],
|
214
|
+
:verify_peer => false,
|
215
|
+
}
|
205
216
|
|
206
|
-
|
207
|
-
:
|
208
|
-
|
209
|
-
|
210
|
-
|
217
|
+
protocol = options[:ssl] ? 'https' : 'http'
|
218
|
+
host = options[:host] == '0.0.0.0' ? 'localhost' : options[:host]
|
219
|
+
url = "#{protocol}://#{host}:#{options[:p].to_i}"
|
220
|
+
puts "
|
221
|
+
-------------------------
|
211
222
|
|
212
|
-
|
213
|
-
host = options[:host] == '0.0.0.0' ? 'localhost' : options[:host]
|
214
|
-
url = "#{protocol}://#{host}:#{options[:p].to_i}"
|
215
|
-
puts "
|
216
|
-
-------------------------
|
223
|
+
Your ShowOff presentation is now starting up.
|
217
224
|
|
218
|
-
|
225
|
+
To view it plainly, visit [ #{url} ]
|
219
226
|
|
220
|
-
To
|
227
|
+
To run it from presenter view, go to: [ #{url}/presenter ]
|
221
228
|
|
222
|
-
|
229
|
+
-------------------------
|
223
230
|
|
224
|
-
|
231
|
+
"
|
225
232
|
|
226
|
-
|
233
|
+
if options[:url]
|
234
|
+
ShowOffUtils.clone(options[:git_url], options[:git_branch], options[:git_path]) do
|
235
|
+
ShowOff.run!(options) do |server|
|
236
|
+
if options[:ssl]
|
237
|
+
server.ssl = true
|
238
|
+
server.ssl_options = ssl_options
|
239
|
+
end
|
240
|
+
end
|
241
|
+
end
|
227
242
|
|
228
|
-
|
229
|
-
ShowOffUtils.clone(options[:git_url], options[:git_branch], options[:git_path]) do
|
243
|
+
else
|
230
244
|
ShowOff.run!(options) do |server|
|
231
245
|
if options[:ssl]
|
232
246
|
server.ssl = true
|
@@ -235,90 +249,83 @@ To run it from presenter view, go to: [ #{url}/presenter ]
|
|
235
249
|
end
|
236
250
|
end
|
237
251
|
|
238
|
-
else
|
239
|
-
ShowOff.run!(options) do |server|
|
240
|
-
if options[:ssl]
|
241
|
-
server.ssl = true
|
242
|
-
server.ssl_options = ssl_options
|
243
|
-
end
|
244
|
-
end
|
245
252
|
end
|
246
|
-
|
247
253
|
end
|
248
|
-
end
|
249
254
|
|
250
|
-
desc 'Add a new slide at the end in a given dir'
|
251
|
-
arg_name '[title]'
|
252
|
-
long_desc 'Outputs or creates a new slide. With -d and -n, a new slide is created in the given dir, numbered to appear as the last slide in that dir (use -u to avoid numbering). Without those, outputs the slide markdown to stdout (useful for shelling out from your editor). You may also specify a source file to use for a code slide'
|
253
|
-
command [:add,:new] do |c|
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
255
|
+
desc 'Add a new slide at the end in a given dir'
|
256
|
+
arg_name '[title]'
|
257
|
+
long_desc 'Outputs or creates a new slide. With -d and -n, a new slide is created in the given dir, numbered to appear as the last slide in that dir (use -u to avoid numbering). Without those, outputs the slide markdown to stdout (useful for shelling out from your editor). You may also specify a source file to use for a code slide'
|
258
|
+
command [:add,:new] do |c|
|
259
|
+
c.desc 'Don''t number the slide, use the given name verbatim'
|
260
|
+
c.switch [:u,:nonumber]
|
261
|
+
|
262
|
+
c.desc 'Include code from the given file as the slide body'
|
263
|
+
c.arg_name 'path to file'
|
264
|
+
c.flag [:s,:source]
|
265
|
+
|
266
|
+
c.desc 'Slide Type/Style'
|
267
|
+
c.arg_name 'valid showoff style/type'
|
268
|
+
c.default_value 'title'
|
269
|
+
c.flag [:t,:type,:style]
|
270
|
+
|
271
|
+
c.desc 'Slide dir (where to put a new slide file)'
|
272
|
+
c.arg_name 'dir'
|
273
|
+
c.flag [:d,:dir]
|
274
|
+
|
275
|
+
c.desc 'Slide name (name of the new slide file)'
|
276
|
+
c.arg_name 'basename'
|
277
|
+
c.flag [:n,:name]
|
278
|
+
|
279
|
+
c.action do |global_options,options,args|
|
280
|
+
title = args.join(" ")
|
281
|
+
ShowOffUtils.add_slide(:dir => options[:d],
|
282
|
+
:name => options[:n],
|
283
|
+
:title => title,
|
284
|
+
:number => !options[:u],
|
285
|
+
:code => options[:s],
|
286
|
+
:type => options[:t])
|
287
|
+
end
|
282
288
|
end
|
283
|
-
end
|
284
289
|
|
285
|
-
desc 'Generate static version of presentation'
|
286
|
-
arg_name 'name'
|
287
|
-
long_desc 'Creates a static, one page version of the presentation as {name}.html'
|
288
|
-
command [:static] do |c|
|
289
|
-
|
290
|
-
|
290
|
+
desc 'Generate static version of presentation'
|
291
|
+
arg_name 'name'
|
292
|
+
long_desc 'Creates a static, one page version of the presentation as {name}.html'
|
293
|
+
command [:static] do |c|
|
294
|
+
c.desc 'JSON file used to describe presentation'
|
295
|
+
c.default_value "showoff.json"
|
296
|
+
c.flag [:f, :file, :pres_file]
|
297
|
+
|
298
|
+
c.action do |global_options,options,args|
|
299
|
+
ShowOff.do_static(args, options)
|
300
|
+
end
|
291
301
|
end
|
292
|
-
end
|
293
302
|
|
294
|
-
desc 'Generate PDF version of presentation'
|
295
|
-
arg_name 'name'
|
296
|
-
long_desc 'Creates a PDF version of the presentation as {name}.pdf'
|
297
|
-
command [:pdf] do |c|
|
298
|
-
|
299
|
-
|
303
|
+
desc 'Generate PDF version of presentation'
|
304
|
+
arg_name 'name'
|
305
|
+
long_desc 'Creates a PDF version of the presentation as {name}.pdf'
|
306
|
+
command [:pdf] do |c|
|
307
|
+
c.action do |global_options,options,args|
|
308
|
+
ShowOff.do_static(['pdf'].concat args)
|
309
|
+
end
|
300
310
|
end
|
301
|
-
end
|
302
311
|
|
303
|
-
pre do |global,command,options,args|
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
end
|
312
|
+
pre do |global,command,options,args|
|
313
|
+
# Pre logic here
|
314
|
+
# Return true to proceed; false to abourt and not call the
|
315
|
+
# chosen command
|
316
|
+
true
|
317
|
+
end
|
309
318
|
|
310
|
-
post do |global,command,options,args|
|
311
|
-
|
312
|
-
end
|
319
|
+
post do |global,command,options,args|
|
320
|
+
# Post logic here
|
321
|
+
end
|
313
322
|
|
314
|
-
on_error do |exception|
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
end
|
323
|
+
on_error do |exception|
|
324
|
+
# Error logic here
|
325
|
+
# return false to skip default error handling
|
326
|
+
true
|
327
|
+
end
|
319
328
|
|
320
|
-
|
329
|
+
# start the application
|
321
330
|
exit run(ARGV)
|
322
|
-
else
|
323
|
-
exit GLI.run(ARGV)
|
324
331
|
end
|