Module: Launchy

Defined in:
lib/launchy.rb,
lib/launchy/cli.rb,
lib/launchy/error.rb,
lib/launchy/detect.rb,
lib/launchy/version.rb,
lib/launchy/os_family.rb,
lib/launchy/application.rb,
lib/launchy/descendant_tracker.rb

Overview

Top level entry point into Launchy. Almost everyone will just use the single call:

Launchy.open( uri, options = {} )

The currently defined global options are:

:debug        Turn on debugging output
:application  Explicitly state what application class is going to be used
:host_os      Explicitly state what host operating system to pretend to be
:ruby_engine  Explicitly state what ruby engine to pretend to be under

Other options may be used, and those will be passed directly to the application class

Defined Under Namespace

Modules: DescendantTracker, Detect, Version Classes: Application, Cli, Error, OSFamily, SchemeNotFoundError

Constant Summary collapse

VERSION =
"2.0.1"

Class Method Summary collapse

Class Method Details

.applicationObject


76
77
78
# File 'lib/launchy.rb', line 76

def application
  @application || ENV['LAUNCHY_APPLICATION']
end

.application=(app) ⇒ Object


72
73
74
# File 'lib/launchy.rb', line 72

def application=( app )
  @application = app
end

.bug_report_messageObject


104
105
106
# File 'lib/launchy.rb', line 104

def bug_report_message
  "Please file a bug at https://github.com/copiousfreetime/launchy/issues/new"
end

.debug=(d) ⇒ Object


62
63
64
# File 'lib/launchy.rb', line 62

def debug=( d )
  @debug = (d == "true")
end

.debug?Boolean

we may do logging before a call to 'open', hence the need to check LAUNCHY_DEBUG here


68
69
70
# File 'lib/launchy.rb', line 68

def debug?
  @debug || (ENV['LAUNCHY_DEBUG'] == 'true')
end

.dry_run=(dry_run) ⇒ Object


96
97
98
# File 'lib/launchy.rb', line 96

def dry_run=( dry_run )
  @dry_run = dry_run
end

.dry_run?Boolean


100
101
102
# File 'lib/launchy.rb', line 100

def dry_run?
  @dry_run
end

.extract_global_options(options) ⇒ Object


54
55
56
57
58
59
60
# File 'lib/launchy.rb', line 54

def extract_global_options( options )
  Launchy.debug        = options.delete( :debug       ) || ENV['LAUNCHY_DEBUG']
  Launchy.application  = options.delete( :application ) || ENV['LAUNCHY_APPLICATION']
  Launchy.host_os      = options.delete( :host_os     ) || ENV['LAUNCHY_HOST_OS']
  Launchy.ruby_engine  = options.delete( :ruby_engine ) || ENV['LAUNCHY_RUBY_ENGINE']
  Launchy.dry_run      = options.delete( :dry_run     )
end

.host_osObject


84
85
86
# File 'lib/launchy.rb', line 84

def host_os
  @host_os || ENV['LAUNCHY_HOST_OS']
end

.host_os=(host_os) ⇒ Object


80
81
82
# File 'lib/launchy.rb', line 80

def host_os=( host_os )
  @host_os = host_os
end

.log(msg) ⇒ Object


108
109
110
# File 'lib/launchy.rb', line 108

def log(msg)
  $stderr.puts "LAUNCHY_DEBUG: #{msg}" if Launchy.debug?
end

.open(uri, options = {}) ⇒ Object

Convenience method to launch an item


25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/launchy.rb', line 25

def open(uri, options = {} )
  begin
    extract_global_options( options )
    uri = URI.parse( uri )
    if app = Launchy::Application.for_scheme( uri ) then
      app.new.open( uri, options )
    else
      msg = "Unable to launch #{uri} with options #{options.inspect}"
      Launchy.log "#{self.name} : #{msg}"
      $stderr.puts msg
    end
  rescue Exception => e
    msg = "Failure in opening #{uri} with options #{options.inspect}: #{e}"
    Launchy.log "#{self.name} : #{msg}"
    e.backtrace.each do |bt|
      Launchy.log bt
    end
    $stderr.puts msg
  end
end

.reset_global_optionsObject


46
47
48
49
50
51
52
# File 'lib/launchy.rb', line 46

def reset_global_options
  Launchy.debug       = false
  Launchy.application = nil
  Launchy.host_os     = nil
  Launchy.ruby_engine = nil
  Launchy.dry_run     = false
end

.ruby_engineObject


92
93
94
# File 'lib/launchy.rb', line 92

def ruby_engine
  @ruby_engine || ENV['LAUNCHY_RUBY_ENGINE']
end

.ruby_engine=(ruby_engine) ⇒ Object


88
89
90
# File 'lib/launchy.rb', line 88

def ruby_engine=( ruby_engine )
  @ruby_engine = ruby_engine
end