Sha256: e1cbe0a0626fc333954fe0d784b329da1e49ac6c6be7710d9fc31f693dc2ea54

Contents?: true

Size: 1.42 KB

Versions: 15

Compression:

Stored size: 1.42 KB

Contents

class ExecutableGenerator < RubiGen::Base
  DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
                              Config::CONFIG['ruby_install_name'])
  
  default_options :shebang => DEFAULT_SHEBANG,
                  :author => nil
  
  attr_reader :bin_name, :author
  
  def initialize(runtime_args, runtime_options = {})
    super
    usage if args.empty?
    @bin_name     = args.shift
    extract_options
  end

  def manifest
    # Use /usr/bin/env if no special shebang was specified
    script_options     = { :chmod => 0755, :shebang => options[:shebang] == DEFAULT_SHEBANG ? nil : options[:shebang] }
    dispatcher_options = { :chmod => 0755, :shebang => options[:shebang] }
    windows            = (RUBY_PLATFORM =~ /dos|win32|cygwin/i) || (RUBY_PLATFORM =~ /(:?mswin|mingw)/)

    record do |m|
      # Ensure bin folder exists
      m.directory "bin"

      # App stub
      m.template "app.rb",         "bin/#{bin_name}"
    end
  end

  protected
    def banner
      <<-EOS
Create an executable Ruby script that is deployed
with this RubyGem.

USAGE: #{$0} generate bin_name"
EOS
    end

    def add_options!(opts)
      opts.separator ''
      opts.separator 'Options:'
      opts.on("-a", "--author=\"Your Name\"", String,
              "Generated app file will include your name.",
              "Default: none") { |options[:author]| }
    end
    
    def extract_options
      @author = options[:author]
    end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
newgem-0.13.1 rubygems_generators/executable/executable_generator.rb
newgem-0.13.2 rubygems_generators/executable/executable_generator.rb
newgem-0.13.0 rubygems_generators/executable/executable_generator.rb
newgem-0.13.4 rubygems_generators/executable/executable_generator.rb
newgem-0.13.3 rubygems_generators/executable/executable_generator.rb
newgem-0.13.5 rubygems_generators/executable/executable_generator.rb
newgem-0.14.0 rubygems_generators/executable/executable_generator.rb
newgem-0.14.1 rubygems_generators/executable/executable_generator.rb
newgem-0.14.2 rubygems_generators/executable/executable_generator.rb
newgem-0.15.0 rubygems_generators/executable/executable_generator.rb
newgem-0.18.0 rubygems_generators/executable/executable_generator.rb
newgem-0.16.0 rubygems_generators/executable/executable_generator.rb
newgem-0.17.0 rubygems_generators/executable/executable_generator.rb
newgem-0.16.1 rubygems_generators/executable/executable_generator.rb
newgem-0.17.1 rubygems_generators/executable/executable_generator.rb