ardour/libs/surfaces/mackie/scripts/generate-surfaces

65 lines
1.4 KiB
Text
Raw Normal View History

#! /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