11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/dopairb/cli.rb', line 11
def parser(settings)
OptionParser.new do |o|
o.require_exact = true
o.banner = "Usage: dopairb [options] [-- irb options]"
o.separator ""
o.separator "IRB with fireworks. Every other option is handed to IRB."
o.separator ""
o.on("--intensity=LEVEL", Config::INTENSITIES.map(&:to_s), "off / low / normal (default) / max") { |v| settings << [:intensity, v] }
o.on("--calm", "low intensity, no flash, shorter effects") { settings.concat([[:intensity, :low], [:flash, :off], [:duration, 0.7]]) }
o.on("--max", "everything at maximum") { settings << [:intensity, :max] }
o.on("--party", "max + full-screen flash + sound effects") { settings.concat([[:intensity, :max], [:flash, :full], [:sound, :sfx]]) }
o.on("--[no-]flash[=MODE]", "flash: off / soft (default) / full") { |v| settings << [:flash, v.nil? ? :soft : (v == false ? :off : v)] }
o.on("--[no-]motion", "animations (default on)") { |v| settings << [:motion, v] }
o.on("--[no-]sound[=MODE]", "sound: off (default) / bell / sfx") { |v| settings << [:sound, v.nil? ? :sfx : (v == false ? :off : v)] }
o.on("--[no-]hud", "COMBO / SCORE next to the prompt (default on)") { |v| settings << [:hud, v] }
o.on("--[no-]keys", "per-keystroke effects (default on)") { |v| settings << [:keys, v] }
o.on("--[no-]intro", "title animation (default on)") { |v| settings << [:intro, v] }
o.on("--duration=X", Float, "effect length multiplier") { |v| settings << [:duration, v] }
o.on("--set=K=V,...", "any setting, same format as $DOPAIRB") { |v| settings << [:string, v] }
o.on("--version", "print version") do
puts "dopairb #{VERSION} (irb #{IRB::VERSION}, reline #{Reline::VERSION})"
exit
end
o.on("-h", "--help", "this help") do
puts o
puts
puts "Settings (also via DOPAIRB=\"key=value,...\" or `dopa key=value` inside the session):"
puts Config.new.describe
exit
end
end
end
|