jeni 0.2.5 → 0.2.6
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.
- 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,
|