module Hub::Standalone

Constants

HUB_ROOT
PREAMBLE

Public Instance Methods

build(io) click to toggle source
# File lib/hub/standalone.rb, line 25
def build io
  io.puts "#!#{ruby_shebang}"
  io << PREAMBLE
  io.puts "Encoding.default_external = 'UTF-8' if defined?(Encoding)"

  each_source_file do |filename|
    File.open(filename, 'r') do |source|
      source.each_line do |line|
        next if line =~ /^\s*#/
        if line.include?(' VERSION =')
          line.sub!(/'(.+?)'/, "'#{detailed_version}'")
        end
        io << line
      end
    end
    io.puts ''
  end

  io.puts "Hub::Runner.execute(*ARGV)"
  io.puts "\n__END__"
  io << File.read(File.join(HUB_ROOT, 'man/hub.1'))
end
detailed_version() click to toggle source
# File lib/hub/standalone.rb, line 58
def detailed_version
  version = %x`git describe --tags HEAD 2>/dev/null`.chomp
  if version.empty?
    version = Hub::VERSION
    head_sha = %x`git rev-parse --short HEAD 2>/dev/null`.chomp
    version += "-g#{head_sha}" unless head_sha.empty?
    version
  else
    version.sub(/^v/, '')
  end
end
each_source_file() { |join(HUB_ROOT, 'lib', "| ... } click to toggle source
# File lib/hub/standalone.rb, line 48
def each_source_file
  File.open(File.join(HUB_ROOT, 'lib/hub.rb'), 'r') do |main|
    main.each_line do |req|
      if req =~ /^require\s+["'](.+)["']/
        yield File.join(HUB_ROOT, 'lib', "#{$1}.rb")
      end
    end
  end
end
ruby_executable() click to toggle source
# File lib/hub/standalone.rb, line 70
def ruby_executable
  if File.executable? '/usr/bin/ruby' then '/usr/bin/ruby'
  else
    require 'rbconfig'
    File.join RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name']
  end
end
ruby_shebang() click to toggle source
# File lib/hub/standalone.rb, line 78
def ruby_shebang
  ruby = ruby_executable
  %x`RUBYOPT= #{ruby_executable} --disable-gems -e0 2>/dev/null`
  if $?.success?
    "#{ruby} --disable-gems"
  else
    ruby
  end
end
save(filename, path = '.') click to toggle source
# File lib/hub/standalone.rb, line 17
def save(filename, path = '.')
  target = File.join(File.expand_path(path), filename)
  File.open(target, 'w') do |f|
    build f
    f.chmod 0755
  end
end