Class: Launchy::Application

Inherits:
Object
  • Object
show all
Extended by:
DescendantTracker
Defined in:
lib/launchy/application.rb,
lib/launchy/applications/browser.rb

Overview

Application is the base class of all the application types that launchy may invoke. It essentially defines the public api of the launchy system.

Every class that inherits from Application must define:

  1. A constructor taking no parameters

  2. An instance method ‘open’ taking a string or URI as the first parameter and a hash as the second

  3. A class method ‘handles?’ that takes a String and returns true if that class can handle the input.

Direct Known Subclasses

Browser

Defined Under Namespace

Classes: Browser

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from DescendantTracker

children, find_child, inherited

Constructor Details

#initializeApplication

Returns a new instance of Application.



63
64
65
66
# File 'lib/launchy/application.rb', line 63

def initialize
  @host_os_family = Launchy::Detect::HostOsFamily.detect
  @runner         = Launchy::Runner.new
end

Instance Attribute Details

#host_os_familyObject (readonly)

Returns the value of attribute host_os_family.



60
61
62
# File 'lib/launchy/application.rb', line 60

def host_os_family
  @host_os_family
end

#runnerObject (readonly)

Returns the value of attribute runner.



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

def runner
  @runner
end

Class Method Details

.find_executable(bin, *paths) ⇒ Object

Find the given executable in the available paths

returns the path to the executable or nil if not found



39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/launchy/application.rb', line 39

def find_executable( bin, *paths )
  paths = Launchy.path.split( File::PATH_SEPARATOR ) if paths.empty?
  paths.each do |path|
    file = File.join( path, bin )
    if File.executable?( file ) then
      Launchy.log "#{self.name} : found executable #{file}"
      return file
    end
  end
  Launchy.log "#{self.name} : Unable to find `#{bin}' in #{paths.join(", ")}"
  return nil
end

.for_name(name) ⇒ Object

Find the application with the given name

returns the Class that has the given name



30
31
32
33
34
# File 'lib/launchy/application.rb', line 30

def for_name( name )
  klass = find_child( :has_name?, name )
  return klass if klass
  raise ApplicationNotFoundError, "No application found named '#{name}'"
end

.handling(uri) ⇒ Object

Find the application that handles the given uri.

returns the Class that can handle the uri



21
22
23
24
25
# File 'lib/launchy/application.rb', line 21

def handling( uri )
  klass = find_child( :handles?, uri )
  return klass if klass
  raise ApplicationNotFoundError, "No application found to handle '#{uri}'"
end

.has_name?(qname) ⇒ Boolean

Does this class have the given name-like string?

returns true if the class has the given name

Returns:

  • (Boolean)


55
56
57
# File 'lib/launchy/application.rb', line 55

def has_name?( qname )
  qname.to_s.downcase == self.name.split("::").last.downcase
end

Instance Method Details

#find_executable(bin, *paths) ⇒ Object



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

def find_executable( bin, *paths )
  Application.find_executable( bin, *paths )
end

#run(cmd, *args) ⇒ Object



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

def run( cmd, *args )
  runner.run( cmd, *args )
end