summaryrefslogtreecommitdiff
path: root/libs/surfaces/mackie/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'libs/surfaces/mackie/scripts')
-rw-r--r--libs/surfaces/mackie/scripts/controls.rb4
-rwxr-xr-xlibs/surfaces/mackie/scripts/generate-surface.rb28
-rwxr-xr-xlibs/surfaces/mackie/scripts/generate-surfaces64
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
+