module Hub::Context::System

Public Instance Methods

browser_launcher() click to toggle source

Cross-platform web browser command; respects the value set in $BROWSER.

Returns an array, e.g.: ['open']

# File lib/hub/context.rb, line 521
def browser_launcher
  browser = ENV['BROWSER'] || (
    osx? ? 'open' : windows? ? %w[cmd /c start] :
    %w[xdg-open cygstart x-www-browser firefox opera mozilla netscape].find { |comm| which comm }
  )

  abort "Please set $BROWSER to a web launcher to use this command." unless browser
  Array(browser)
end
command?(name) click to toggle source

Checks whether a command exists on this system in the $PATH.

name - The String name of the command to check for.

Returns a Boolean.

# File lib/hub/context.rb, line 565
def command?(name)
  !which(name).nil?
end
osx?() click to toggle source
# File lib/hub/context.rb, line 531
def osx?
  require 'rbconfig'
  RbConfig::CONFIG['host_os'].to_s.include?('darwin')
end
terminal_width() click to toggle source
# File lib/hub/context.rb, line 569
def terminal_width
  if unix?
    width = %x{stty size 2>#{NULL}}.split[1].to_i
    width = %x{tput cols 2>#{NULL}}.to_i if width.zero?
  else
    width = 0
  end
  width < 10 ? 78 : width
end
unix?() click to toggle source
# File lib/hub/context.rb, line 541
def unix?
  require 'rbconfig'
  RbConfig::CONFIG['host_os'] =~ /(aix|darwin|linux|(net|free|open)bsd|cygwin|solaris|irix|hpux)/i
end
which(cmd) click to toggle source

Cross-platform way of finding an executable in the $PATH.

which('ruby') #=> /usr/bin/ruby
# File lib/hub/context.rb, line 549
def which(cmd)
  exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
  ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
    exts.each { |ext|
      exe = "#{path}/#{cmd}#{ext}"
      return exe if File.executable? exe
    }
  end
  return nil
end
windows?() click to toggle source
# File lib/hub/context.rb, line 536
def windows?
  require 'rbconfig'
  RbConfig::CONFIG['host_os'] =~ /msdos|mswin|djgpp|mingw|windows/
end