jeni 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OTk0NDE2OWViOTU5YzYzOWMwZTc1YmVkZjZlZGE4M2E0NjNhMTRiZA==
4
+ YmIzMTg5YTE3M2NjN2Q4NzQzNzJjMWI1OGI1M2RlNmNiZmEyMjBkMw==
5
5
  data.tar.gz: !binary |-
6
- ODEwOTA2YzcwNTg3ZGY3NDk1YjlhYmI3MTM4ZTlhZjQ5ZDdhZjYwZg==
7
- !binary "U0hBNTEy":
6
+ MmFhYjUwNjcwNjU4ODEwZWJlZDkyMjdkZTY1MzU1YzkwYzM0NjJhNA==
7
+ SHA512:
8
8
  metadata.gz: !binary |-
9
- MDM1ZjA1ZTUxMjg2OGJjYjY2ZGE5ZWQ3OWFkYTI4ZDA3MmQwYWUxOWVmNTJh
10
- MWU3MmM3NzE1NzAxZjhhYjAzZWE4MmNkZThjMjE5ZDI1ZGZhNjI4N2Y3NTM1
11
- ZDU4OTczYTdhY2Y0ZjNmOWY2YjNmZWZkODBjNTNjMGQ0ZWM0YmY=
9
+ OTgwNDMyNmE2ODNhYjU2NzQwZWJmMjAzYzg3MWQ0NTZlMzMxNDVkNTc0MDEw
10
+ YTdlZDMwYmM3ZTZhNWY4N2RhNGI2OTFkMGY2NmM2MTBjMTVlMzA3NTU2NzJm
11
+ NWIxNjU3ZTE2OTBjYWNhYjJhMTMxYzBlMGJhOGY0NjU2MGQ0Mjg=
12
12
  data.tar.gz: !binary |-
13
- OGU3YzQ1MThhZWJjNTY0NDg0Y2QyOWI1MGVlMDEyNjg3ODE4MTdiYzQ4OGZm
14
- YzhlYWM5NTYxZjgxYWE0YzNlZGI5Yjg2MjdjMDIyYmY1MmEwYWU1ZTQ5MDg5
15
- YjJlZWU2OTdjYTYyMGFkZWQ0NzhkODRjOTU4ZTU3MTllYjBjMTc=
13
+ YTdjYzE1YThiYzNjYjcyNmJhNzQ0MmQ3MjNhZTAwNzI2M2I4ZDU0MTk4ZDhj
14
+ MTdiZDQzMmUwMjkwYTQ3MDkxZDc2MWNmMWUyNzEyYjllNmUyOGZmNDk3ZjAw
15
+ NWY0Zjg0ZWI5N2NiOWE5Yjc1NTJlOWI5YzcwMjhjNDE4YzdhYjI=
data/Bugs.rdoc CHANGED
@@ -1,9 +1,17 @@
1
+ # @markup rdoc
2
+ # @title Bugs and Changes
3
+
1
4
  == Outstanding Bugs and Change Requests for Jeni
2
5
 
6
+ [10-Oct-2014]
7
+
8
+ Convert to an instance eval approach rather than passing self to block!
9
+
3
10
  [20-Aug-2013]
4
11
 
5
12
  * Add a facility to check if a package has been installed and warn if it has not
6
- or even exit on error
13
+ or even exit on error - alternatively just use File.exists? for an executable
14
+ and do it manually!
7
15
 
8
16
  [14-Sep-2012]
9
17
 
@@ -4,6 +4,10 @@
4
4
  == History
5
5
 
6
6
 
7
+ [jeni-0.2.6 13-Oct-2014]
8
+
9
+ General tidy up and sort out of the shebang method.
10
+
7
11
  [jeni-0.2.5 28-Aug-2013]
8
12
 
9
13
  make target_root accessible and ignore chown etc on pretend
@@ -32,4 +36,4 @@
32
36
 
