diff options
Diffstat (limited to 'libs/surfaces/mackie/scripts')
-rw-r--r-- | libs/surfaces/mackie/scripts/controls.rb | 4 | ||||
-rwxr-xr-x | libs/surfaces/mackie/scripts/generate-surface.rb | 28 | ||||
-rwxr-xr-x | libs/surfaces/mackie/scripts/generate-surfaces | 64 |
3 files changed, 67 insertions, 29 deletions
diff --git a/libs/surfaces/mackie/scripts/controls.rb b/libs/surfaces/mackie/scripts/controls.rb index 7d414cf966..666c34d4af 100644 --- a/libs/surfaces/mackie/scripts/controls.rb +++ b/libs/surfaces/mackie/scripts/controls.rb @@ -15,8 +15,10 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +this_dir = File.dirname(__FILE__) + require 'faster_csv' -require 'mackie.rb' +require "#{this_dir}/mackie.rb" class Control attr_accessor :id, :led, :group, :name, :ordinal, :switch diff --git a/libs/surfaces/mackie/scripts/generate-surface.rb b/libs/surfaces/mackie/scripts/generate-surface.rb deleted file mode 100755 index 1c7eda6da3..0000000000 --- a/libs/surfaces/mackie/scripts/generate-surface.rb +++ /dev/null @@ -1,28 +0,0 @@ -#! /usr/bin/ruby - -this_dir = File.dirname(__FILE__) - -require 'erb' - -require this_dir + '/controls.rb' - -cc_template = '' -File.open( this_dir + "/surface-cc-template.erb", "r" ) { |f| cc_template = f.read } - -h_template = '' -File.open( this_dir + "/surface-h-template.erb", "r" ) { |f| h_template = f.read } - -sf = Surface.new( ARGV[0] ) -control_data = '' -File.open( this_dir + "/#{sf.name.downcase}-controls.csv", "r") { |f| control_data = f.read } -sf.parse control_data - -@result = "" -erb = ERB.new( cc_template , 0, "%<>-", "@result" ) -erb.result -File.open( "#{sf.name.downcase}_surface.cc", "w" ) { |f| f.write @result } - -erb = ERB.new( h_template , 0, "%<>-", "@result" ) -erb.result -File.open( "#{sf.name.downcase}_surface.h", "w" ) { |f| f.write @result } - diff --git a/libs/surfaces/mackie/scripts/generate-surfaces b/libs/surfaces/mackie/scripts/generate-surfaces new file mode 100755 index 0000000000..4e9bf55164 --- /dev/null +++ b/libs/surfaces/mackie/scripts/generate-surfaces @@ -0,0 +1,64 @@ +#! /usr/bin/ruby + +require 'getoptlong' +require 'csv' +require 'erb' +this_dir = File.dirname(__FILE__) +require this_dir + '/mackie.rb' +require this_dir + '/controls.rb' + +read_opts = GetoptLong.new( +[ "--headers", '-e', GetoptLong::NO_ARGUMENT ], + +[ "--version","-v", GetoptLong::NO_ARGUMENT ], +[ "--help", "-h", "-?", GetoptLong::NO_ARGUMENT ] +) + +# process the parsed options +read_opts.each do |opt, arg| + case opt + when "--headers" + $generate_headers = true + else + $generate_headers = false + end +end + +cc_template = '' +File.open( this_dir + "/surface-cc-template.erb", "r" ) { |f| cc_template = f.read } + +h_template = '' +File.open( this_dir + "/surface-h-template.erb", "r" ) { |f| h_template = f.read } + +# needs to be defined outside the loop otherwise ERB can't find it +sf = nil + +files = +if ARGV.size == 0 + Dir.glob "#{this_dir}/*csv" +else + ARGV +end + +files.each do |csv_file| + csv_file =~ /(\w+)-controls.csv/ + sf = Surface.new( $1.capitalize ) + + control_data = '' + File.open( csv_file, "r") { |f| control_data = f.read } + sf.parse control_data + + @result = "" + + erb = ERB.new( cc_template , 0, "%<>-", "@result" ) + erb.result + File.open( "#{sf.name.downcase}_surface_generated.cc", "w" ) { |f| f.write @result } + + if $generate_headers + erb = ERB.new( h_template , 0, "%<>-", "@result" ) + erb.result + File.open( "#{sf.name.downcase}_surface.h", "w" ) { |f| f.write @result } + end + +end + |