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 +9 -9
- data/Bugs.rdoc +9 -1
- data/History.txt +5 -1
- data/README.md +51 -6
- data/lib/jeni.rb +9 -9
- data/lib/jeni/actions.rb +47 -29
- data/lib/jeni/options.rb +5 -0
- data/lib/jeni/optparse.rb +4 -0
- data/lib/jeni/version.rb +8 -8
- data/spec/jeni_shebang_spec.rb +52 -0
- data/spec/spec_helper.rb +2 -2
- data/test/noshebang.rb +1 -0
- data/test/optshebang.rb +1 -0
- data/test/shebang.rb +1 -0
- metadata +30 -26
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YmIzMTg5YTE3M2NjN2Q4NzQzNzJjMWI1OGI1M2RlNmNiZmEyMjBkMw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
7
|
-
|
6
|
+
MmFhYjUwNjcwNjU4ODEwZWJlZDkyMjdkZTY1MzU1YzkwYzM0NjJhNA==
|
7
|
+
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OTgwNDMyNmE2ODNhYjU2NzQwZWJmMjAzYzg3MWQ0NTZlMzMxNDVkNTc0MDEw
|
10
|
+
YTdlZDMwYmM3ZTZhNWY4N2RhNGI2OTFkMGY2NmM2MTBjMTVlMzA3NTU2NzJm
|
11
|
+
NWIxNjU3ZTE2OTBjYWNhYjJhMTMxYzBlMGJhOGY0NjU2MGQ0Mjg=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
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
|
|
data/History.txt
CHANGED
@@ -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
|
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
|
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
|
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}.
|
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
|
data/lib/jeni.rb
CHANGED
@@ -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
|
-
# @
|
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]
|
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]
|
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]
|
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 ~/.
|
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
|
-
# @
|
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={})
|
data/lib/jeni/actions.rb
CHANGED
@@ -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('.
|
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
|
-
#
|
291
|
+
# A custom shebang overides any other output.
|
286
292
|
#
|
287
|
-
#
|
288
|
-
#
|
289
|
-
#
|
290
|
-
#
|
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
|
-
|
293
|
-
|
294
|
-
|
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
|
-
|
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 ||=
|
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
|
-
|
338
|
+
@app_name
|
321
339
|
end
|
322
340
|
end
|
323
|
-
|
341
|
+
|
324
342
|
return "#!#{which}"
|
325
|
-
|
326
|
-
|
327
|
-
|
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 ||=
|
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
|
data/lib/jeni/options.rb
CHANGED
data/lib/jeni/optparse.rb
CHANGED
data/lib/jeni/version.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
# Created by Jevoom
|
2
2
|
#
|
3
|
-
#
|
4
|
-
#
|
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.
|
8
|
-
Version = '0.2.
|
9
|
-
# date set to
|
10
|
-
Version_Date = '
|
11
|
-
#ident string set to: jeni-0.2.
|
12
|
-
Ident = 'jeni-0.2.
|
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
|
data/spec/spec_helper.rb
CHANGED
@@ -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
|
-
|
20
|
+
|
21
21
|
|
22
22
|
RSpec.configure do |config|
|
23
|
-
config.
|
23
|
+
config.color = true
|
24
24
|
config.formatter = :doc
|
25
25
|
end
|
26
26
|
|
data/test/noshebang.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
puts "This is ruby"
|
data/test/optshebang.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
#!/usr/bin/env ruby -x
|
data/test/shebang.rb
ADDED
@@ -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.
|
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:
|
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/
|
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/
|
85
|
-
- lib/jeni/
|
86
|
-
-
|
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
|
-
-
|
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/
|
95
|
-
- test/examples/source/jeni.rb
|
92
|
+
- test/examples/source/executable
|
96
93
|
- test/examples/source/jeni-diff.rb
|
97
|
-
- test/examples/
|
98
|
-
- test/examples/
|
99
|
-
- test/examples/
|
100
|
-
- test/examples/
|
101
|
-
- test/examples/target/
|
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/
|
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.
|
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,
|