bundler-pgs 0.7.4 → 0.8.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 +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
|