launchy 2.0.3-java → 2.0.4-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +3 -0
- data/HISTORY +7 -0
- data/README +32 -0
- data/Rakefile +13 -2
- data/lib/launchy.rb +3 -3
- data/lib/launchy/application.rb +7 -27
- data/lib/launchy/applications/browser.rb +7 -2
- data/lib/launchy/detect/runner.rb +11 -6
- data/lib/launchy/error.rb +1 -1
- data/lib/launchy/version.rb +1 -1
- data/spec/application_spec.rb +10 -8
- data/spec/applications/browser_spec.rb +7 -2
- data/spec/detect/runner_spec.rb +26 -7
- data/spec/mock_application.rb +9 -0
- data/tasks/bundler.rake +13 -0
- data/tasks/contribute.rake +36 -0
- metadata +44 -20
- data/spec/mock_scheme.rb +0 -5
data/.gitignore
CHANGED
data/HISTORY
CHANGED
@@ -1,4 +1,11 @@
|
|
1
1
|
= Launchy Changlog
|
2
|
+
== Version 2.0.4 - 2011-07-23
|
3
|
+
|
4
|
+
* Fix windows 'start' commandline (copiousfreetime/launchy#5)
|
5
|
+
* Add capability to open local files with no file: scheme present (copiousfreetime/launchy#29)
|
6
|
+
* Added 'rake how_to_contribute' task (copiousfreetime/launchy#30)
|
7
|
+
* Make better decisions on when to do shell escaping (copiousfreetime/launchy#31)
|
8
|
+
* Switch to Addressable::URI so UTF-8 urls may be parsed. (copiousfreetime/launchy#32)
|
2
9
|
|
3
10
|
== Version 2.0.3 - 2011-07-17
|
4
11
|
|
data/README
CHANGED
@@ -47,6 +47,38 @@ An example of using the public API:
|
|
47
47
|
|
48
48
|
Launchy.open( "http://www.ruby-lang.org" )
|
49
49
|
|
50
|
+
== UPGRADING
|
51
|
+
|
52
|
+
The previously published version of Launchy was 0.4.0. There have been so many
|
53
|
+
changes, and a mistaken tag at 1.0.0, that I have decided to bump all the way
|
54
|
+
to 2.0.x.
|
55
|
+
|
56
|
+
I have attempted to keep backward compatibility with the previous examples. The
|
57
|
+
previous API examples of:
|
58
|
+
|
59
|
+
Launchy::Browser.run("http://www.ruby-lang.org/")
|
60
|
+
|
61
|
+
and
|
62
|
+
|
63
|
+
Launchy::Browser.new.visit("http://www.ruby-lang.org/")
|
64
|
+
|
65
|
+
will still work, and you will get a deprecation notice, along with the line
|
66
|
+
of code you should probably update. For example, this is what would print out
|
67
|
+
in the github gem if it was updated to use 2.0.x but not use the supported API.
|
68
|
+
|
69
|
+
% gh home
|
70
|
+
WARNING: You made a call to a deprecated Launchy API. This call should be changed to 'Launchy.open( uri )'
|
71
|
+
WARNING: I think I was able to find the location that needs to be fixed. Please go look at:
|
72
|
+
WARNING:
|
73
|
+
WARNING: /Users/jeremy/.rvm/gems/ruby-1.8.7-p334/gems/github-0.6.2/lib/commands/helpers.rb:275:in `open'
|
74
|
+
WARNING: helper :open do |url|
|
75
|
+
WARNING: has_launchy? proc {
|
76
|
+
WARNING: Launchy::Browser.new.visit url
|
77
|
+
WARNING: }
|
78
|
+
WARNING: end
|
79
|
+
WARNING:
|
80
|
+
WARNING: If this is not the case, please file a bug. Please file a bug at https://github.com/copiousfreetime/launchy/issues/new
|
81
|
+
|
50
82
|
== ISC LICENSE
|
51
83
|
|
52
84
|
http://opensource.org/licenses/isc-license.txt
|
data/Rakefile
CHANGED
@@ -4,9 +4,11 @@
|
|
4
4
|
#++
|
5
5
|
|
6
6
|
begin
|
7
|
+
USING_BONES_VERSION = '3.7.0'
|
7
8
|
require 'bones'
|
8
9
|
rescue LoadError
|
9
|
-
|
10
|
+
load 'tasks/contribute.rake'
|
11
|
+
Rake.application.invoke_task( :help )
|
10
12
|
end
|
11
13
|
|
12
14
|
task :default => 'test:run'
|
@@ -42,18 +44,27 @@ _
|
|
42
44
|
|
43
45
|
if RUBY_PLATFORM == "java" then
|
44
46
|
depend_on "spoon" , "~> 0.0.1"
|
47
|
+
depend_on 'ffi' , "~> 1.0.9"
|
45
48
|
gem.extras = { :platform => Gem::Platform.new( "java" ) }
|
46
49
|
end
|
47
50
|
|
51
|
+
depend_on "addressable", "~> 2.2.6"
|
52
|
+
|
48
53
|
depend_on "rake" , "~> 0.9.2", :development => true
|
49
54
|
depend_on "minitest" , "~> 2.3.1", :development => true
|
50
|
-
depend_on 'bones' , "~>
|
55
|
+
depend_on 'bones' , "~> #{USING_BONES_VERSION}", :development => true
|
51
56
|
depend_on 'bones-rcov', "~> 1.0.1", :development => true
|
52
57
|
depend_on 'rcov' , "~> 0.9.9", :development => true
|
53
58
|
depend_on "spoon" , "~> 0.0.1", :development => true
|
59
|
+
depend_on 'ffi' , "~> 1.0.9", :development => true
|
54
60
|
|
55
61
|
test.files = FileList["spec/**/*_spec.rb"]
|
56
62
|
test.opts << "-w -Ilib:spec"
|
57
63
|
|
58
64
|
rcov.opts << "--exclude gems"
|
59
65
|
}
|
66
|
+
|
67
|
+
# Sorry Tim, I need to manage my own bones version
|
68
|
+
::Bones.config.gem._spec.dependencies.delete_if do |d|
|
69
|
+
d.name == 'bones' and d.requirement.to_s =~ /^>=/
|
70
|
+
end
|
data/lib/launchy.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'uri'
|
1
|
+
require 'addressable/uri'
|
2
2
|
|
3
3
|
#
|
4
4
|
# The entry point into Launchy. This is the sole supported public API.
|
@@ -25,8 +25,8 @@ module Launchy
|
|
25
25
|
def open(uri, options = {} )
|
26
26
|
begin
|
27
27
|
extract_global_options( options )
|
28
|
-
uri = URI.parse(
|
29
|
-
app = Launchy::Application.
|
28
|
+
uri = Addressable::URI.parse( uri )
|
29
|
+
app = Launchy::Application.handling( uri )
|
30
30
|
app.new.open( uri, options )
|
31
31
|
rescue Exception => e
|
32
32
|
msg = "Failure in opening #{uri} with options #{options.inspect}: #{e}"
|
data/lib/launchy/application.rb
CHANGED
@@ -9,39 +9,19 @@ module Launchy
|
|
9
9
|
# 1. A constructor taking no parameters
|
10
10
|
# 2. An instance method 'open' taking a string or URI as the first parameter and a
|
11
11
|
# hash as the second
|
12
|
-
# 3. A class method '
|
13
|
-
#
|
12
|
+
# 3. A class method 'handles?' that takes a String and returns true if that
|
13
|
+
# class can handle the input.
|
14
14
|
class Application
|
15
15
|
extend DescendantTracker
|
16
16
|
|
17
17
|
class << self
|
18
|
+
# Find the application that handles the given uri.
|
18
19
|
#
|
19
|
-
#
|
20
|
-
|
21
|
-
|
22
|
-
children.collect { |a| a.schemes }.flatten.sort
|
23
|
-
end
|
24
|
-
|
25
|
-
#
|
26
|
-
# if this application handles the given scheme
|
27
|
-
#
|
28
|
-
def handles?( scheme )
|
29
|
-
schemes.include?( scheme )
|
30
|
-
end
|
31
|
-
|
32
|
-
#
|
33
|
-
# Find the application that handles the given scheme. May take either a
|
34
|
-
# String or something that responds_to?( :scheme )
|
35
|
-
#
|
36
|
-
def for_scheme( scheme )
|
37
|
-
if scheme.respond_to?( :scheme ) then
|
38
|
-
scheme = scheme.scheme
|
39
|
-
end
|
40
|
-
|
41
|
-
klass = find_child( :handles?, scheme )
|
20
|
+
# returns the Class that can handle the uri
|
21
|
+
def handling( uri )
|
22
|
+
klass = find_child( :handles?, uri )
|
42
23
|
return klass if klass
|
43
|
-
|
44
|
-
raise SchemeNotFoundError, "No application found to handle scheme '#{scheme}'. Known schemes: #{scheme_list.join(", ")}"
|
24
|
+
raise ApplicationNotFoundError, "No application found to handle '#{uri}'"
|
45
25
|
end
|
46
26
|
|
47
27
|
#
|
@@ -7,12 +7,17 @@ class Launchy::Application
|
|
7
7
|
%w[ http https ftp file ]
|
8
8
|
end
|
9
9
|
|
10
|
+
def self.handles?( uri )
|
11
|
+
return true if schemes.include?( uri.scheme )
|
12
|
+
return true if File.exist?( uri.path )
|
13
|
+
end
|
14
|
+
|
10
15
|
def windows_app_list
|
11
|
-
[
|
16
|
+
[ 'start /b' ]
|
12
17
|
end
|
13
18
|
|
14
19
|
def cygwin_app_list
|
15
|
-
[ 'cmd /C start
|
20
|
+
[ 'cmd /C start /b' ]
|
16
21
|
end
|
17
22
|
|
18
23
|
def darwin_app_list
|
@@ -34,18 +34,19 @@ module Launchy::Detect
|
|
34
34
|
#
|
35
35
|
# cut it down to just the shell commands that will be passed to exec or
|
36
36
|
# posix_spawn. The cmd argument is split according to shell rules and the
|
37
|
-
# args are escaped
|
37
|
+
# args are not escaped because they whole set is passed to system as *args
|
38
|
+
# and in that case system shell escaping rules are not done.
|
38
39
|
#
|
39
40
|
def shell_commands( cmd, args )
|
40
41
|
cmdline = [ cmd.shellsplit ]
|
41
|
-
cmdline << args.flatten.collect{ |a| a.to_s
|
42
|
+
cmdline << args.flatten.collect{ |a| a.to_s }
|
42
43
|
return commandline_normalize( cmdline )
|
43
44
|
end
|
44
45
|
|
45
46
|
def commandline_normalize( cmdline )
|
46
47
|
c = cmdline.flatten!
|
47
48
|
c = c.find_all { |a| (not a.nil?) and ( a.size > 0 ) }
|
48
|
-
Launchy.log "
|
49
|
+
Launchy.log "commandline_normalized => #{c.join(' ')}"
|
49
50
|
return c
|
50
51
|
end
|
51
52
|
|
@@ -69,16 +70,20 @@ module Launchy::Detect
|
|
69
70
|
class Windows < Runner
|
70
71
|
|
71
72
|
def all_args( cmd, *args )
|
72
|
-
[ 'cmd', '/c', *shell_commands( cmd, *args ) ]
|
73
|
+
args = [ 'cmd', '/c', *shell_commands( cmd, *args ) ]
|
74
|
+
Launchy.log "Windows: all_args => #{args.inspect}"
|
75
|
+
return args
|
73
76
|
end
|
74
77
|
|
75
78
|
def dry_run( cmd, *args )
|
76
79
|
all_args( cmd, *args ).join(" ")
|
77
80
|
end
|
78
81
|
|
82
|
+
# escape the reserved shell characters in windows command shell
|
83
|
+
# http://technet.microsoft.com/en-us/library/cc723564.aspx
|
79
84
|
def shell_commands( cmd, *args )
|
80
|
-
cmdline = [ cmd ]
|
81
|
-
cmdline << args.flatten.collect { |a| a.to_s.gsub(
|
85
|
+
cmdline = [ cmd.shellsplit ]
|
86
|
+
cmdline << args.flatten.collect { |a| a.to_s.gsub(/([&|()<>^])/, "^\\1") }
|
82
87
|
return commandline_normalize( cmdline )
|
83
88
|
end
|
84
89
|
|
data/lib/launchy/error.rb
CHANGED
data/lib/launchy/version.rb
CHANGED
data/spec/application_spec.rb
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require '
|
2
|
+
require 'mock_application'
|
3
3
|
|
4
4
|
class JunkApp < Launchy::Application
|
5
|
-
def self.
|
6
|
-
|
5
|
+
def self.handles?( uri )
|
6
|
+
uri.scheme == "junk"
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
10
10
|
describe Launchy::Application do
|
11
11
|
it 'registers inherited classes' do
|
12
12
|
class Junk2App < Launchy::Application
|
13
|
-
def self.
|
14
|
-
|
13
|
+
def self.handles?( uri )
|
14
|
+
uri.scheme == "junk2"
|
15
15
|
end
|
16
16
|
end
|
17
17
|
Launchy::Application.children.must_include( Junk2App )
|
@@ -20,12 +20,14 @@ describe Launchy::Application do
|
|
20
20
|
|
21
21
|
it "can find an app" do
|
22
22
|
Launchy::Application.children.must_include( JunkApp )
|
23
|
-
Launchy::Application.
|
24
|
-
|
23
|
+
Launchy::Application.children.size.must_equal 3
|
24
|
+
uri = Addressable::URI.parse( "junk:///foo" )
|
25
|
+
Launchy::Application.handling( uri ).must_equal( JunkApp )
|
25
26
|
end
|
26
27
|
|
27
28
|
it "raises an error if an application cannot be found for the given scheme" do
|
28
|
-
|
29
|
+
uri = Addressable::URI.parse( "foo:///bar" )
|
30
|
+
lambda { Launchy::Application.handling( uri ) }.must_raise( Launchy::ApplicationNotFoundError )
|
29
31
|
end
|
30
32
|
|
31
33
|
it "can find open or curl" do
|
@@ -12,9 +12,9 @@ describe Launchy::Application::Browser do
|
|
12
12
|
ENV.delete( 'KDE_FULL_SESSION' )
|
13
13
|
end
|
14
14
|
|
15
|
-
{ 'windows' => 'start
|
15
|
+
{ 'windows' => 'start /b' ,
|
16
16
|
'darwin' => '/usr/bin/open',
|
17
|
-
'cygwin' => 'cmd /C start
|
17
|
+
'cygwin' => 'cmd /C start /b',
|
18
18
|
|
19
19
|
# when running these tests on a linux box, this test will fail
|
20
20
|
'linux' => nil }.each do |host_os, cmdline|
|
@@ -35,5 +35,10 @@ describe Launchy::Application::Browser do
|
|
35
35
|
args.must_equal []
|
36
36
|
end
|
37
37
|
end
|
38
|
+
|
39
|
+
it "handles a file on the file system when there is no file:// scheme" do
|
40
|
+
uri = Addressable::URI.parse( __FILE__ )
|
41
|
+
Launchy::Application::Browser.handles?( uri ).must_equal true
|
42
|
+
end
|
38
43
|
end
|
39
44
|
|
data/spec/detect/runner_spec.rb
CHANGED
@@ -62,18 +62,37 @@ describe Launchy::Detect::Runner do
|
|
62
62
|
cmd.must_equal 'cmd /c not-really http://example.com'
|
63
63
|
end
|
64
64
|
|
65
|
-
|
66
|
-
|
67
|
-
|
65
|
+
%w[ & | ( ) < > ^ ].each do |reserved_char|
|
66
|
+
it "Windows escapes '#{reserved_char}' in urls" do
|
67
|
+
win = Launchy::Detect::Runner::Windows.new
|
68
|
+
parts = [ 'http://example.com/?foo=bar', 'baz=wibble' ]
|
69
|
+
url = parts.join( reserved_char )
|
70
|
+
output_url = parts.join( "^#{reserved_char}" )
|
71
|
+
|
72
|
+
win.all_args( "not-really", [ url ] ).must_equal [ 'cmd', '/c', 'not-really', output_url ]
|
68
73
|
|
69
|
-
|
70
|
-
|
74
|
+
cmd = win.dry_run( "not-really", [ url ] )
|
75
|
+
cmd.must_equal "cmd /c not-really #{output_url}"
|
76
|
+
end
|
71
77
|
end
|
72
78
|
|
73
|
-
it "Jruby escapes '&' in urls" do
|
79
|
+
it "Jruby doesnot escapes '&' in urls" do
|
74
80
|
jruby = Launchy::Detect::Runner::Jruby.new
|
75
81
|
cmd = jruby.dry_run( "not-really", [ @test_url ])
|
76
|
-
cmd.must_equal 'not-really http://example.com
|
82
|
+
cmd.must_equal 'not-really http://example.com/?foo=bar&baz=wibble'
|
83
|
+
end
|
84
|
+
|
85
|
+
it "does not escape %38 items in urls" do
|
86
|
+
l = Launchy::Detect::Runner::Forkable.new
|
87
|
+
cmd = l.dry_run( "not-really", [ "http://ja.wikipedia.org/wiki/%E3%81%82" ] )
|
88
|
+
cmd.must_equal( 'not-really http://ja.wikipedia.org/wiki/%E3%81%82' )
|
89
|
+
end
|
90
|
+
|
91
|
+
it "can launch a utf8 url" do
|
92
|
+
url = "http://ja.wikipedia.org/wiki/あ"
|
93
|
+
l = Launchy::Detect::Runner::Forkable.new
|
94
|
+
cmd = l.dry_run( "not-really", [ url ] )
|
95
|
+
cmd.must_equal( "not-really #{url}" )
|
77
96
|
end
|
78
97
|
|
79
98
|
end
|
data/tasks/bundler.rake
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
desc "Instructions on how to contribute to launchy"
|
2
|
+
task :help do
|
3
|
+
abort <<-_banner
|
4
|
+
-----------------------------------------------------------------------
|
5
|
+
I see you are wanting to do some development on launchy. You will
|
6
|
+
need to install the 'bones' gem first.
|
7
|
+
|
8
|
+
% gem install bones -v #{USING_BONES_VERSION}
|
9
|
+
|
10
|
+
The easiest way to start after that is with the
|
11
|
+
'install:dependencies' task:
|
12
|
+
|
13
|
+
% rake gem:install_dependencies
|
14
|
+
|
15
|
+
If you use bundler, then you will need to first create the Gemfile
|
16
|
+
and then run 'bundle install':
|
17
|
+
|
18
|
+
% rake bundle:gemfile
|
19
|
+
% bundle install
|
20
|
+
|
21
|
+
Now you are ready to work on launchy. Please submit bugs and pull
|
22
|
+
requests to:
|
23
|
+
|
24
|
+
https://github.com/copiousfreetime/launchy
|
25
|
+
|
26
|
+
Thanks!
|
27
|
+
|
28
|
+
-jeremy
|
29
|
+
-----------------------------------------------------------------------
|
30
|
+
_banner
|
31
|
+
end
|
32
|
+
|
33
|
+
desc "(Alias for 'help') Instructions on how to contribute to launchy"
|
34
|
+
task 'how_to_contribute' => :help
|
35
|
+
desc "(Alias for 'help') Instructions on how to contribute to launchy"
|
36
|
+
task '==> I WANT TO CONTRIBUTE <==' => :help
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: launchy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 2.0.
|
5
|
+
version: 2.0.4
|
6
6
|
platform: java
|
7
7
|
authors:
|
8
8
|
- Jeremy Hinegardner
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-07-
|
13
|
+
date: 2011-07-23 00:00:00 -06:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -25,82 +25,104 @@ dependencies:
|
|
25
25
|
type: :runtime
|
26
26
|
version_requirements: *id001
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: ffi
|
29
29
|
prerelease: false
|
30
30
|
requirement: &id002 !ruby/object:Gem::Requirement
|
31
31
|
none: false
|
32
32
|
requirements:
|
33
33
|
- - ~>
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: 0.9
|
36
|
-
type: :
|
35
|
+
version: 1.0.9
|
36
|
+
type: :runtime
|
37
37
|
version_requirements: *id002
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
|
-
name:
|
39
|
+
name: addressable
|
40
40
|
prerelease: false
|
41
41
|
requirement: &id003 !ruby/object:Gem::Requirement
|
42
42
|
none: false
|
43
43
|
requirements:
|
44
44
|
- - ~>
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: 2.
|
47
|
-
type: :
|
46
|
+
version: 2.2.6
|
47
|
+
type: :runtime
|
48
48
|
version_requirements: *id003
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
|
-
name:
|
50
|
+
name: rake
|
51
51
|
prerelease: false
|
52
52
|
requirement: &id004 !ruby/object:Gem::Requirement
|
53
53
|
none: false
|
54
54
|
requirements:
|
55
55
|
- - ~>
|
56
56
|
- !ruby/object:Gem::Version
|
57
|
-
version:
|
57
|
+
version: 0.9.2
|
58
58
|
type: :development
|
59
59
|
version_requirements: *id004
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
|
-
name:
|
61
|
+
name: minitest
|
62
62
|
prerelease: false
|
63
63
|
requirement: &id005 !ruby/object:Gem::Requirement
|
64
64
|
none: false
|
65
65
|
requirements:
|
66
66
|
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 2.3.1
|
69
69
|
type: :development
|
70
70
|
version_requirements: *id005
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
|
-
name:
|
72
|
+
name: bones
|
73
73
|
prerelease: false
|
74
74
|
requirement: &id006 !ruby/object:Gem::Requirement
|
75
75
|
none: false
|
76
76
|
requirements:
|
77
77
|
- - ~>
|
78
78
|
- !ruby/object:Gem::Version
|
79
|
-
version:
|
79
|
+
version: 3.7.0
|
80
80
|
type: :development
|
81
81
|
version_requirements: *id006
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
|
-
name:
|
83
|
+
name: bones-rcov
|
84
84
|
prerelease: false
|
85
85
|
requirement: &id007 !ruby/object:Gem::Requirement
|
86
86
|
none: false
|
87
87
|
requirements:
|
88
88
|
- - ~>
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version:
|
90
|
+
version: 1.0.1
|
91
91
|
type: :development
|
92
92
|
version_requirements: *id007
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
|
-
name:
|
94
|
+
name: rcov
|
95
95
|
prerelease: false
|
96
96
|
requirement: &id008 !ruby/object:Gem::Requirement
|
97
97
|
none: false
|
98
98
|
requirements:
|
99
|
-
- -
|
99
|
+
- - ~>
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
101
|
+
version: 0.9.9
|
102
102
|
type: :development
|
103
103
|
version_requirements: *id008
|
104
|
+
- !ruby/object:Gem::Dependency
|
105
|
+
name: spoon
|
106
|
+
prerelease: false
|
107
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
108
|
+
none: false
|
109
|
+
requirements:
|
110
|
+
- - ~>
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 0.0.1
|
113
|
+
type: :development
|
114
|
+
version_requirements: *id009
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
name: ffi
|
117
|
+
prerelease: false
|
118
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
119
|
+
none: false
|
120
|
+
requirements:
|
121
|
+
- - ~>
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: 1.0.9
|
124
|
+
type: :development
|
125
|
+
version_requirements: *id010
|
104
126
|
description: |
|
105
127
|
Launchy is helper class for launching cross-platform applications in a
|
106
128
|
fire and forget manner.
|
@@ -152,10 +174,12 @@ files:
|
|
152
174
|
- spec/detect/ruby_engine_spec.rb
|
153
175
|
- spec/detect/runner_spec.rb
|
154
176
|
- spec/launchy_spec.rb
|
155
|
-
- spec/
|
177
|
+
- spec/mock_application.rb
|
156
178
|
- spec/spec_helper.rb
|
157
179
|
- spec/tattle-host-os.yaml
|
158
180
|
- spec/version_spec.rb
|
181
|
+
- tasks/bundler.rake
|
182
|
+
- tasks/contribute.rake
|
159
183
|
has_rdoc: true
|
160
184
|
homepage: http://www.copiousfreetime.org/projects/launchy
|
161
185
|
licenses: []
|