launchy 2.2.0 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NDc4OTYyY2FlMDJjZGIzM2Q2Zjg3MWI4MDdlMjg1MzU4Zjc5ZmI1OA==
5
+ data.tar.gz: !binary |-
6
+ ZjJjMDQ3ZmFmNDE3NDNmZWY4NWUwZGM3M2Y3NGJkYmZmMWFkYWIxMw==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ YmY4YTlhMmEyMWRjZTA0OTRjYTZiNTNlMDFmN2Q0NDY3NjMxOTI0NmFmMmQ3
10
+ YzMyY2NiODRkZjFjZGQzMTE0YzUxODc5ZGQ1OWNiYTc4MmY2MzgzMmQyYjNm
11
+ MTQ0M2Y1ZjZkZGRiMjY3OThkOTlkZGRmNmVjM2M0NzI2OTkyODA=
12
+ data.tar.gz: !binary |-
13
+ OWM0ZTI2YTk4NzMxZjg4ZGI1YWQ5NzVmMDg0MzExNjM3ZjI0ODI5OGViY2My
14
+ NDFmNjkzMzdmYTdhZDAxMjFmZWRiYzE5MzYyYTc5NzdhM2FmYzYxMDFkYmNi
15
+ MGI3YmFiOWE2ZGVlODViOGNhODEzY2VlZmFhZWUzNjNmMzA3YTg=
@@ -35,14 +35,14 @@ easiest way to contribute.
35
35
 
36
36
  # Contributors
37
37
 
