launchy 2.0.0-java

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,28 @@
1
+ # vim: ft=ruby
2
+
3
+ require 'autotest/growl'
4
+
5
+ Autotest.add_hook :initialize do |at|
6
+
7
+ at.libs = "lib:spec"
8
+ at.testlib = 'minitest/autorun'
9
+
10
+ at.add_exception 'coverage.info'
11
+ at.add_exception 'coverage'
12
+ at.add_exception '.git'
13
+
14
+ at.clear_mappings
15
+
16
+ at.add_mapping(%r|^spec/.*_spec\.rb$|) do |filename, _|
17
+ filename
18
+ end
19
+
20
+ at.add_mapping(%r|^lib/(.*)\.rb$|) do |_, match|
21
+ [ "test/#{match[1]}_spec.rb" ]
22
+ end
23
+
24
+ at.add_mapping(%r|^spec/spec_helper\.rb|) do
25
+ at.files_matching( %r|^spec/.*_spec\.rb| )
26
+ end
27
+ end
28
+
@@ -0,0 +1,6 @@
1
+ *~
2
+ *.swo
3
+ *.swp
4
+ doc/
5
+ coverage/
6
+ pkg/
data/HISTORY ADDED
@@ -0,0 +1,90 @@
1
+ = Launchy Changlog
2
+
3
+ == Version 2.0.0 - 2011-07-16
4
+
5
+ * Almost a complete rewrite
6
+ * JRuby Support
7
+ * Organization is such that it will be easier to add additional applications
8
+ * Windows behavior possibly fixed, again
9
+
10
+ == Version 1.0.0 - 2011-03-17
11
+
12
+ * Add JRuby support (Stephen Judkins)
13
+ * Remove unused Paths module
14
+ * Switch to using bones
15
+ * Switch to use minitest
16
+ * NOTE, this version was never released.
17
+
18
+ == Version 0.4.0 - 2011-01-27
19
+
20
+ * Add support for file:/// schema (postmodern)
21
+
22
+ == Version 0.3.7 - 2010-07-19
23
+
24
+ * Fix launchy on windows (mikefarmer)
25
+
26
+ == Version 0.3.6 - 2010-02-22
27
+
28
+ * add a test:spec task to run tests without rcov support
29
+ * added 'testing' os family for running tests
30
+
31
+ == Version 0.3.5 - 2009-12-17
32
+
33
+ * clarify that launchy is under ISC license
34
+ * fix missing data file in released gem needed for running specs
35
+
36
+ == Version 0.3.3 - 2009-02-19
37
+
38
+ * pass command line as discrete items to system() to avoid string
39
+ interpretation by the system shell. (Suraj N. Kurapati)
40
+ * rework project layout and tasks
41
+
42
+ == Version 0.3.2 - 2008-05-21
43
+
44
+ * detect aix and mingw as known operating systems.
45
+
46
+ == Version 0.3.1 - 2007-09-08
47
+
48
+ * finalize the command line wrapper around the launchy library.
49
+ * added more tests
50
+
51
+ == Version 0.3.0 - 2007-08-30
52
+
53
+ * reorganize the code structure, removing Spawnable namespace
54
+ * removed 'do_magic' method, changed it to 'open'
55
+ * added override environment variable LAUNCHY_HOST_OS for testing
56
+ * fix broken cygwin support [Bug #13472]
57
+
58
+ == Version 0.2.1 - 2007-08-18
59
+
60
+ * fix inability to find windows executables [Bug #13132]
61
+
62
+ == Version 0.2.0 - 2007-08-11
63
+
64
+ * rework browser finding
65
+ * manual override with LAUNCHY_BROWSER environment variable
66
+ * on *nix use desktop application launcher with fallback to list of browsers
67
+ * On windows, switch to 'start' command and remove dependency on win32-process
68
+ * removed win32 gem
69
+ * Add debug output by setting LAUNCHY_DEBUG environment variable to 'true'
70
+
71
+ == Version 0.1.2 - 2007-08-11
72
+
73
+ * forked child exits without calling at_exit handlers
74
+
75
+ == Version 0.1.1
76
+
77
+ * fixed rubyforge task to release mswin32 gem also
78
+
79
+ == Version 0.1.0
80
+
81
+ * Initial public release
82
+ * switched to using fork to spawn process and require 'win32/process' if on windows
83
+
84
+ == Version 0.0.2
85
+
86
+ * First attempt at using systemu to spawn processes
87
+
88
+ == Version 0.0.1
89
+
90
+ * Initially working release
data/LICENSE ADDED
@@ -0,0 +1,16 @@
1
+ ISC LICENSE - http://opensource.org/licenses/isc-license.txt
2
+
3
+ Copyright (c) 2007-2011 Jeremy Hinegardner
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted, provided that the above
7
+ copyright notice and this permission notice appear in all copies.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16
+
data/NOTES ADDED
@@ -0,0 +1 @@
1
+ * Allow for new tab/ new window for opening a browser
data/README ADDED
@@ -0,0 +1,53 @@
1
+ == launchy
2
+
3
+ * Homepage[http://www.copiousfreetime.org/projects/launchy/]
4
+ * {Github Project}[http://github.com/copiousfreetime/launchy]
5
+ * email jeremy at hinegardner dot org
6
+
7
+ == DESCRIPTION
8
+
9
+ Launchy is helper class for launching cross-platform applications in a
10
+ fire and forget manner.
11
+
12
+ There are application concepts (browser, email client, etc) that are
13
+ common across all platforms, and they may be launched differently on
14
+ each platform. Launchy is here to make a common approach to launching
15
+ external application from within ruby programs.
16
+
17
+ == FEATURES
18
+
19
+ Currently only launching a browser is supported.
20
+
21
+ == SYNOPSIS
22
+
23
+ From within your ruby code you can trust launchy to do the right thing:
24
+
25
+ Launchy.open("http://www.ruby-lang.org/")
26
+
27
+ Or, if you want to launch the application yourself:
28
+
29
+ Launchy::Browser.open("http://www.ruby-lang.org/")
30
+
31
+ OR
32
+
33
+ Launchy::Browser.new.open("http://www.ruby-lang.org/")
34
+
35
+ == ISC LICENSE
36
+
37
+ http://opensource.org/licenses/isc-license.txt
38
+
39
+ Copyright (c) 2007-2011 Jeremy Hinegardner
40
+
41
+ Permission to use, copy, modify, and/or distribute this software for any
42
+ purpose with or without fee is hereby granted, provided that the above
43
+ copyright notice
44
+ and this permission notice appear in all copies.
45
+
46
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
47
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
48
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
49
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
50
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
51
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
52
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
53
+
@@ -0,0 +1,58 @@
1
+ #--
2
+ # Copyright (c) 2007 Jeremy Hinegardner
3
+ # All rights reserved. See LICENSE and/or COPYING for details.
4
+ #++
5
+
6
+ begin
7
+ require 'bones'
8
+ rescue LoadError
9
+ abort '### Please install the "bones" gem ###'
10
+ end
11
+
12
+ task :default => 'test:run'
13
+ task 'gem:release' => 'test:run'
14
+
15
+ $:.unshift( "lib" )
16
+ require 'launchy/version'
17
+
18
+ Bones {
19
+ name "launchy"
20
+ authors "Jeremy Hinegardner"
21
+ email "jeremy@copiousfreetime.org"
22
+ url 'http://www.copiousfreetime.org/projects/launchy'
23
+ version Launchy::VERSION
24
+
25
+ ruby_opts %w[ -W0 -rubygems ]
26
+ readme_file 'README'
27
+ ignore_file '.gitignore'
28
+ history_file 'HISTORY'
29
+
30
+ rdoc.include << "README" << "HISTORY" << "LICENSE"
31
+
32
+ summary 'Launchy is helper class for launching cross-platform applications in a fire and forget manner.'
33
+ description <<_
34
+ Launchy is helper class for launching cross-platform applications in a
35
+ fire and forget manner.
36
+
37
+ There are application concepts (browser, email client, etc) that are
38
+ common across all platforms, and they may be launched differently on
39
+ each platform. Launchy is here to make a common approach to launching
40
+ external application from within ruby programs.
41
+ _
42
+
43
+ if RUBY_PLATFORM == "java" then
44
+ depend_on "spoon" , "~> 0.0.1"
45
+ gem.extras = { :platform => Gem::Platform.new( "java" ) }
46
+ end
47
+
48
+ depend_on "rake" , "~> 0.9.2", :development => true
49
+ depend_on "minitest", "~> 2.3.1", :development => true
50
+ depend_on 'bones' , "~> 3.7.0", :development => true
51
+
52
+ if defined?( RUBY_ENGINE ) and RUBY_ENGINE == "jruby" then
53
+ depend_on 'spoon' , "~> 0.0.1"
54
+ end
55
+
56
+ test.files = FileList["spec/**/*_spec.rb"]
57
+ test.opts << "-w -Ilib:spec"
58
+ }
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'launchy'
4
+ Launchy::Cli.new.run( ARGV, ENV )
@@ -0,0 +1,119 @@
1
+ require 'uri'
2
+
3
+ #
4
+ # Top level entry point into Launchy. Almost everyone will just use the single
5
+ # call:
6
+ #
7
+ # Launchy.open( uri, options = {} )
8
+ #
9
+ # The currently defined global options are:
10
+ #
11
+ # :debug Turn on debugging output
12
+ # :application Explicitly state what application class is going to be used
13
+ # :host_os Explicitly state what host operating system to pretend to be
14
+ # :ruby_engine Explicitly state what ruby engine to pretend to be under
15
+ #
16
+ # Other options may be used, and those will be passed directly to the
17
+ # application class
18
+ #
19
+ module Launchy
20
+
21
+ class << self
22
+ #
23
+ # Convenience method to launch an item
24
+ #
25
+ def open(uri, options = {} )
26
+ begin
27
+ extract_global_options( options )
28
+ uri = URI.parse( uri )
29
+ if app = Launchy::Application.for_scheme( uri ) then
30
+ app.new.open( uri, options )
31
+ else
32
+ msg = "Unable to launch #{uri} with options #{options.inspect}"
33
+ Launchy.log "#{self.name} : #{msg}"
34
+ $stderr.puts msg
35
+ end
36
+ rescue Exception => e
37
+ msg = "Failure in opening #{uri} with options #{options.inspect}: #{e}"
38
+ Launchy.log "#{self.name} : #{msg}"
39
+ e.backtrace.each do |bt|
40
+ Launchy.log bt
41
+ end
42
+ $stderr.puts msg
43
+ end
44
+ end
45
+
46
+ def reset_global_options
47
+ Launchy.debug = false
48
+ Launchy.application = nil
49
+ Launchy.host_os = nil
50
+ Launchy.ruby_engine = nil
51
+ Launchy.dry_run = false
52
+ end
53
+
54
+ def extract_global_options( options )
55
+ Launchy.debug = options.delete( :debug ) || ENV['LAUNCHY_DEBUG']
56
+ Launchy.application = options.delete( :application ) || ENV['LAUNCHY_APPLICATION']
57
+ Launchy.host_os = options.delete( :host_os ) || ENV['LAUNCHY_HOST_OS']
58
+ Launchy.ruby_engine = options.delete( :ruby_engine ) || ENV['LAUNCHY_RUBY_ENGINE']
59
+ Launchy.dry_run = options.delete( :dry_run )
60
+ end
61
+
62
+ def debug=( d )
63
+ @debug = (d == "true")
64
+ end
65
+
66
+ # we may do logging before a call to 'open', hence the need to check
67
+ # LAUNCHY_DEBUG here
68
+ def debug?
69
+ @debug || (ENV['LAUNCHY_DEBUG'] == 'true')
70
+ end
71
+
72
+ def application=( app )
73
+ @application = app
74
+ end
75
+
76
+ def application
77
+ @application || ENV['LAUNCHY_APPLICATION']
78
+ end
79
+
80
+ def host_os=( host_os )
81
+ @host_os = host_os
82
+ end
83
+
84
+ def host_os
85
+ @host_os || ENV['LAUNCHY_HOST_OS']
86
+ end
87
+
88
+ def ruby_engine=( ruby_engine )
89
+ @ruby_engine = ruby_engine
90
+ end
91
+
92
+ def ruby_engine
93
+ @ruby_engine || ENV['LAUNCHY_RUBY_ENGINE']
94
+ end
95
+
96
+ def dry_run=( dry_run )
97
+ @dry_run = dry_run
98
+ end
99
+
100
+ def dry_run?
101
+ @dry_run
102
+ end
103
+
104
+ def bug_report_message
105
+ "Please file a bug at https://github.com/copiousfreetime/launchy/issues/new"
106
+ end
107
+
108
+ def log(msg)
109
+ $stderr.puts "LAUNCHY_DEBUG: #{msg}" if Launchy.debug?
110
+ end
111
+ end
112
+ end
113
+
114
+ require 'launchy/version'
115
+ require 'launchy/cli'
116
+ require 'launchy/descendant_tracker'
117
+ require 'launchy/error'
118
+ require 'launchy/application'
119
+ require 'launchy/detect'
@@ -0,0 +1,81 @@
1
+ require 'set'
2
+ module Launchy
3
+ #
4
+ # Application is the base class of all the application types that launchy may
5
+ # invoke. It essentially defines the public api of the launchy system.
6
+ #
7
+ # Every class that inherits from Application must define:
8
+ #
9
+ # 1. A constructor taking no parameters
10
+ # 2. An instance method 'open' taking a string or URI as the first parameter and a
11
+ # hash as the second
12
+ # 3. A class method 'schemes' that returns an array of Strings containing the
13
+ # schemes that the Application will handle
14
+ class Application
15
+ extend DescendantTracker
16
+
17
+ class << self
18
+ #
19
+ # The list of all the schemes all the applications know
20
+ #
21
+ def scheme_list
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 )
42
+ return klass if klass
43
+
44
+ raise SchemeNotFoundError, "No application found to handle scheme '#{scheme}'. Known schemes: #{scheme_list.join(", ")}"
45
+ end
46
+
47
+ #
48
+ # Find the given executable in the available paths
49
+ def find_executable( bin, *paths )
50
+ paths = ENV['PATH'].split( File::PATH_SEPARATOR ) if paths.empty?
51
+ paths.each do |path|
52
+ file = File.join( path, bin )
53
+ if File.executable?( file ) then
54
+ Launchy.log "#{self.name} : found executable #{file}"
55
+ return file
56
+ end
57
+ end
58
+ Launchy.log "#{self.name} : Unable to find `#{bin}' in #{paths.join(", ")}"
59
+ return nil
60
+ end
61
+ end
62
+
63
+ attr_reader :host_os_family
64
+ attr_reader :ruby_engine
65
+ attr_reader :runner
66
+ def initialize
67
+ @host_os_family = Launchy::Detect::HostOsFamily.detect
68
+ @ruby_engine = Launchy::Detect::RubyEngine.detect
69
+ @runner = Launchy::Detect::Runner.detect
70
+ end
71
+
72
+ def find_executable( bin, *paths )
73
+ Application.find_executable( bin, *paths )
74
+ end
75
+
76
+ def run( cmd, *args )
77
+ runner.run( cmd, *args )
78
+ end
79
+ end
80
+ end
81
+ require 'launchy/applications/browser'