gem-wrappers 0.7.0 → 0.7.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 761e2571ef7fc92b5714b61cfcf5ac00c5a18b05
4
- data.tar.gz: 981ecd6d3091a20ecd5ce0b50629ccd099c568e0
3
+ metadata.gz: 673d219add58a7492ba395ea130428a2d8745df0
4
+ data.tar.gz: 452373a2edc81fafc8572388124fb64d10488688
5
5
  SHA512:
6
- metadata.gz: 382b5be8ff702859ba69a9ee2da720c31f987ef35bcdd553a686231c7ff14749a34479d1faff251fb1f307c97152bc43c5a306ac3cab9e438a9b0efcdda97164
7
- data.tar.gz: 36806d2e568a7f1423914e7eaed9bff66562020cf4b12b341c959aba8f731de799f55648c0184133698e0bee7576ae4936f01a36b2f3721f49e45a3ca0eea277
6
+ metadata.gz: 7b9582b731703a665511e074ac84fb0e50075cff296966cfa1efada3f4b282fc9f45b3346f61374b8a7e1d22dd02c73baa5ba28702f25195b5676ae087ef6cec
7
+ data.tar.gz: c8c72999d79fd387afc99e311c7a79039f9b7480932e6ba566ac2de82959ed3643539200254212892bec8c08215fb8a7c51422d0502c788fdf2a567d437c1758
data/.travis.yml ADDED
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ notifications:
5
+ irc:
6
+ channels:
7
+ - "irc.freenode.org#rvm-test"
8
+ email:
9
+ recipients:
10
+ - mpapis@gmail.com
11
+ on_failure: change
data/README.md CHANGED
@@ -8,3 +8,50 @@
8
8
  [![Documentation](http://b.repl.ca/v1/yard-docs-blue.png)](http://rubydoc.info/gems/gem-wrappers/frames)
9
9
 
10
10
  Create gem wrappers for easy use of gems in cron and other system locations.
11
+
12
+ ## Configuration / Defaults
13
+
14
+ In `~/.gemrc` you can overwrite this defaults:
15
+
16
+ ```ruby
17
+ wrappers_path: GEM_HOME/wrappers
18
+ wrappers_environment_file: GEM_HOME/environment
19
+ wrappers_path_take: 1
20
+ ```
21
+
22
+ It is not yet possible to put variables in the configuration,
23
+ only relative and full paths will work, open a ticket if you need variables.
24
+
25
+ ## Generating wrappers
26
+
27
+ By default wrappers are installed when a gem is installed,
28
+ to rerun the process for all gems in `GEM_HOME` use:
29
+
30
+ ```bash
31
+ gem wrappers regenerate
32
+ ```
33
+
34
+ ## Showing current configuration
35
+
36
+ To see paths that are used by gem run:
37
+
38
+ ```bash
39
+ gem wrappers
40
+ ```
41
+
42
+ ## Environment file
43
+
44
+ User can provide his own `environment` file,
45
+ in case it is not available during generating wrappers it will be created using this template:
46
+
47
+ ```erb
48
+ export PATH="<%= path.join(":") %>:$PATH"
49
+ export GEM_PATH="<%= gem_path.join(":") %>"
50
+ export GEM_HOME="<%= gem_home %>"
51
+ ```
52
+
53
+ The path elements are calculated using this algorithm:
54
+
55
+ ```ruby
56
+ ENV['PATH'].split(":").take(Gem.path.size + path_take)
57
+ ```
@@ -51,14 +51,25 @@ DOC
51
51
  end
52
52
 
53
53
  def execute_regenerate
54
- gem_dir_specs = installed_gems.select { |spec|
54
+ GemWrappers.install(gem_dir_executables)
55
+ end
56
+
57
+ private
58
+
59
+ def gem_dir_executables
60
+ @gem_dir_executables ||= gem_dir_specs_executables.inject(&:+).reject(&:nil?)
61
+ end
62
+
63
+ def gem_dir_specs_executables
64
+ gem_dir_specs.map(&:executables).reject(&:nil?)
65
+ end
66
+
67
+ def gem_dir_specs
68
+ installed_gems.select { |spec|
55
69
  File.exists?( File.join( Gem.dir, 'gems', spec.full_name ) )
56
70
  }
57
- executables = gem_dir_specs.map(&:executables).reject(&:nil?).inject(&:+).reject(&:nil?)
58
- GemWrappers.install(executables)
59
71
  end
60
72
 
61
- private
62
73
  def installed_gems
63
74
  if Gem::VERSION > '1.8' then
64
75
  Gem::Specification.to_a
@@ -1,3 +1,3 @@
1
1
  module GemWrappers
2
- VERSION = "0.7.0"
2
+ VERSION = "0.7.1"
3
3
  end
@@ -1,6 +1,6 @@
1
1
  require 'test_helper'
2
2
  require 'tempfile'
3
- require 'gem-wrappers/environment'
3
+ require 'gem-wrappers/command'
4
4
 
5
5
  describe WrappersCommand do
6
6
  subject do
@@ -28,6 +28,65 @@ describe WrappersCommand do
28
28
  it "shows help on unknown command" do
29
29
  subject.options[:args] = ['wrong']
30
30
  subject.execute
31
+ $stderr.string.must_equal("Unknown wrapper subcommand: wrong\n")
32
+ $stdout.string.must_equal(subject.description)
33
+ end
34
+
35
+ it "does show" do
36
+ Gem.configuration[:wrappers_environment_file] = "/path/to/environment"
37
+ Gem.configuration[:wrappers_path] = "/path/to/wrappers"
38
+
39
+ subject.options[:args] = []
40
+ subject.execute
41
+
42
+ Gem.configuration[:wrappers_environment_file] = nil
43
+ Gem.configuration[:wrappers_path] = nil
44
+
45
+ $stderr.string.must_equal("")
46
+ $stdout.string.must_equal(<<-EXPECTED)
47
+ #{subject.description.strip}
48
+ Wrappers path: /path/to/wrappers
49
+ Environment file: /path/to/environment
50
+ EXPECTED
51
+ end
52
+
53
+
54
+ describe "wrappers" do
55
+ before do
56
+ file = Tempfile.new('command-wrappers')
57
+ @test_path = file.path
58
+ file.close
59
+ file.unlink
60
+ end
61
+
62
+ after do
63
+ FileUtils.rm_rf(@test_path)
64
+ end
65
+
66
+ it "regenerates wrappers" do
67
+ Gem.configuration[:wrappers_environment_file] = File.join(@test_path, "environment")
68
+ Gem.configuration[:wrappers_path] = File.join(@test_path, "wrappers")
69
+
70
+ subject.instance_variable_set(:@gem_dir_executables, %w{rake})
71
+ subject.options[:args] = ['regenerate']
72
+ subject.execute
73
+
74
+ Gem.configuration[:wrappers_environment_file] = nil
75
+ Gem.configuration[:wrappers_path] = nil
76
+
77
+ File.exist?(File.join(@test_path, "environment")).must_equal(true)
78
+ File.exist?(File.join(@test_path, "wrappers", "gem")).must_equal(true)
79
+ File.exist?(File.join(@test_path, "wrappers", "rake")).must_equal(true)
80
+ File.exist?(File.join(@test_path, "wrappers", "ruby")).must_equal(true)
81
+ File.exist?(File.join(@test_path, "wrappers", "test")).must_equal(false)
82
+
83
+ $stderr.string.must_equal("")
84
+ $stdout.string.must_equal("")
85
+ end
86
+ end
87
+
88
+ it "finds gem executables" do
89
+ subject.send(:gem_dir_executables).must_include('coveralls')
31
90
  end
32
91
 
33
92
  end
@@ -37,6 +37,7 @@ describe GemWrappers do
37
37
  File.exist?(File.join(@test_path, "wrappers", "rake")).must_equal(true)
38
38
  File.exist?(File.join(@test_path, "wrappers", "ruby")).must_equal(true)
39
39
  File.exist?(File.join(@test_path, "wrappers", "test")).must_equal(true)
40
+ File.exist?(File.join(@test_path, "wrappers", "other")).must_equal(false)
40
41
  end
41
42
 
42
43
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem-wrappers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Papis
@@ -88,6 +88,7 @@ extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
90
  - ".gitignore"
91
+ - ".travis.yml"
91
92
  - Gemfile
92
93
  - LICENSE
93
94
  - README.md
@@ -99,7 +100,6 @@ files:
99
100
  - lib/gem-wrappers/installer.rb
100
101
  - lib/gem-wrappers/specification.rb
101
102
  - lib/gem-wrappers/version.rb
102
- - lib/gem/wrappers/specification.rb
103
103
  - lib/rubygems_plugin.rb
104
104
  - test/gem-wrappers/command_test.rb
105
105
  - test/gem-wrappers/environment_test.rb
@@ -1,19 +0,0 @@
1
- module Gem
2
- module Wrappers
3
- module Specification
4
- def self.find
5
- @executable_hooks_spec ||=
6
- if Gem::Specification.respond_to?(:find_by_name)
7
- Gem::Specification.find_by_name("gem-wrappers")
8
- else
9
- Gem.source_index.find_name("gem-wrappers").last
10
- end
11
- rescue Gem::LoadError
12
- nil
13
- end
14
- def self.version
15
- find ? find.version.to_s : nil
16
- end
17
- end
18
- end
19
- end