Sha256: ecc948adc86346a91b5386175d4b519eecd226fc2edc6de3ced9ded504ceda83

Contents?: true

Size: 1.86 KB

Versions: 33

Compression:

Stored size: 1.86 KB

Contents

#!/usr/bin/env ruby

require 'getoptlong'
require 'logger'
require 'wsdl/xmlSchema/xsd2ruby'


class XSD2RubyApp < Logger::Application
private

  OptSet = [
    ['--xsd','-x', GetoptLong::REQUIRED_ARGUMENT],
    ['--module_path','-m', GetoptLong::REQUIRED_ARGUMENT],
    ['--classdef','-e', GetoptLong::OPTIONAL_ARGUMENT],
    ['--mapping_registry','-r', GetoptLong::NO_ARGUMENT],
    ['--mapper','-p', GetoptLong::NO_ARGUMENT],
    ['--force','-f', GetoptLong::NO_ARGUMENT],
    ['--quiet','-q', GetoptLong::NO_ARGUMENT],
  ]

  def initialize
    super('app')
    STDERR.sync = true
    self.level = Logger::FATAL
  end

  def run
    @worker = WSDL::XMLSchema::XSD2Ruby.new
    @worker.logger = @log
    location, opt = parse_opt(GetoptLong.new(*OptSet))
    usage_exit unless location
    @worker.location = location
    if opt['quiet']
      self.level = Logger::FATAL
    else
      self.level = Logger::INFO
    end
    @worker.opt.update(opt)
    @worker.run
    0
  end

  def usage_exit
    puts <<__EOU__
Usage: #{ $0 } --xsd xsd_location [options]
  xsd_location: filename or URL

Example:
  #{ $0 } --xsd myapp.xsd --classdef foo

Options:
  --xsd xsd_location
  --classdef [filenameprefix]
  --mapping_registry
  --mapper
  --module_path [Module::Path::Name]
  --force
  --quiet
__EOU__
    exit 1
  end

  def parse_opt(getoptlong)
    opt = {}
    xsd = nil
    begin
      getoptlong.each do |name, arg|
       	case name
	when "--xsd"
	  xsd = arg
        when "--module_path"
          opt['module_path'] = arg
	when "--classdef", "--mapping_registry", "--mapper"
  	  opt[name.sub(/^--/, '')] = arg.empty? ? nil : arg
	when "--force"
	  opt['force'] = true
        when "--quiet"
          opt['quiet'] = true
   	else
  	  raise ArgumentError.new("Unknown type #{ arg }")
   	end
      end
    rescue
      usage_exit
    end
    return xsd, opt
  end
end

XSD2RubyApp.new.start

Version data entries

33 entries across 33 versions & 15 rubygems

Version Path
mumboe-soap4r-1.6.0.pre.beta bin/xsd2ruby.rb
DefV-soap4r-1.5.8.2 bin/xsd2ruby.rb
mumboe-soap4r-1.5.8.7 bin/xsd2ruby.rb
soap2r-1.5.8 bin/xsd2ruby.rb
teo-soap4r-1.5.9b bin/xsd2ruby.rb
mumboe-soap4r-1.5.8.6 bin/xsd2ruby.rb
soap4r-spox-1.6.0 bin/xsd2ruby.rb
soap4r-r19-1.5.9 bin/xsd2ruby.rb
mumboe-soap4r-1.5.8.5 bin/xsd2ruby.rb
soap4r-ruby1.9-2.0.5 bin/xsd2ruby.rb
soap4r-sgonyea-1.6.0 bin/xsd2ruby.rb
soap4r-straightjacket-1.5.9 bin/xsd2ruby.rb
soap4r-straightjacket-1.5.8 bin/xsd2ruby.rb
soap4r-ruby1.9-2.0.3 bin/xsd2ruby.rb
soap4r-ruby1.9-2.0.2 bin/xsd2ruby.rb
soap4r-ruby1.9-2.0.1 bin/xsd2ruby.rb
mumboe-soap4r-1.5.8.4 bin/xsd2ruby.rb
railsware-soap4r-1.5.8.1 bin/xsd2ruby.rb
soap4r-ruby1.9-2.0.0 bin/xsd2ruby.rb
hands-soap4r-1.5.8.4 bin/xsd2ruby.rb