38
- * [Jeremy Hinegardner][https://github.com/copiousfreetime]
39
- * [Mike Farmer][https://github.com/mikefarmer]
40
- * [Suraj N. Kurapati][https://github.com/sunaku]
41
- * [Postmodern][https://github.com/postmodern]
42
- * [Stephen Judkins][https://github.com/stephenjudkins]
43
- * [Mariusz Pietrzyk][https://github.com/wijet]
44
- * [Bogdan Gusiev][https://github.com/bogdan]
45
- * [Miquel Rodríguez Telep][https://github.com/mrtorrent]j
38
+ * [Jeremy Hinegardner](https://github.com/copiousfreetime)
39
+ * [Mike Farmer](https://github.com/mikefarmer)
40
+ * [Suraj N. Kurapati](https://github.com/sunaku)
41
+ * [Postmodern](https://github.com/postmodern)
42
+ * [Stephen Judkins](https://github.com/stephenjudkins)
43
+ * [Mariusz Pietrzyk](https://github.com/wijet)
44
+ * [Bogdan Gusiev](https://github.com/bogdan)
45
+ * [Miquel Rodríguez Telep](https://github.com/mrtorrent)
46
46
 
47
47
  [GitHub Account]: https://github.com/signup/free "GitHub Signup"
48
48
  [GitHub Issues]: https://github.com/copiousfreetime/launchy/issues "Launchy Issues"
@@ -1,33 +1,38 @@
1
- = Launchy Changlog
2
- == Version 2.2.0 - 2013-02-06
1
+ # Launchy Changelog
2
+
3
+ ## Version 2.3.0 - 2013-04-11
4
+
5
+ * Add the option to call a block on error instead of raising an exception
6
+
7
+ ## Version 2.2.0 - 2013-02-06
3
8
 
4
9
  * Change XFCE detection to not depend on grep (copiousfreetime/launchy#52 - thanks bogdan)
5
10
  * Suppress forked process output (copiousfreetime/launchy#51)
6
11
  * Display help/usage if no url is given (copiousfreetime/launchy#54)
7
12
  * Detect the fluxbox environment (copiousfreetime/launchy#53)
8
- * Automatically detect 'http' url's if they are missing the 'http://' (copiousfreetime/launchy#55)
13
+ * Automatically detect `http` url's if they are missing the `http://` (copiousfreetime/launchy#55)
9
14
  * Update to latest project management rake tasks
10
15
 
11
- == Version 2.1.2 - 2012-08-06
16
+ ## Version 2.1.2 - 2012-08-06
12
17
 
13
18
  * Fix where HostOS would fail to convert to string on JRuby in 1.9 mode (copiousfreetime/launchy#45)
14
19
 
15
- == Version 2.1.1 - 2012-07-28
20
+ ## Version 2.1.1 - 2012-07-28
16
21
 
17
22
  * Update addressable runtime dependency (copiousfreetime/launchy#47)
18
23
  * Bring minitest and ffi development dependencies up to date
19
24
 
20
- == Version 2.1.0 - 2012-03-18
25
+ ## Version 2.1.0 - 2012-03-18
21
26
 
22
27
  * Fix raising exception when no browser program found (copiousfreetime/launchy#42)
23
28
  * Add LAUNCHY_DRY_RUN environment variable (thanks Mariusz Pietrzyk / wijet)
24
29
  * Update dependencies
25
30
 
26
- == Version 2.0.5 - 2011-07-24
31
+ ## Version 2.0.5 - 2011-07-24
27
32
 
28
33
  * Fix the case where $BROWSER is set and no *nix desktop was found (copiousfreetime/launchy#33)
29
34
 
30
- == Version 2.0.4 - 2011-07-23
35
+ ## Version 2.0.4 - 2011-07-23
31
36
 
32
37
  * Fix windows 'start' commandline (copiousfreetime/launchy#5)
33
38
  * Add capability to open local files with no file: scheme present (copiousfreetime/launchy#29)
@@ -35,24 +40,24 @@
35
40
  * Make better decisions on when to do shell escaping (copiousfreetime/launchy#31)
36
41
  * Switch to Addressable::URI so UTF-8 urls may be parsed. (copiousfreetime/launchy#32)
37
42
 
38
- == Version 2.0.3 - 2011-07-17
43
+ ## Version 2.0.3 - 2011-07-17
39
44
 
40
45
  * Add in Deprecated API wrappers that warn the user
41
46
 
42
- == Version 2.0.2 - 2011-07-17
47
+ ## Version 2.0.2 - 2011-07-17
43
48
 
44
49
  * Typo fixes from @mtorrent
45
50
  * Documentation updates explicitly stating the Public API
46
51
  * Increase test coverage
47
52
 
48
- == Version 2.0.1 - 2011-07-16
53
+ ## Version 2.0.1 - 2011-07-16
49
54
 
50
55
  * Almost a complete rewrite
51
56
  * JRuby Support
52
57
  * Organization is such that it will be easier to add additional applications
53
58
  * Windows behavior possibly fixed, again
54
59
 
55
- == Version 1.0.0 - 2011-03-17
60
+ ## Version 1.0.0 - 2011-03-17
56
61
 
57
62
  * Add JRuby support (Stephen Judkins)
58
63
  * Remove unused Paths module
@@ -60,51 +65,51 @@
60
65
  * Switch to use minitest
61
66
  * NOTE, this version was never released.
62
67
 
63
- == Version 0.4.0 - 2011-01-27
68
+ ## Version 0.4.0 - 2011-01-27
64
69
 
65
- * Add support for file:/// schema (postmodern)
70
+ * Add support for `file:///` schema (postmodern)
66
71
 
67
- == Version 0.3.7 - 2010-07-19
72
+ ## Version 0.3.7 - 2010-07-19
68
73
 
69
74
  * Fix launchy on windows (mikefarmer)
70
75
 
71
- == Version 0.3.6 - 2010-02-22
76
+ ## Version 0.3.6 - 2010-02-22
72
77
 
73
78
  * add a test:spec task to run tests without rcov support
74
- * added 'testing' os family for running tests
79
+ * added `testing` os family for running tests
75
80
 
76
- == Version 0.3.5 - 2009-12-17
81
+ ## Version 0.3.5 - 2009-12-17
77
82
 
78
83
  * clarify that launchy is under ISC license
79
84
  * fix missing data file in released gem needed for running specs
80
85
 
81
- == Version 0.3.3 - 2009-02-19
86
+ ## Version 0.3.3 - 2009-02-19
82
87
 
83
88
  * pass command line as discrete items to system() to avoid string
84
89
  interpretation by the system shell. (Suraj N. Kurapati)
85
90
  * rework project layout and tasks
86
91
 
87
- == Version 0.3.2 - 2008-05-21
92
+ ## Version 0.3.2 - 2008-05-21
88
93
 
89
94
  * detect aix and mingw as known operating systems.
90
95
 
91
- == Version 0.3.1 - 2007-09-08
96
+ ## Version 0.3.1 - 2007-09-08
92
97
 
93
98
  * finalize the command line wrapper around the launchy library.
94
99
  * added more tests
95
100
 
96
- == Version 0.3.0 - 2007-08-30
101
+ ## Version 0.3.0 - 2007-08-30
97
102
 
98
103
  * reorganize the code structure, removing Spawnable namespace
99
104
  * removed 'do_magic' method, changed it to 'open'
100
105
  * added override environment variable LAUNCHY_HOST_OS for testing
101
106
  * fix broken cygwin support [Bug #13472]
102
107
 
103
- == Version 0.2.1 - 2007-08-18
108
+ ## Version 0.2.1 - 2007-08-18
104
109
 
105
110
  * fix inability to find windows executables [Bug #13132]
106
111
 
107
- == Version 0.2.0 - 2007-08-11
112
+ ## Version 0.2.0 - 2007-08-11
108
113
 
109
114
  * rework browser finding
110
115
  * manual override with LAUNCHY_BROWSER environment variable
@@ -113,23 +118,23 @@
113
118
  * removed win32 gem
114
119
  * Add debug output by setting LAUNCHY_DEBUG environment variable to 'true'
115
120
 
116
- == Version 0.1.2 - 2007-08-11
121
+ ## Version 0.1.2 - 2007-08-11
117
122
 
118
123
  * forked child exits without calling at_exit handlers
119
124
 
120
- == Version 0.1.1
125
+ ## Version 0.1.1
121
126
 
122
127
  * fixed rubyforge task to release mswin32 gem also
123
128
 
124
- == Version 0.1.0
129
+ ## Version 0.1.0
125
130
 
126
131
  * Initial public release
127
132
  * switched to using fork to spawn process and require 'win32/process' if on windows
128
133
 
129
- == Version 0.0.2
134
+ ## Version 0.0.2
130
135
 
131
136
  * First attempt at using systemu to spawn processes
132
137
 
133
- == Version 0.0.1
138
+ ## Version 0.0.1
134
139
 
135
140
  * Initially working release
@@ -1,8 +1,8 @@
1
1
  CONTRIBUTING.md
2
- HISTORY.rdoc
2
+ HISTORY.md
3
3
  LICENSE
4
4
  Manifest.txt
5
- README.rdoc
5
+ README.md
6
6
  Rakefile
7
7
  bin/launchy
8
8
  lib/launchy.rb
@@ -1,39 +1,39 @@
1
- == launchy
1
+ # launchy
2
2
 
3
- * Homepage[http://www.copiousfreetime.org/projects/launchy/]
4
- * {Github Project}[http://github.com/copiousfreetime/launchy]
3
+ * [Homepage](https://github.com/copiousfreetime/launchy)
4
+ * [Github Project](https://github.com/copiousfreetime/launchy)
5
5
  * email jeremy at hinegardner dot org
6
6
 
7
- == DESCRIPTION
7
+ ## DESCRIPTION
8
8
 
9
- Launchy is helper class for launching cross-platform applications in a
10
- fire and forget manner.
9
+ Launchy is helper class for launching cross-platform applications in a fire and
10
+ forget manner.
11
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.
12
+ There are application concepts (browser, email client, etc) that are common
13
+ across all platforms, and they may be launched differently on each platform.
14
+ Launchy is here to make a common approach to launching external application from
15
+ within ruby programs.
16
16
 
17
- == FEATURES
17
+ ## FEATURES
18
18
 
19
19
  Currently only launching a browser is supported.
20
20
 
21
- == SYNOPSIS
21
+ ## SYNOPSIS
22
22
 
23
23
  You can use launchy on the commandline, or via its API.
24
24
 
25
- === Commandline
25
+ ### Commandline
26
26
 
27
27
  % launchy http://www.ruby-lang.org/
28
28
 
29
- There are additional commandline options, use 'launchy --help' to see them.
29
+ There are additional commandline options, use `launchy --help` to see them.
30
30
 
31
- === Public API
31
+ ### Public API
32
32
 
33
- In the vein of {Semantic Versioning}[http://semver.org], starting with version 2.0.0, this is the
34
- sole supported public API.
33
+ In the vein of [Semantic Versioning](http://semver.org), this is the sole
34
+ supported public API.
35
35
 
36
- Launchy.open( uri, options = {} )
36
+ Launchy.open( uri, options = {} ) { |exception| }
37
37
 
38
38
  At the moment, the only available options are:
39
39
 
@@ -43,15 +43,26 @@ At the moment, the only available options are:
43
43
  :ruby_engine Explicitly state what ruby engine to pretend to be under
44
44
  :dry_run Do nothing and print the command that would be executed on $stdout
45
45
 
46
- An example of using the public API:
46
+ If `Launchy.open` is invoked with a block, then no exception will be thrown, and
47
+ the block will be called with the parameters passed to `#open` along with the
48
+ exception that was raised.
49
+
50
+ ### An example of using the public API:
47
51
 
48
52
  Launchy.open( "http://www.ruby-lang.org" )
49
53
 
50
- == UPGRADING
54
+ ### An example of using the public API and using the error block:
55
+
56
+ uri = "http://www.ruby-lang.org"
57
+ Launchy.open( uri ) do |exception|
58
+ puts "Attempted to open #{uri} and failed because #{exception}"
59
+ end
51
60
 
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.
61
+ ## UPGRADING from versions before 2.0.0
62
+
63
+ The previously published versino of Launchy before the 2.0.0 series was 0.4.0.
64
+ There have been so many changes, and a mistaken tag at 1.0.0, that I have
65
+ decided to bump all the way to 2.x.y.
55
66
 
56
67
  I have attempted to keep backward compatibility with the previous examples. The
57
68
  previous API examples of:
@@ -79,7 +90,10 @@ in the github gem if it was updated to use 2.0.x but not use the supported API.
79
90
  WARNING:
80
91
  WARNING: If this is not the case, please file a bug. Please file a bug at https://github.com/copiousfreetime/launchy/issues/new
81
92
 
82
- == ISC LICENSE
93
+ These deprecation notices will go away with version 3.0 and the only availabel
94
+ API will be the documented one.
95
+
96
+ ## ISC LICENSE
83
97
 
84
98
  http://opensource.org/licenses/isc-license.txt
85
99
 
@@ -22,16 +22,21 @@ module Launchy
22
22
  #
23
23
  # Launch an application for the given uri string
24
24
  #
25
- def open(uri_s, options = {} )
26
- extract_global_options( options )
25
+ def open(uri_s, options = {}, &error_block )
26
+ leftover = extract_global_options( options )
27
27
  uri = string_to_uri( uri_s )
28
28
  app = app_for_uri( uri )
29
- app.new.open( uri, options )
29
+ app.new.open( uri, leftover )
30
30
  rescue Launchy::Error => le
31
31
  raise le
32
32
  rescue Exception => e
33
33
  msg = "Failure in opening uri #{uri_s.inspect} with options #{options.inspect}: #{e}"
34
34
  raise Launchy::Error, msg
35
+ ensure
36
+ if $! and block_given? then
37
+ yield $!
38
+ return # explicitly swallow the errors
39
+ end
35
40
  end
36
41
 
37
42
  def app_for_uri( uri )
@@ -39,12 +44,16 @@ module Launchy
39
44
  end
40
45
 
41
46
  def app_for_uri_string( s )
42
- app_for_uri( string_to_uri( s ) )
47
+ app_for_uri( string_to_uri( s ) )
43
48
  end
44
49
 
45
50
  def string_to_uri( s )
46
51
  uri = Addressable::URI.parse( s )
47
- uri = Addressable::URI.heuristic_parse( s ) unless uri.scheme
52
+ Launchy.log "URI parsing pass 1 : #{s} -> #{uri.to_hash}"
53
+ if not uri.scheme then
54
+ uri = Addressable::URI.heuristic_parse( s )
55
+ Launchy.log "URI parsing pass 2 : #{s} -> #{uri.to_hash}"
56
+ end
48
57
  raise Launchy::ArgumentError, "Invalid URI given: #{s.inspect}" unless uri
49
58
  return uri
50
59
  end
@@ -58,11 +67,12 @@ module Launchy
58
67
  end
59
68
 
60
69
  def extract_global_options( options )
61
- Launchy.debug = options.delete( :debug ) || ENV['LAUNCHY_DEBUG']
62
- Launchy.application = options.delete( :application ) || ENV['LAUNCHY_APPLICATION']
63
- Launchy.host_os = options.delete( :host_os ) || ENV['LAUNCHY_HOST_OS']
64
- Launchy.ruby_engine = options.delete( :ruby_engine ) || ENV['LAUNCHY_RUBY_ENGINE']
65
- Launchy.dry_run = options.delete( :dry_run ) || ENV['LAUNCHY_DRY_RUN']
70
+ leftover = options.dup
71
+ Launchy.debug = leftover.delete( :debug ) || ENV['LAUNCHY_DEBUG']
72
+ Launchy.application = leftover.delete( :application ) || ENV['LAUNCHY_APPLICATION']
73
+ Launchy.host_os = leftover.delete( :host_os ) || ENV['LAUNCHY_HOST_OS']
74
+ Launchy.ruby_engine = leftover.delete( :ruby_engine ) || ENV['LAUNCHY_RUBY_ENGINE']
75
+ Launchy.dry_run = leftover.delete( :dry_run ) || ENV['LAUNCHY_DRY_RUN']
66
76
  end
67
77
 
68
78
  def debug=( d )
@@ -9,7 +9,7 @@ class Launchy::Application
9
9
 
10
10
  def self.handles?( uri )
11
11
  return true if schemes.include?( uri.scheme )
12
- return true if File.exist?( uri.path )
12
+ return true if File.exist?( uri.path ) and uri.scheme.nil?
13
13
  end
14
14
 
15
15
  def windows_app_list
@@ -65,13 +65,11 @@ module Launchy
65
65
 
66
66
  def good_run( argv, env )
67
67
  if parse( argv, env ) then
68
- Launchy.open( argv.shift, options )
68
+ Launchy.open( argv.shift, options ) { |e| error_output( e ) }
69
69
  return true
70
70
  else
71
71
  return false
72
72
  end
73
- rescue StandardError => e
74
- error_output( e )
75
73
  end
76
74
 
77
75
  def error_output( error )
@@ -1,5 +1,5 @@
1
1
  module Launchy
2
- VERSION = "2.2.0"
2
+ VERSION = "2.3.0"
3
3
 
4
4
  module Version
5
5
 
@@ -6,6 +6,7 @@ describe Launchy do
6
6
  Launchy.reset_global_options
7
7
  @stderr = $stderr
8
8
  $stderr = StringIO.new
9
+ @invalid_url = 'blah://example.com/invalid'
9
10
  end
10
11
 
11
12
  after do
@@ -51,7 +52,26 @@ describe Launchy do
51
52
  end
52
53
 
53
54
  it "raises an exception if no scheme is found for the given uri" do
54
- lambda { Launchy.open( "blah://something/invalid" ) }.must_raise Launchy::ApplicationNotFoundError
55
+ lambda { Launchy.open( @invalid_url ) }.must_raise Launchy::ApplicationNotFoundError
56
+ end
57
+
58
+ it "raises an exception if we have an invalid scheme and a valid path" do
59
+ lambda { Launchy.open( "blah://example.com/" ) }.must_raise Launchy::ApplicationNotFoundError
60
+ end
61
+
62
+ it "calls the block if instead of raising an exception if there is an error" do
63
+ Launchy.open( @invalid_url ) { $stderr.puts "oops had an error opening #{@invalid_url}" }
64
+ $stderr.string.strip.must_equal "oops had an error opening #{@invalid_url}"
65
+ end
66
+
67
+ it "calls the block with the values passed to launchy and the error" do
68
+ options = { :dry_run => true }
69
+ Launchy.open( @invalid_url, :dry_run => true ) { |e| $stderr.puts "had an error opening #{@invalid_url} with options #{options}: #{e}" }
70
+ $stderr.string.strip.must_equal "had an error opening #{@invalid_url} with options #{options}: No application found to handle '#{@invalid_url}'"
71
+ end
72
+
73
+ it "raises the error in the called block" do
74
+ lambda { Launchy.open( @invalid_url ) { raise StandardError, "KABOOM!" } }.must_raise StandardError
55
75
  end
56
76
 
57
77
  [ 'www.example.com', 'www.example.com/foo/bar' ].each do |x|
@@ -56,6 +56,9 @@ begin
56
56
  t.libs = %w[ lib spec ]
57
57
  t.pattern = "spec/**/*_spec.rb"
58
58
  end
59
+
60
+ task :test_requirements
61
+ task :test => :test_requirements
59
62
  task :default => :test
60
63
  rescue LoadError
61
64
  This.task_warning( 'test' )
@@ -71,9 +74,10 @@ begin
71
74
  RDoc::Task.new do |t|
72
75
  t.markup = 'tomdoc'
73
76
  t.rdoc_dir = 'doc'
74
- t.main = 'README.rdoc'
77
+ t.main = 'README.md'
75
78
  t.title = "#{This.name} #{This.version}"
76
- t.rdoc_files.include( '*.rdoc', 'lib/**/*.rb' )
79
+ t.rdoc_files.include( FileList['*.{rdoc,md,txt}'], FileList['ext/**/*.c'],
80
+ FileList['lib/**/*.rb'] )
77
81
  end
78
82
  rescue LoadError => le
79
83
  This.task_warning( 'rdoc' )
@@ -146,19 +150,70 @@ end
146
150
  #------------------------------------------------------------------------------
147
151
  # Fixme - look for fixmes and report them
148
152
  #------------------------------------------------------------------------------
149
- desc "Look for fixmes and report them"
150
- task :fixme => 'manifest:check' do
151
- This.manifest.each do |file|
152
- next if file == File.basename( __FILE__ )
153
+ namespace :fixme do
154
+ task :default => 'manifest:check' do
155
+ This.manifest.each do |file|
156
+ next if file == __FILE__
157
+ next unless file =~ %r/(txt|rb|md|rdoc|css|html|xml|css)\Z/
158
+ puts "FIXME: Rename #{file}" if file =~ /fixme/i
159
+ IO.readlines( file ).each_with_index do |line, idx|
160
+ prefix = "FIXME: #{file}:#{idx+1}".ljust(42)
161
+ puts "#{prefix} => #{line.strip}" if line =~ /fixme/i
162
+ end
163
+ end
164
+ end
165
+
166
+ def fixme_project_root
167
+ This.project_path( '../fixme' )
168
+ end
169
+
170
+ def fixme_project_path( subtree )
171
+ fixme_project_root.join( subtree )
172
+ end
173
+
174
+ def local_fixme_files
175
+ This.manifest.select { |p| p =~ %r|^tasks/| }
176
+ end
153
177
 
154
- puts "FIXME: Rename #{file}" if file =~ /fixme/i
178
+ def outdated_fixme_files
179
+ local_fixme_files.reject do |local|
180
+ upstream = fixme_project_path( local )
181
+ Digest::SHA256.file( local ) == Digest::SHA256.file( upstream )
182
+ end
183
+ end
184
+
185
+ def fixme_up_to_date?
186
+ outdated_fixme_files.empty?
187
+ end
155
188
 
156
- IO.readlines( file ).each_with_index do |line, idx|
157
- prefix = "FIXME: #{file}:#{idx+1}".ljust(42)
158
- puts "#{prefix} => #{line.strip}" if line =~ /fixme/i
189
+ desc "See if the fixme tools are outdated"
190
+ task :outdated => :release_check do
191
+ if fixme_up_to_date? then
192
+ puts "Fixme files are up to date."
193
+ else
194
+ outdated_fixme_files.each do |f|
195
+ puts "#{f} is outdated"
196
+ end
197
+ end
198
+ end
199
+
200
+ desc "Update outdated fixme files"
201
+ task :update => :release_check do
202
+ if fixme_up_to_date? then
203
+ puts "Fixme files are already up to date."
204
+ else
205
+ puts "Updating fixme files:"
206
+ outdated_fixme_files.each do |local|
207
+ upstream = fixme_project_path( local )
208
+ puts " * #{local}"
209
+ FileUtils.cp( upstream, local )
210
+ end
211
+ puts "Use your git commands as appropriate."
159
212
  end
160
213
  end
161
214
  end
215
+ desc "Look for fixmes and report them"
216
+ task :fixme => "fixme:default"
162
217
 
163
218
  #------------------------------------------------------------------------------
164
219
  # Gem Specification
@@ -172,7 +227,10 @@ task :gemspec do
172
227
  end
173
228
 
174
229
  # the gemspec is also a dev artifact and should not be kept around.
175
- CLOBBER << This.gemspec_file
230
+ CLOBBER << This.gemspec_file.to_s
231
+
232
+ # .rbc files from ruby 2.0
233
+ CLOBBER << FileList["**/*.rbc"]
176
234
 
177
235
  # The standard gem packaging task, everyone has it.
178
236
  require 'rubygems/package_task'
@@ -25,7 +25,7 @@ class ThisProject
25
25
  #
26
26
  # Yields self
27
27
  def initialize(&block)
28
- @exclude_from_manifest = %r/tmp$|\.(git|DS_Store)|^(doc|coverage|pkg)|Gemfile*|\.gemspec$|\.swp$|\.jar|\.rvmrc$|~$/
28
+ @exclude_from_manifest = %r/\.(git|DS_Store)|^(doc|coverage|pkg|tmp)|Gemfile*|\.(gemspec|swp|jar|bundle|so|rvmrc)$|~$/
29
29
  @gemspecs = Hash.new
30
30
  yield self if block_given?
31
31
  end
@@ -54,7 +54,7 @@ class ThisProject
54
54
  #
55
55
  # Retuns the text of the section as an array of paragrphs.
56
56
  def section_of( file, section_name )
57
- re = /^=+ (.*)$/
57
+ re = /^[=#]+ (.*)$/
58
58
  sectional = project_path( file )
59
59
  parts = sectional.read.split( re )[1..-1]
60
60
  parts.map! { |p| p.strip }
@@ -77,8 +77,8 @@ class ThisProject
77
77
  # path - the relative path of the file from the project root
78
78
  #
79
79
  # Returns the Pathname of the file
80
- def project_path( relative_path )
81
- project_root.join( relative_path )
80
+ def project_path( *relative_path )
81
+ project_root.join( *relative_path )
82
82
  end
83
83
 
84
84
  # Internal: The absolute path of this file
@@ -110,6 +110,13 @@ class ThisProject
110
110
  manifest_file.readlines.map { |l| l.strip }
111
111
  end
112
112
 
113
+ # Internal: Return the files that define the extensions
114
+ #
115
+ # Returns an Array
116
+ def extension_conf_files
117
+ manifest.grep( /extconf.rb\Z/ )
118
+ end
119
+
113
120
  # Internal: Returns the gemspace associated with the current ruby platform
114
121
  def platform_gemspec
115
122
  gemspecs[platform]
@@ -130,8 +137,8 @@ class ThisProject
130
137
  spec.executables = spec.files.grep(/^bin/) { |f| File.basename(f) }
131
138
  spec.test_files = spec.files.grep(/^spec/)
132
139
 
133
- spec.extra_rdoc_files += spec.files.grep(/(txt|rdoc)$/)
134
- spec.rdoc_options = [ "--main" , 'README.rdoc',
140
+ spec.extra_rdoc_files += spec.files.grep(/(txt|rdoc|md)$/)
141
+ spec.rdoc_options = [ "--main" , 'README.md',
135
142
  "--markup", "tomdoc" ]
136
143
  end
137
144
  end
@@ -180,7 +187,7 @@ class ThisProject
180
187
 
181
188
  # Internal: Return the DESCRIPTION section of the README.rdoc file
182
189
  def description_section
183
- section_of( 'README.rdoc', 'DESCRIPTION')
190
+ section_of( 'README.md', 'DESCRIPTION')
184
191
  end
185
192
 
186
193
  # Internal: Return the summary text from the README
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: launchy
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
5
- prerelease:
4
+ version: 2.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jeremy Hinegardner
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-06 00:00:00.000000000 Z
11
+ date: 2013-04-16 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: addressable
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: minitest
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
@@ -62,7 +55,6 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rdoc
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ~>
68
60
  - !ruby/object:Gem::Version
@@ -70,7 +62,6 @@ dependencies:
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - ~>
76
67
  - !ruby/object:Gem::Version
@@ -85,15 +76,16 @@ executables:
85
76
  - launchy
86
77
  extensions: []
87
78
  extra_rdoc_files:
88
- - HISTORY.rdoc
79
+ - CONTRIBUTING.md
80
+ - HISTORY.md
89
81
  - Manifest.txt
90
- - README.rdoc
82
+ - README.md
91
83
  files:
92
84
  - CONTRIBUTING.md
93
- - HISTORY.rdoc
85
+ - HISTORY.md
94
86
  - LICENSE
95
87
  - Manifest.txt
96
- - README.rdoc
88
+ - README.md
97
89
  - Rakefile
98
90
  - bin/launchy
99
91
  - lib/launchy.rb
@@ -128,31 +120,30 @@ files:
128
120
  - tasks/this.rb
129
121
  homepage: http://github.com/copiousfreetime/launchy
130
122
  licenses: []
123
+ metadata: {}
131
124
  post_install_message:
132
125
  rdoc_options:
133
126
  - --main
134
- - README.rdoc
127
+ - README.md
135
128
  - --markup
136
129
  - tomdoc
137
130
  require_paths:
138
131
  - lib
139
132
  required_ruby_version: !ruby/object:Gem::Requirement
140
- none: false
141
133
  requirements:
142
134
  - - ! '>='
143
135
  - !ruby/object:Gem::Version
144
136
  version: '0'
145
137
  required_rubygems_version: !ruby/object:Gem::Requirement
146
- none: false
147
138
  requirements:
148
139
  - - ! '>='
149
140
  - !ruby/object:Gem::Version
150
141
  version: '0'
151
142
  requirements: []
152
143
  rubyforge_project:
153
- rubygems_version: 1.8.24
144
+ rubygems_version: 2.0.3
154
145
  signing_key:
155
- specification_version: 3
146
+ specification_version: 4
156
147
  summary: Launchy is helper class for launching cross-platform applications in a fire
157
148
  and forget manner.
158
149
  test_files: