#!/usr/bin/env ruby require 'optparse' module Opal class BuilderOptions < OptionParser def initialize @options = {} super do |opts| opts.banner = 'Usage: opal-build [options] -- [libname]' opts.separator '' opts.separator 'Options:' opts.on("-h", "--help", "Show this message") do puts opts exit end opts.on('-g', '--gem GEM_NAME', String, 'Adds the specified GEM_NAME to Opal\'s load path.', 'E.g.: opal-build --require opal-browser browser`', 'Will build browser.rb from the Opal gem opal-browser') do |g| options[:gems] ||= [] options[:gems] << g end opts.on('-s', '--stub STUB', String) do |stub| options[:stubs] ||= [] options[:stubs] << stub end opts.on('-r', '--require LIBRARY', String, 'Require the library before executing your script', 'E.g.: opal-build --require opal-browser browser`', 'Will build browser.rb from the Opal gem opal-browser') do |library| options[:requires] ||= [] options[:requires] << library end opts.on('-o', '--output FILE', String, 'Write the built lib to a file (defaults to STDOUT)') do |file| options[:output] = file end end end attr_reader :options end end option_parser = Opal::BuilderOptions.new option_parser.parse! if ARGV.empty? puts options else require 'opal' options = option_parser.options if options[:gems] require 'rubygems' options[:gems].each { |gem_name| Opal.use_gem gem_name } end if options[:requires] options[:requires].each { |required_lib| require required_lib } end lib_name = ARGV.first output = options[:output] ? File.open(options[:output], 'w') : $stdout output.puts Opal::Builder.build(lib_name.dup.untaint) end