bundler-pgs 0.7.4 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +14 -13
- data/bin/bundle-pgs +1 -2
- data/lib/bundler-pgs.rb +0 -9
- data/lib/bundler-pgs/bundler_patch.rb +24 -5
- data/lib/bundler-pgs/version.rb +1 -1
- metadata +3 -5
- data/lib/bundler-pgs/bundler_dsl_extension.rb +0 -22
- data/lib/bundler-pgs/credential_file.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 05f09a50f4d2b609c647a2812a56da73408c6e3f
|
4
|
+
data.tar.gz: c3c4c0c739164bd69365b080d814cd3662727c8a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35740fcab017a8ca3a287f0b4566c5869fe6715168d9e11f95b02bb1e7ce0442535702c866ca689ff200a229e7525a9e890a748c21c43beed2067d243837a4e4
|
7
|
+
data.tar.gz: cd074bbce0092e19a24f6a86c1d6a663976b0d6f1aa2d29982eb0483dae294509f74a5c74111d3fcd8b3c70640d397f7fd78c946a1a544c0a9dbb576e5cf9b10
|
data/README.md
CHANGED
@@ -1,31 +1,30 @@
|
|
1
1
|
# Bundler Private Gem Server
|
2
2
|
|
3
|
-
Patch for bundler to support credentials for sources that are not stored in Gemfile.lock
|
4
|
-
Useful when running an additional private gem server besides rubygems.org
|
3
|
+
Patch for bundler to support credentials for sources that are not stored in `Gemfile.lock`.
|
4
|
+
Useful when running an additional private gem server besides `rubygems.org`.
|
5
5
|
|
6
6
|
Example:
|
7
7
|
|
8
8
|
# Gemfile
|
9
9
|
source "https://rubygems.org/"
|
10
|
-
source "http://_:_@gems.mycompany.com"
|
10
|
+
source "http://_:_@gems.mycompany.com" do
|
11
|
+
...
|
12
|
+
end
|
11
13
|
|
12
14
|
# Gemfile.lock
|
13
15
|
GEM
|
14
16
|
remote: https://rubygems.org/
|
15
|
-
remote: http://_:_@gems.mycompany.com/
|
17
|
+
remote: http://_:_@gems.mycompany.com/ (not http://user:password@gems.mycompany.com)
|
16
18
|
|
17
19
|
## Warning
|
18
20
|
|
19
21
|
This comes with no warranty!
|
20
22
|
|
21
|
-
To prevent bundler from storing a source url to your private gem server with credentials
|
22
|
-
See `lib/bundler-pgs/bundler_patch.rb` for details.
|
23
|
+
To prevent bundler from storing a source url to your private gem server with credentials
|
24
|
+
I **patched** bundler. See `lib/bundler-pgs/bundler_patch.rb` for details.
|
23
25
|
|
24
|
-
|
25
|
-
|
26
|
-
with the credentials again.
|
27
|
-
|
28
|
-
bundler-pgs supports bundler 1.7.4 and older.
|
26
|
+
`bundle-pgs` will raise an exception in case the patched class and method does not exist
|
27
|
+
in `bundler`anymore.
|
29
28
|
|
30
29
|
## Usage
|
31
30
|
|
@@ -54,7 +53,9 @@ Add your private gem server url with `_` (underscore) as placeholder for the cre
|
|
54
53
|
|
55
54
|
# Gemfile
|
56
55
|
source "https://rubygems.org"
|
57
|
-
source "http://_:_@gems.mycompany.com"
|
56
|
+
source "http://_:_@gems.mycompany.com" do
|
57
|
+
gem 'my_private_gem'
|
58
|
+
end
|
58
59
|
|
59
60
|
Add your credentials to `~/.gem/gemserver_credential` on **every** server using bundler,
|
60
61
|
e.g. ci, staging and production:
|
@@ -87,5 +88,5 @@ You will also need to change the bundle command for Capistrano:
|
|
87
88
|
|
88
89
|
For comments and question feel free to contact me: business@thomasbaustert.de
|
89
90
|
|
90
|
-
Copyright
|
91
|
+
Copyright by [Thomas Baustert](http://thomasbaustert.de), released under the MIT license
|
91
92
|
|
data/bin/bundle-pgs
CHANGED
@@ -19,7 +19,6 @@ require 'bundler/cli'
|
|
19
19
|
require 'bundler/friendly_errors'
|
20
20
|
|
21
21
|
require 'bundler-pgs'
|
22
|
-
puts "[bundler-pgs] v#{Bundler::Pgs::VERSION} is
|
23
|
-
puts "[bundler-pgs] patching bundler"
|
22
|
+
puts "[bundler-pgs] v#{Bundler::Pgs::VERSION} is used and patches bundler."
|
24
23
|
|
25
24
|
Bundler.with_friendly_errors { Bundler::CLI.start }
|
data/lib/bundler-pgs.rb
CHANGED
@@ -1,13 +1,4 @@
|
|
1
1
|
require 'bundler/version'
|
2
|
-
|
3
|
-
if Bundler::VERSION > "1.7.4"
|
4
|
-
puts "\nWarning: You are using bundler #{Bundler::VERSION} and bundler-pgs patch might not work for this version."
|
5
|
-
puts "Make sure your Gemfile.lock does not contain your credentials after running bundle-pgs!"
|
6
|
-
puts ""
|
7
|
-
end
|
8
|
-
|
9
2
|
require "bundler-pgs/version"
|
10
|
-
require "bundler-pgs/credential_file"
|
11
3
|
require "bundler-pgs/bundler_patch"
|
12
|
-
require "bundler-pgs/bundler_dsl_extension"
|
13
4
|
|
@@ -1,13 +1,24 @@
|
|
1
|
-
require
|
1
|
+
require 'yaml'
|
2
2
|
require 'bundler'
|
3
3
|
|
4
|
+
module Bundler::Pgs
|
5
|
+
class MonkeyPatchFailed < RuntimeError
|
6
|
+
def message
|
7
|
+
"bundler-pgs #{Bundler::Pgs::VERSION} failed to patch bundler #{Bundler::VERSION}. Cause: #{message}"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
4
12
|
##
|
5
13
|
# Patches Bundler::RubygemsIntegration bundler to use url with the credentials.
|
6
14
|
#
|
15
|
+
raise Bundler::Pgs::MonkeyPatchFailed, "Bundler::RubygemsIntegration not defined anymore" unless defined?(Bundler::RubygemsIntegration)
|
16
|
+
raise Bundler::Pgs::MonkeyPatchFailed, "Bundler::RubygemsIntegration.download_gem not defined anymore" unless Bundler::RubygemsIntegration.new.respond_to?(:download_gem)
|
17
|
+
|
7
18
|
module Bundler
|
8
19
|
class RubygemsIntegration
|
9
20
|
def download_gem(spec, uri, path)
|
10
|
-
new_uri = ::
|
21
|
+
new_uri = ::Bundler::Pgs::UriResolver.resolve(uri)
|
11
22
|
Gem::RemoteFetcher.fetcher.download(spec, new_uri, path)
|
12
23
|
end
|
13
24
|
end
|
@@ -16,12 +27,14 @@ end
|
|
16
27
|
##
|
17
28
|
# Patches Bundler::Fetcher bundler to use url with the credentials.
|
18
29
|
#
|
30
|
+
raise Bundler::Pgs::MonkeyPatchFailed, "Bundler::Fetcher not defined anymore" unless defined?(Bundler::Fetcher)
|
31
|
+
|
19
32
|
module Bundler
|
20
33
|
class Fetcher
|
21
34
|
alias_method :orig_initialize, :initialize
|
22
35
|
|
23
36
|
def initialize(remote_uri)
|
24
|
-
new_uri = ::
|
37
|
+
new_uri = ::Bundler::Pgs::UriResolver.resolve(remote_uri)
|
25
38
|
orig_initialize(new_uri)
|
26
39
|
end
|
27
40
|
end
|
@@ -30,9 +43,8 @@ end
|
|
30
43
|
##
|
31
44
|
# Replaces credential placeholder (e.g. http://_:_@....) with the credentials from the credentials file.
|
32
45
|
#
|
33
|
-
module
|
46
|
+
module Bundler::Pgs
|
34
47
|
class UriResolver
|
35
|
-
extend BundlerPatch::CredentialFile
|
36
48
|
|
37
49
|
def self.resolve(uri)
|
38
50
|
if uri_with_hidden_credentials?(uri)
|
@@ -75,6 +87,13 @@ module BundlerPatch
|
|
75
87
|
new_uri || orig_uri
|
76
88
|
end
|
77
89
|
|
90
|
+
def self.with_credential_file(&block)
|
91
|
+
credential_filename = File.join(ENV["HOME"], ".gem", "gemserver_credentials")
|
92
|
+
if File.exists?(credential_filename)
|
93
|
+
yield(credential_filename) if block_given?
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
78
97
|
def self.uri_with_hidden_credentials?(uri)
|
79
98
|
user_exists?(uri) && password_exists?(uri)
|
80
99
|
end
|
data/lib/bundler-pgs/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bundler-pgs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Baustert
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-05-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -54,9 +54,7 @@ files:
|
|
54
54
|
- bin/bundle-pgs
|
55
55
|
- bundler-pgs.gemspec
|
56
56
|
- lib/bundler-pgs.rb
|
57
|
-
- lib/bundler-pgs/bundler_dsl_extension.rb
|
58
57
|
- lib/bundler-pgs/bundler_patch.rb
|
59
|
-
- lib/bundler-pgs/credential_file.rb
|
60
58
|
- lib/bundler-pgs/version.rb
|
61
59
|
homepage: https://github.com/thomasbaustert/bundler-pgs
|
62
60
|
licenses: []
|
@@ -77,7 +75,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
77
75
|
version: '0'
|
78
76
|
requirements: []
|
79
77
|
rubyforge_project:
|
80
|
-
rubygems_version: 2.
|
78
|
+
rubygems_version: 2.4.6
|
81
79
|
signing_key:
|
82
80
|
specification_version: 4
|
83
81
|
summary: bundler patch to support private gem server (pgs)
|
@@ -1,22 +0,0 @@
|
|
1
|
-
##
|
2
|
-
# Extend bundler DSL to allow using convenient method in Gemfile.
|
3
|
-
# This is optional and not really necessary.
|
4
|
-
#
|
5
|
-
# Examples:
|
6
|
-
# source "https://rubygems.org"
|
7
|
-
# private_gem_server
|
8
|
-
# private_gem_server("fooserver")
|
9
|
-
#
|
10
|
-
module Bundler
|
11
|
-
class Dsl
|
12
|
-
include BundlerPatch::CredentialFile
|
13
|
-
|
14
|
-
def private_gem_server(name = "default")
|
15
|
-
with_credential_file do |credential_filename|
|
16
|
-
yaml = YAML.load_file(credential_filename)
|
17
|
-
yaml[name]["source"].to_s.strip
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
@@ -1,12 +0,0 @@
|
|
1
|
-
module BundlerPatch
|
2
|
-
module CredentialFile
|
3
|
-
|
4
|
-
def with_credential_file(&block)
|
5
|
-
credential_filename = File.join(ENV["HOME"], ".gem", "gemserver_credentials")
|
6
|
-
if File.exists?(credential_filename)
|
7
|
-
yield(credential_filename) if block_given?
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
end
|