Commit 06dc228fc086de158800d6db3afd6567cae5c901

Configuration scaffolding

Commit diff

lib/amazing/cli.rb

 
4646 def run
4747 parse_options
4848 cmd_show_help
49 cmd_scaffold
4950 set_loglevel
5051 cmd_stop_process
5152 load_scripts
toggle raw diff

lib/amazing/cli/commands.rb

 
2424 end
2525 end
2626
27 def cmd_scaffold
28 if @options[:scaffold]
29 list = {}
30 screen, statusbar = nil, nil
31
32 File.readlines(@options[:scaffold]).each do |line|
33 case line
34
35 when /^\s*screen .*(\d+)/
36 screen = $1.to_i
37 list[screen] = {}
38
39 when /^\s*statusbar[" ]*([^"\n ]+)/
40 statusbar = $1
41 list[screen][statusbar] = []
42
43 when /^\s*(graph|iconbox|progressbar|textbox)[" ]*([^"\n ]+)/
44 list[screen][statusbar] << [$1, $2]
45
46 when /^\s*data[" ]*([^"\n ]+)/
47 list[screen][statusbar][-1] << $1
48
49 end
50 end
51
52 list.each do |screen, statusbars|
53 statusbars.each do |statusbar, widgets|
54
55 puts "awesome {"
56 puts "#{'# ' if screen == 0} set :screen => %s" % screen
57 puts "#{'# ' if statusbar == "mystatusbar"} set :statusbar => %s" % statusbar.inspect
58 puts
59
60 widgets.each do |widget|
61 type, name, datas = widget[0], widget[1], widget[2..-1]
62 noop = !Amazing::Widgets.constants.include?(name.camel_case)
63
64 puts " widget(%s) {" % name.inspect
65 puts " set :module => :noop" if noop
66 puts "# set :module => %s" % name.to_sym.inspect unless noop
67 puts ' set :property => "image"' if type == "iconbox"
68 puts '# set :property => "text"' if type == "textbox"
69 puts " set :property => \"data %s\"" % datas[0] if datas.size == 1
70 puts " set :interval => 1"
71
72 Amazing::Widgets.const_get(name.camel_case).options.each do |option, data|
73 puts "# set %s => %s" % [option.inspect, data[:default].inspect]
74 end unless noop
75
76 if datas.size > 1
77 puts
78 datas.each do |data|
79 puts " property(\"data %s\") {" % data
80 puts " @default"
81 puts " }"
82 puts unless data == datas.last
83 end
84 end
85
86 puts " }"
87 puts unless name == widgets.last[1]
88 end
89
90 puts "}"
91 puts
92 end
93 end
94
95 exit
96 end
97 end
98
2799 def cmd_stop_process
28100 if @options[:stop]
29101 stop_process(false)
toggle raw diff

lib/amazing/options.rb

 
4848 self[:config] = config
4949 end
5050
51 opts.on("-g", "--scaffold [AWESOMERC]", "Generate a scaffold config") do |awesomerc|
52 self[:scaffold] = awesomerc || File.expand_path("~/.awesomerc")
53 end
54
5155 opts.on("-l", "--log-level LEVEL", "Severity threshold (info)") do |level|
5256 self[:loglevel] = level
5357 end
toggle raw diff