| |   |
| 24 | 24 | end |
| 25 | 25 | end |
| 26 | 26 | |
| 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 | |
| 27 | 99 | def cmd_stop_process |
| 28 | 100 | if @options[:stop] |
| 29 | 101 | stop_process(false) |
| toggle raw diff |
--- a/lib/amazing/cli/commands.rb
+++ b/lib/amazing/cli/commands.rb
@@ -24,6 +24,78 @@ module Amazing
end
end
+ def cmd_scaffold
+ if @options[:scaffold]
+ list = {}
+ screen, statusbar = nil, nil
+
+ File.readlines(@options[:scaffold]).each do |line|
+ case line
+
+ when /^\s*screen .*(\d+)/
+ screen = $1.to_i
+ list[screen] = {}
+
+ when /^\s*statusbar[" ]*([^"\n ]+)/
+ statusbar = $1
+ list[screen][statusbar] = []
+
+ when /^\s*(graph|iconbox|progressbar|textbox)[" ]*([^"\n ]+)/
+ list[screen][statusbar] << [$1, $2]
+
+ when /^\s*data[" ]*([^"\n ]+)/
+ list[screen][statusbar][-1] << $1
+
+ end
+ end
+
+ list.each do |screen, statusbars|
+ statusbars.each do |statusbar, widgets|
+
+ puts "awesome {"
+ puts "#{'# ' if screen == 0} set :screen => %s" % screen
+ puts "#{'# ' if statusbar == "mystatusbar"} set :statusbar => %s" % statusbar.inspect
+ puts
+
+ widgets.each do |widget|
+ type, name, datas = widget[0], widget[1], widget[2..-1]
+ noop = !Amazing::Widgets.constants.include?(name.camel_case)
+
+ puts " widget(%s) {" % name.inspect
+ puts " set :module => :noop" if noop
+ puts "# set :module => %s" % name.to_sym.inspect unless noop
+ puts ' set :property => "image"' if type == "iconbox"
+ puts '# set :property => "text"' if type == "textbox"
+ puts " set :property => \"data %s\"" % datas[0] if datas.size == 1
+ puts " set :interval => 1"
+
+ Amazing::Widgets.const_get(name.camel_case).options.each do |option, data|
+ puts "# set %s => %s" % [option.inspect, data[:default].inspect]
+ end unless noop
+
+ if datas.size > 1
+ puts
+ datas.each do |data|
+ puts " property(\"data %s\") {" % data
+ puts " @default"
+ puts " }"
+ puts unless data == datas.last
+ end
+ end
+
+ puts " }"
+ puts unless name == widgets.last[1]
+ end
+
+ puts "}"
+ puts
+ end
+ end
+
+ exit
+ end
+ end
+
def cmd_stop_process
if @options[:stop]
stop_process(false) |
| |   |
| 48 | 48 | self[:config] = config |
| 49 | 49 | end |
| 50 | 50 | |
| 51 | opts.on("-g", "--scaffold [AWESOMERC]", "Generate a scaffold config") do |awesomerc| |
| 52 | self[:scaffold] = awesomerc || File.expand_path("~/.awesomerc") |
| 53 | end |
| 54 | |
| 51 | 55 | opts.on("-l", "--log-level LEVEL", "Severity threshold (info)") do |level| |
| 52 | 56 | self[:loglevel] = level |
| 53 | 57 | end |
| toggle raw diff |
--- a/lib/amazing/options.rb
+++ b/lib/amazing/options.rb
@@ -48,6 +48,10 @@ module Amazing
self[:config] = config
end
+ opts.on("-g", "--scaffold [AWESOMERC]", "Generate a scaffold config") do |awesomerc|
+ self[:scaffold] = awesomerc || File.expand_path("~/.awesomerc")
+ end
+
opts.on("-l", "--log-level LEVEL", "Severity threshold (info)") do |level|
self[:loglevel] = level
end |