Module: Hub::Context::System

Included in:
Hub::Context, Hub::Context
Defined in:
lib/hub/context.rb

Instance Method Summary collapse

Instance Method Details

#browser_launcherObject

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

Returns an array, e.g.: [‘open’]



511
512
513
514
515
516
517
518
519
# File 'lib/hub/context.rb', line 511

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) ⇒ Boolean

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

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

Returns a Boolean.

Returns:

  • (Boolean)


555
556
557
# File 'lib/hub/context.rb', line 555

def command?(name)
  !which(name).nil?
end

#osx?Boolean

Returns:

  • (Boolean)


521
522
523
524
# File 'lib/hub/context.rb', line 521

def osx?
  require 'rbconfig'
  RbConfig::CONFIG['host_os'].to_s.include?('darwin')
end

#terminal_widthObject



563
564
565
566
567
568
569
570
571
# File 'lib/hub/context.rb', line 563

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

#tmp_dirObject



559
560
561
# File 'lib/hub/context.rb', line 559

def tmp_dir
  ENV['TMPDIR'] || ENV['TEMP'] || '/tmp'
end

#unix?Boolean

Returns:

  • (Boolean)


531
532
533
534
# File 'lib/hub/context.rb', line 531

def unix?
  require 'rbconfig'
  RbConfig::CONFIG['host_os'] =~ /(aix|darwin|linux|(net|free|open)bsd|cygwin|solaris|irix|hpux)/i
end

#which(cmd) ⇒ Object

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

which('ruby') #=> /usr/bin/ruby


539
540
541
542
543
544
545
546
547
548
# File 'lib/hub/context.rb', line 539

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?Boolean

Returns:

  • (Boolean)


526
527
528
529
# File 'lib/hub/context.rb', line 526

def windows?
  require 'rbconfig'
  RbConfig::CONFIG['host_os'] =~ /msdos|mswin|djgpp|mingw|windows/
end