33
37
  [jeni-0.2.0 04-Oct-2012]
34
38
 
35
- Application forked from local 'jeni' due to Gam-space name clash.
39
+ Application forked from local 'jeni' due to Gem-space name clash.
data/README.md CHANGED
@@ -1,7 +1,5 @@
1
1
  # JENI
2
2
 
3
- _(a.k.a Jumpin Ermin's Nifty Installer)_
4
-
5
3
  A simple alternative to rubigen and thor that can be used to create a post-install script
6
4
  for a gem needing more than the standard file ops covered by rubygems. It can also be used
7
5
  for straight directories instead of gems, if required.
@@ -18,7 +16,8 @@ To install,
18
16
 
19
17
  gem install jeni.
20
18
 
21
- It is a plain library with no binaries or the like.
19
+ It is a plain library with no binaries or the like. To use it, you need to write a ruby
20
+ script.
22
21
 
23
22
  ## Getting Started
24
23
 
@@ -98,7 +97,7 @@ If the target is a relative path then it will be relative to /usr/local unless y
98
97
  use the -u switch (with the optparse option) or the {Jeni::Options.usr} method to set
99
98
  it to '/usr'.
100
99
 
101
- Global options can also be set, as defined in #{Jeni::Options}. The same options can be set using {Jeni::Optparse#optparse}
100
+ Global options can also be set, as defined in {Jeni::Options}. The same options can be set using {Jeni::Optparse#optparse}
102
101
  to automatically process command line options. Call it with ARGV instead of manually setting Jeni's options.
103
102
 
104
103
  Jeni::Installer.new_from_gem('jeni') do |jeni|
@@ -110,6 +109,48 @@ to automatically process command line options. Call it with ARGV instead of manu
110
109
  jeni.link('source/jeni.rb', File.join(target_dir, 'jeni_link.rb'))
111
110
  end.run!
112
111
 
112
+ ### Templates
113
+
114
+ Jeni can do more than copy and link files. It can also generate files from a simple
115
+ template. The templating engine is [HAML](http://haml.info/) but Jeni processes the
116
+ template so that it is treated as plain text (otherwise HAML would try to convert)
117
+ the file into HTML).
118
+
119
+ The main reason for having a template is to substitute local values into common files.
120
+ For example, it can be used to create a config file for a gem that can point to files
121
+ within the gem itself - useful for Sinatra with the app directory distributed in the gem.
122
+
123
+ To set a local variable, simply add it as a hash pair to the template call:
124
+
125
+ jeni.template('source/template.haml.rb',
126
+ File.join(target_dir, 'app.conf'),
127
+ app_dir:File.join(jeni.gem_dir, 'app'))
128
+
129
+ Note that Jeni provides the gem directory through its own method {Jeni}Within the template, the hash key becomes a variable: 'app_dir' that can be interpolated
130
+ in the usual manner:
131
+
132
+ # my config file
133
+ APP_ROOT=#{app_dir}
134
+
135
+ Finally, in case it might be useful, you can also have templates stored in standard
136
+ places (~/.jeni/templates and /usr/local/share/templates) and Jeni will search for them when
137
+ you use {Jeni::Installer#standard_template} (you only need to pass the basename).
138
+
139
+ ### Wrappers, gems and rubies
140
+
141
+ Jeni might not be necessary with Gems could install more files. With this in mind, Jeni tries to do
142
+ the same sort of things that Gem does - e.g. create a wrapper script that calls the
143
+ executable script in the gem. It even uses the same shebang approach because the sheband method
144
+ has been lifted and adapted from rubygems. See the method description to understand
145
+ all of the options: {Jeni::Actions#shebang}.
146
+
147
+ However, if you are working on a platform that supports multiple rubies then I would
148
+ recommend you leave selection of which ruby to the system. The only way this appears to
149
+ be possible is with a custom shebang (add "custom_shebang: $env ruby" to your gemrc). This
150
+ does not take any notice of options in the original shebang, but if they are universal you
151
+ could always add them to you custom shebang? This is because the rubygems does pick up
152
+ the original script's shebang but always tampers with the "ruby" bit. e.g. if it
153
+ was /usr/bin/env ruby it changes the ruby to ruby19 (even /usr/bin/ruby19?).
113
154
 
114
155
  ## Code Walkthrough
115
156
 
@@ -130,9 +171,12 @@ Jeni has a variety of options that can be set and are separately defined in {Jen
130
171
 
131
172
  The code is available from [GitHub](https://github.com/osburn-sharp/jeni)
132
173
 
174
+ Jeni stands for "Jumpin Ermin's Nifty Installer". Don't ask.
175
+
176
+
133
177
  ## Dependencies
134
178
 
135
- A ruby compiler - works with 1.8.7.
179
+ A ruby compiler >= 1.8.7. Currently works on 1.9.3 and 2.0.0.
136
180
 
137
181
  Check the {file:Gemfile} for other dependencies.
138
182
 
@@ -169,7 +213,8 @@ To test users and groups there is the following, which will fail if not run as r
169
213
 
170
214
  ## Bugs
171
215
 
172
- Details of any unresolved bugs and change requests are in {file:Bugs.rdoc Bugs}. Issues can be logged and tracked through
216
+ Details of any unresolved bugs and change requests are in {file:Bugs.rdoc Bugs}.
217
+ Issues can be logged and tracked through
173
218
  [GitHub](https://github.com/osburn-sharp/jeni/issues).
174
219
 
175
220
  ## Changelog
@@ -102,9 +102,9 @@ module Jeni
102
102
  # be taken
103
103
  #
104
104
  def self.new_from_gem(gem_name)
105
- gem_spec = Gem::Specification.find_by_name(gem_name)
106
- installer = self.new(gem_spec.gem_dir, gem_name)
107
- installer.set_gem(gem_spec.gem_dir)
105
+ @gem_spec = Gem::Specification.find_by_name(gem_name)
106
+ installer = self.new(@gem_spec.gem_dir, gem_name)
107
+ installer.set_gem(@gem_spec.gem_dir)
108
108
  if block_given? then
109
109
  yield(installer)
110
110
  end
@@ -184,7 +184,7 @@ module Jeni
184
184
  #
185
185
  # @param [String] source is the gem-relative path to the file to copy
186
186
  # @param [String] target is a relative or absolute path to copy to
187
- # @params [Hash] opts options for copying the file
187
+ # @param [Hash] opts options for copying the file
188
188
  # @option opts [String] :chown the name of the owner
189
189
  # @option opts [String] :chgrp the name of the group
190
190
  # @option opts [Octal] :chmod octal bit settings for chmod
@@ -243,7 +243,7 @@ module Jeni
243
243
  # check that a file exists
244
244
  #
245
245
  # @param [String] file to test, relative to the source (e.g. gem)
246
- # @param [Hash] options
246
+ # @param [Hash] opts fpr file checking
247
247
  # @option opts [Symbol] :executable to check if it is also executable
248
248
  #
249
249
  def file_exists?(file, opts={})
@@ -255,7 +255,7 @@ module Jeni
255
255
  # create a new user
256
256
  #
257
257
  # @param [String] name of the new user to create
258
- # @param [Hash] options for creating the user
258
+ # @param [Hash] opts for creating the user
259
259
  # @option opts [Integer] :uid user id instead of next available
260
260
  # @option opts [Integer] :gid group id instead of next available
261
261
  # @option opts [String] :home path to home directory for user, defaults to /home/$user
@@ -274,7 +274,7 @@ module Jeni
274
274
  # create a new group
275
275
  #
276
276
  # @param [String] name of the new group to create
277
- # @param [Hash] options for creating the user
277
+ # @param [Hash] opts for creating the user
278
278
  # @option opts [Integer] :gid group id instead of next available
279
279
  # @option opts [Boolean] :skip set true to skip if user exists else fail
280
280
  #
@@ -317,7 +317,7 @@ module Jeni
317
317
  end
318
318
 
319
319
  # as for {Jeni::Installer#template} but searches for the source template from a list of predefined
320
- # directories. These are ~/.jermine/templates and /usr/local/share/templates
320
+ # directories. These are ~/.jeni/templates and /usr/local/share/templates
321
321
  #
322
322
  # @param (see #template)
323
323
  #
@@ -343,7 +343,7 @@ module Jeni
343
343
  #
344
344
  # @param [String] source is the relative path to the file to wrap
345
345
  # @param [String] target is an absolute path for the wrapper
346
- # @params [Hash] opts options for wrapping the file
346
+ # @param [Hash] opts options for wrapping the file
347
347
  # @option opts [String] :chown the name of the owner
348
348
  #
349
349
  def wrapper(source, target, opts={})
@@ -18,7 +18,9 @@
18
18
 
19
19
  module Jeni
20
20
 
21
- # Implementation mixin containing methods for each action that Jeni carries out
21
+ # Implementation mixin containing methods for each action that Jeni carries out. These
22
+ # are internal methods - full details of the methods to use when writing
23
+ # a Jeni script are contained in the {file:README.md README} file and in {Jeni::Installer}.
22
24
  module Actions
23
25
 
24
26
  # Create a copy of the source file as the target file
@@ -163,7 +165,7 @@ module Jeni
163
165
  # return the path to the standard template, which can be found in
164
166
  # the places search below.
165
167
  def get_template(source)
166
- gsource = File.expand_path(File.join('.jermine', 'templates', source), '~')
168
+ gsource = File.expand_path(File.join('.jeni', 'templates', source), '~')
167
169
  unless File.exists?(gsource)
168
170
  gsource = File.join('usr', 'local', 'share', 'templates', source)
169
171
  unless File.exists(gsource)
@@ -279,60 +281,76 @@ TEXT
279
281
  # Generates a #! line for +bin_file_name+'s wrapper copying arguments if
280
282
  # necessary.
281
283
  #
284
+ # Adapted from rubygems.
285
+ #
282
286
  # If the :custom_shebang config is set, then it is used as a template
283
- # for how to create the shebang used for to run a gem's executables.
287
+ # for how to create the shebang used for to run a gem's executables. Note
288
+ # you can set a custom_shebang in .gemrc e.g. "custom_shebang: $env ruby".
289
+ # It is set as a string and not a symbol.
284
290
  #
285
- # The template supports 4 expansions:
291
+ # A custom shebang overides any other output.
286
292
  #
287
- # $env the path to the unix env utility
288
- # $ruby the path to the currently running ruby interpreter
289
- # $exec the path to the gem's executable
290
- # $name the name of the gem the executable is for
293
+ # if @env_shebang (see {Jeni::Options#env_shebang}) is set then the result will be the local env with the
294
+ # current ruby install name, e.g.: "/usr/bin/env ruby20". If there are
295
+ # options on the original script's shebang then the resultis slightly different.
296
+ # The shebang becomes a /bin/sh, which then exec's the ruby install name with
297
+ # the -x switch and itself as the file, finally inserting the original shebang
298
+ # (although the ruby has been replace with Gem.ruby). Love to know what all
299
+ # this is about!
291
300
  #
292
- def shebang(source)
293
-
294
- env_paths = %w[/usr/bin/env /bin/env]
301
+ # Otherwise the value of Gem.ruby will be used with any of options
302
+ # added to the shebang on the original script.
303
+ #
304
+ # The template used for custom shebangs supports 4 expansions:
305
+ #
306
+ # * $env the path to the unix env utility
307
+ # * $ruby the path to the currently running ruby interpreter
308
+ # * $exec the path to the gem's executable
309
+ # * $name the name of the gem the executable is for
310
+ #
311
+ def shebang(path)
312
+ ruby_name = RbConfig::CONFIG['ruby_install_name'] if @env_shebang
295
313
 
296
- ruby_name = Gem::ConfigMap[:ruby_install_name] #if @env_shebang
314
+ #path = File.join gem_dir, spec.bindir, bin_file_name
315
+ bin_file_name = File.basename(path)
316
+ first_line = File.open(path, "rb") {|file| file.gets}
297
317
 
298
- first_line = File.open(source, "rb") {|file| file.gets}
299
- env_path = nil
300
-
301
318
  if /\A#!/ =~ first_line then
302
319
  # Preserve extra words on shebang line, like "-w". Thanks RPA.
303
320
  shebang = first_line.sub(/\A\#!.*?ruby\S*((\s+\S+)+)/, "#!#{Gem.ruby}")
304
321
  opts = $1
305
322
  shebang.strip! # Avoid nasty ^M issues.
306
323
  end
307
-
324
+
308
325
  if which = Gem.configuration[:custom_shebang]
326
+ # replace bin_file_name with "ruby" to avoid endless loops
327
+ which = which.gsub(/ #{bin_file_name}$/," #{RbConfig::CONFIG['ruby_install_name']}")
328
+
309
329
  which = which.gsub(/\$(\w+)/) do
310
330
  case $1
311
331
  when "env"
312
- env_path ||= env_paths.find do |e_path|
313
- File.executable? e_path
314
- end
332
+ @env_path ||= Gem::Installer::ENV_PATHS.find {|env_path| File.executable? env_path }
315
333
  when "ruby"
316
334
  "#{Gem.ruby}#{opts}"
317
335
  when "exec"
318
336
  bin_file_name
319
337
  when "name"
320
- spec.name
338
+ @app_name
321
339
  end
322
340
  end
323
-
341
+
324
342
  return "#!#{which}"
325
- end
326
-
327
- if not ruby_name then
328
- "#!#{Gem.ruby}#{opts}"
343
+
344
+ elsif not ruby_name then
345
+ return "#!#{Gem.ruby}#{opts}"
329
346
  elsif opts then
330
- "#!/bin/sh\n'exec' #{ruby_name.dump} '-x' \"$0\" \"$@\"\n#{shebang}"
347
+ return "#!/bin/sh\n'exec' #{ruby_name.dump} '-x' \"$0\" \"$@\"\n#{shebang}"
331
348
  else
332
349
  # Create a plain shebang line.
333
- env_path ||= env_paths.find {|e_path| File.executable? e_path }
334
- "#!#{env_path} #{ruby_name}"
335
- end
350
+ @env_path ||= Gem::Installer::ENV_PATHS.find {|env_path| File.executable? env_path }
351
+ return "#!#{@env_path} #{ruby_name}"
352
+ end
353
+
336
354
  end
337
355
 
338
356
  # create a new user
@@ -73,6 +73,11 @@ module Jeni
73
73
  @target_root = path
74
74
  end
75
75
 
76
+ # set the shebang in wrappers to use env (e.g. /usr/bin/env)
77
+ def env_shebang(bool=true)
78
+ @env_shebang = bool
79
+ end
80
+
76
81
  end
77
82
 
78
83
  end
@@ -77,6 +77,10 @@ module Jeni
77
77
  @target_root = t
78
78
  end
79
79
 
80
+ opts.on('-E', '--env-shebang', 'use the default env script in wrapper shebangs!') do
81
+ @env_shebang = true
82
+ end
83
+
80
84
 
81
85
  if block_given? then
82
86
  yield(opts)
@@ -1,13 +1,13 @@
1
1
  # Created by Jevoom
2
2
  #
3
- # 28-Aug-2013
4
- # make target_root accessible and ignore chown etc on pretend
3
+ # 13-Oct-2014
4
+ # General tidy up and sort out of the shebang method.
5
5
 
6
6
  module Jeni
7
- # version set to 0.2.5
8
- Version = '0.2.5'
9
- # date set to 28-Aug-2013
10
- Version_Date = '28-Aug-2013'
11
- #ident string set to: jeni-0.2.5 28-Aug-2013
12
- Ident = 'jeni-0.2.5 28-Aug-2013'
7
+ # version set to 0.2.6
8
+ Version = '0.2.6'
9
+ # date set to 13-Oct-2014
10
+ Version_Date = '13-Oct-2014'
11
+ #ident string set to: jeni-0.2.6 13-Oct-2014
12
+ Ident = 'jeni-0.2.6 13-Oct-2014'
13
13
  end
@@ -0,0 +1,52 @@
1
+ #
2
+ # Author:: Robert Sharp
3
+ # Copyright:: Copyright (c) 2014 Robert Sharp
4
+ # License:: Open Software Licence v3.0
5
+ #
6
+ # This software is licensed for use under the Open Software Licence v. 3.0
7
+ # The terms of this licence can be found at http://www.opensource.org/licenses/osl-3.0.php
8
+ # and in the file copyright.txt. Under the terms of this licence, all derivative works
9
+ # must themselves be licensed under the Open Software Licence v. 3.0
10
+ #
11
+ #
12
+
13
+
14
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
15
+ require 'jeni/errors'
16
+ require 'jeni/actions'
17
+
18
+ proot = File.dirname(File.dirname(__FILE__))
19
+ conf_file = File.expand_path(File.dirname(__FILE__) + '/../test/shebang.rb')
20
+
21
+ # mimic the class without actually having to set one up!
22
+ # have to create the odd instance variable along the way.
23
+ include Jeni::Actions
24
+
25
+ describe Jeni do
26
+
27
+
28
+ it "should output a plain specific ruby with and without env" do
29
+ #@gem_spec = Gem::Specification.find_by_name('jerbil')
30
+ Gem.configuration[:custom_shebang] = nil
31
+ expect(shebang(conf_file)).to match(/\A#!\/usr\/bin\/ruby[0-9]{2,2}\z/)
32
+ @env_shebang = true
33
+ expect(shebang(File.join(proot, 'test', 'noshebang.rb'))).to match(/\A#!\/usr\/bin\/env ruby[0-9]{2,2}\z/)
34
+ end
35
+
36
+ it "should output a custom shebang" do
37
+ Gem.configuration[:custom_shebang] = "$env ruby"
38
+ expect(shebang(conf_file)).to match(/\A#!\/usr\/bin\/env ruby\z/)
39
+ end
40
+
41
+ it "should output a custom shebang with all variables defined" do
42
+ @app_name = 'jerbil'
43
+ Gem.configuration[:custom_shebang] = "$env $ruby $exec $name"
44
+ expect(shebang(conf_file)).to match(/\A#!\/usr\/bin\/env \/usr\/bin\/ruby[0-9]{2,2} shebang.rb jerbil\z/)
45
+ end
46
+
47
+ it "should output a shebang with options" do
48
+ @env_shebang = false
49
+ expect(shebang(File.join(proot, 'test', 'optshebang.rb'))).to match(/\A#!\/usr\/bin\/env ruby[0-9]{2,2} \-x\z/)
50
+ end
51
+
52
+ end
@@ -17,10 +17,10 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
17
17
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
18
18
  require 'jeni'
19
19
  require 'rspec'
20
- require 'rspec/autorun'
20
+
21
21
 
22
22
  RSpec.configure do |config|
23
- config.color_enabled = true
23
+ config.color = true
24
24
  config.formatter = :doc
25
25
  end
26
26
 
@@ -0,0 +1 @@
1
+ puts "This is ruby"
@@ -0,0 +1 @@
1
+ #!/usr/bin/env ruby -x
@@ -0,0 +1 @@
1
+ #!/usr/bin/env ruby
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jeni
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dr Robert
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-28 00:00:00.000000000 Z
11
+ date: 2014-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: !binary |-
@@ -70,48 +70,52 @@ extra_rdoc_files:
70
70
  - Gemfile
71
71
  - README.md
72
72
  files:
73
- - History.txt
74
73
  - Bugs.rdoc
74
+ - Gemfile
75
+ - History.txt
75
76
  - Intro.txt
76
77
  - LICENCE.rdoc
77
- - Gemfile
78
78
  - README.md
79
+ - lib/jeni.rb
80
+ - lib/jeni/actions.rb
79
81
  - lib/jeni/errors.rb
80
- - lib/jeni/version.rb
81
- - lib/jeni/utils.rb
82
+ - lib/jeni/io.rb
82
83
  - lib/jeni/options.rb
83
84
  - lib/jeni/optparse.rb
84
- - lib/jeni/io.rb
85
- - lib/jeni/actions.rb
86
- - lib/jeni.rb
87
- - spec/spec_helper.rb
85
+ - lib/jeni/utils.rb
86
+ - lib/jeni/version.rb
87
+ - spec/jeni_shebang_spec.rb
88
88
  - spec/jeni_spec.rb
89
89
  - spec/jeni_utils_spec.rb
90
- - test/examples/source/shebang.rb
91
- - test/examples/source/executable
92
- - test/examples/source/template.haml.rb
90
+ - spec/spec_helper.rb
93
91
  - test/examples/source/coati.haml.conf
94
- - test/examples/source/subfiles/subfile_1.rb
95
- - test/examples/source/jeni.rb
92
+ - test/examples/source/executable
96
93
  - test/examples/source/jeni-diff.rb
97
- - test/examples/test1.rb
98
- - test/examples/test_args
99
- - test/examples/test2.rb
100
- - test/examples/test_users
101
- - test/examples/target/jenny.rb
94
+ - test/examples/source/jeni.rb
95
+ - test/examples/source/shebang.rb
96
+ - test/examples/source/subfiles/subfile_1.rb
97
+ - test/examples/source/template.haml.rb
98
+ - test/examples/target/archive/coati.haml.conf
99
+ - test/examples/target/archive/executable
102
100
  - test/examples/target/archive/jenny-diff.rb
103
101
  - test/examples/target/archive/jenny.rb
104
102
  - test/examples/target/archive/shebang.rb
105
- - test/examples/target/archive/executable
106
- - test/examples/target/archive/template.haml.rb
107
- - test/examples/target/archive/coati.haml.conf
108
103
  - test/examples/target/archive/subfiles/subfile_1.rb
109
- - test/examples/target/jenny_link.rb
110
- - test/examples/target/test.rb
104
+ - test/examples/target/archive/template.haml.rb
111
105
  - test/examples/target/jeni.rb
112
106
  - test/examples/target/jeni_template.rb
107
+ - test/examples/target/jenny.rb
108
+ - test/examples/target/jenny_link.rb
113
109
  - test/examples/target/shebang.rb
110
+ - test/examples/target/test.rb
114
111
  - test/examples/target2/subfiles/subfile_1.rb
112
+ - test/examples/test1.rb
113
+ - test/examples/test2.rb
114
+ - test/examples/test_args
115
+ - test/examples/test_users
116
+ - test/noshebang.rb
117
+ - test/optshebang.rb
118
+ - test/shebang.rb
115
119
  homepage: ''
116
120
  licenses:
117
121
  - Open Software Licence v3.0
@@ -133,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
137
  version: '0'
134
138
  requirements: []
135
139
  rubyforge_project:
136
- rubygems_version: 2.0.7
140
+ rubygems_version: 2.4.2
137
141
  signing_key:
138
142
  specification_version: 4
139
143
  summary: A little post-install helper for Gems to install things Gems can't reach,