diff options
author | Alan Conway <aconway@apache.org> | 2008-02-27 16:37:48 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2008-02-27 16:37:48 +0000 |
commit | 0731e05211ff5e47e6a8b2c006bd6012da5cc161 (patch) | |
tree | c30b793e7db0471caf9cc9b2226fdf20a353c8f9 /cpp/rubygen/generate | |
parent | 178e1ad48948e5818ee3922cb73e515f581557d6 (diff) | |
download | qpid-python-0731e05211ff5e47e6a8b2c006bd6012da5cc161.tar.gz |
Generate code for both 0-99 preview and 0-10 final specs .
0-10 final: extended code generation and non-generated support classes.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@631638 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/rubygen/generate')
-rwxr-xr-x | cpp/rubygen/generate | 35 |
1 files changed, 29 insertions, 6 deletions
diff --git a/cpp/rubygen/generate b/cpp/rubygen/generate index f7bf334569..4ea8aef425 100755 --- a/cpp/rubygen/generate +++ b/cpp/rubygen/generate @@ -1,5 +1,6 @@ #!/usr/bin/env ruby require 'amqpgen' +require 'pathname' # # Run a set of code generation templates. @@ -18,17 +19,39 @@ EOS exit 1 end -Outdir=ARGV[0] -Specs=ARGV.grep(/\.xml$/) -Amqp=AmqpRoot.new(*Specs) +# Create array of specs by version +def parse_specs(specs) + roots={ } + specs.each { |spec| + root=AmqpRoot.new(spec) + ver=root.version + if (roots[ver]) + roots[ver].merge(root) + else + roots[ver]=root + end + } + roots +end # Run selected templates if ARGV.any? { |arg| arg=="all" } - templates=Dir["#{File.dirname __FILE__}/templates/*.rb"] + templates=Dir["#{File.dirname __FILE__}/*/*.rb"] else templates=ARGV.grep(/\.rb$/) end -templates.each { |t| load t } + +$outdir=ARGV[0] +$models=parse_specs(ARGV.grep(/\.xml$/)) +templates.each { |t| + ver=Pathname.new(t).dirname.basename.to_s + $amqp=$models[ver] + if $amqp + load t + else + puts "Warning: skipping #{t}, no spec file for version #{ver}." + end +} def make_continue(lines) lines.join(" \\\n "); end @@ -40,7 +63,7 @@ if makefile generator_files=Dir["**/*.rb"] << File.basename(__FILE__) Dir.chdir dir rgen_generator=generator_files.map{ |f| "$(rgen_dir)/#{f}" } - rgen_srcs=GenFiles.get.map{ |f| "#{Outdir}/#{f}" } + rgen_srcs=GenFiles.get.map{ |f| "#{$outdir}/#{f}" } File.open(makefile, 'w') { |out| out << <<EOS |