lock_jar 0.15.1 → 0.15.2
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/Gemfile +0 -1
- data/README.md +12 -1
- data/lib/lock_jar.rb +1 -0
- data/lib/lock_jar/config.rb +41 -0
- data/lib/lock_jar/resolver.rb +7 -4
- data/lib/lock_jar/runtime.rb +4 -2
- data/lib/lock_jar/version.rb +1 -1
- data/lock_jar.gemspec +1 -0
- data/spec/fixtures/lock_jar_config.yml +4 -0
- data/spec/lock_jar/config_spec.rb +51 -0
- data/spec/lock_jar/resolver_spec.rb +50 -6
- metadata +20 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b41c3d8273b939aac806212cb513231814b9e8d
|
4
|
+
data.tar.gz: be972001b5e6b24e10e51d2118befbc683fe02ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4c0316ff7f5de2b1be1d3ad31a627d658e511f93092cb2b06cb0b7d9d388a18116417bdba1588d175589b0204ffc1c4d52bbfec6cf35768d3a6f6251885cb780
|
7
|
+
data.tar.gz: d84ba953c5da074528dc2bae16634715db45622a0e98d5f7470beeb4db8fbe3f996c8c7e0ef847b79769e13ce7b3e553ec6dcc426a99e2541d63d3da4cd5a50e
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -7,7 +7,7 @@ LockJar manages Java Jars for Ruby. Powered by [Naether](https://github.com/mguy
|
|
7
7
|
create a frankenstein of Bundler and Maven. A Jarfile ([example](https://github.com/mguymon/lock_jar/blob/master/spec/support/Jarfile)) is used to generate a Jarfile.lock that contains all the resolved jar dependencies. The Jarfile.lock can be used to populate the classpath.
|
8
8
|
|
9
9
|
LockJar can:
|
10
|
-
* Be used directly in MRI
|
10
|
+
* Be used directly in MRI 2.x and JRuby 1.7, 9.0
|
11
11
|
* From the [command line](https://github.com/mguymon/lock_jar/blob/master/README.md#command-line)
|
12
12
|
* [Triggered from a Gem install](https://github.com/mguymon/lock_jar/blob/master/README.md#gem-integration)
|
13
13
|
* [Integrated into Buildr](https://github.com/mguymon/lock_jar/blob/master/README.md#buildr-integration)
|
@@ -271,6 +271,17 @@ As part of the load process for the Gem (an entry file that is required, etc) us
|
|
271
271
|
|
272
272
|
See also [loading Jars into a custom ClassLoader](https://github.com/mguymon/lock_jar/wiki/ClassLoader).
|
273
273
|
|
274
|
+
## Authentication
|
275
|
+
|
276
|
+
LockJar supports authentication to repository by passing in credentials from a `.lockjar` file. The YAML file contains a username and passwords per repository, for example:
|
277
|
+
|
278
|
+
repositories:
|
279
|
+
'https://some.fancy.doman/maven':
|
280
|
+
username: 'user1'
|
281
|
+
password: 'the_pass'
|
282
|
+
|
283
|
+
The order of precedence for locating the `.lockjar` file is the `ENV['LOCKJAR_CONFIG']`, current working directory, and last the user's home directory.
|
284
|
+
|
274
285
|
## Buildr Integration
|
275
286
|
|
276
287
|
LockJar integrates with [Buildr](http://buildr.apache.org/) using an [Addon](https://github.com/mguymon/lock_jar/blob/master/lib/lock_jar/buildr.rb). This allows the Jarfile to be defined directly into a _buildfile_. A global LockJar definition can be set and is inherited to all projects. Each project may have its own LockJar definition. A lock file is generated per project based on the project name.
|
data/lib/lock_jar.rb
CHANGED
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module LockJar
|
4
|
+
# Global configuration for LockJar
|
5
|
+
class Config
|
6
|
+
CONFIG_ENV = 'LOCKJAR_CONFIG'.freeze
|
7
|
+
DEFAULT_FILENAME = '.lockjar'.freeze
|
8
|
+
|
9
|
+
attr_reader :repositories
|
10
|
+
|
11
|
+
class << self
|
12
|
+
# Load .lockjar YAML config file from ENV['LOCKJAR_CONFIG'], current_dir, or
|
13
|
+
# home dir.
|
14
|
+
def load_config_file
|
15
|
+
local_config_paths =
|
16
|
+
[Dir.pwd, Dir.home]
|
17
|
+
.map { |path| File.join(path, DEFAULT_FILENAME) }
|
18
|
+
|
19
|
+
config_path =
|
20
|
+
([ENV[CONFIG_ENV]] + local_config_paths)
|
21
|
+
.compact
|
22
|
+
.find { |path| File.exist? path }
|
23
|
+
|
24
|
+
new(YAML.load_file(config_path)) if config_path
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
#
|
29
|
+
# {
|
30
|
+
# 'repositories' => {
|
31
|
+
# ':url' => {
|
32
|
+
# 'username' => ''
|
33
|
+
# 'password' => ''
|
34
|
+
# }
|
35
|
+
# }
|
36
|
+
# }
|
37
|
+
def initialize(config)
|
38
|
+
@repositories = config['repositories'] || {}
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/lock_jar/resolver.rb
CHANGED
@@ -21,9 +21,10 @@ require 'fileutils'
|
|
21
21
|
module LockJar
|
22
22
|
#
|
23
23
|
class Resolver
|
24
|
-
attr_reader :opts, :naether
|
24
|
+
attr_reader :config, :opts, :naether
|
25
25
|
|
26
|
-
def initialize(opts = {})
|
26
|
+
def initialize(config, opts = {})
|
27
|
+
@config = config || LockJar::Config.new({})
|
27
28
|
@opts = opts
|
28
29
|
local_repo = opts[:local_repo] || Naether::Bootstrap.default_local_repo
|
29
30
|
|
@@ -31,7 +32,6 @@ module LockJar
|
|
31
32
|
Naether::Bootstrap.bootstrap_local_repo(local_repo, opts)
|
32
33
|
|
33
34
|
# Bootstrapping naether will create an instance from downloaded jars.
|
34
|
-
# If jars exist locally already, create manually
|
35
35
|
@naether = Naether.create
|
36
36
|
@naether.local_repo_path = local_repo if local_repo
|
37
37
|
@naether.clear_remote_repositories if opts[:offline]
|
@@ -46,7 +46,10 @@ module LockJar
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def add_remote_repository(repo)
|
49
|
-
|
49
|
+
repo_config = config.repositories[repo] || {}
|
50
|
+
username = repo_config['username']
|
51
|
+
password = repo_config['password']
|
52
|
+
@naether.add_remote_repository(repo, username, password)
|
50
53
|
end
|
51
54
|
|
52
55
|
def resolve(dependencies, download_artifacts = true)
|
data/lib/lock_jar/runtime.rb
CHANGED
@@ -15,6 +15,7 @@
|
|
15
15
|
|
16
16
|
require 'yaml'
|
17
17
|
require 'singleton'
|
18
|
+
require 'lock_jar/config'
|
18
19
|
require 'lock_jar/resolver'
|
19
20
|
require 'lock_jar/registry'
|
20
21
|
require 'lock_jar/domain/dsl'
|
@@ -33,9 +34,10 @@ module LockJar
|
|
33
34
|
include List
|
34
35
|
include Install
|
35
36
|
|
36
|
-
attr_reader :current_resolver
|
37
|
+
attr_reader :current_resolver, :config
|
37
38
|
|
38
39
|
def initialize
|
40
|
+
@config = Config.load_config_file
|
39
41
|
@current_resolver = nil
|
40
42
|
end
|
41
43
|
|
@@ -59,7 +61,7 @@ module LockJar
|
|
59
61
|
end
|
60
62
|
|
61
63
|
if @current_resolver.nil? || opts != @current_resolver.opts
|
62
|
-
@current_resolver = LockJar::Resolver.new(opts)
|
64
|
+
@current_resolver = LockJar::Resolver.new(config, opts)
|
63
65
|
end
|
64
66
|
|
65
67
|
@current_resolver
|
data/lib/lock_jar/version.rb
CHANGED
data/lock_jar.gemspec
CHANGED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe LockJar::Config do
|
4
|
+
describe '.load_config_file' do
|
5
|
+
let(:test_config_file) { File.join('spec', 'fixtures', 'lock_jar_config.yml') }
|
6
|
+
let(:temp_config_file) { File.join(TEMP_DIR, described_class::DEFAULT_FILENAME) }
|
7
|
+
let(:config) { described_class.load_config_file }
|
8
|
+
let(:expected_repo_config) do
|
9
|
+
{
|
10
|
+
'https://some.fancy.doman/maven' => {
|
11
|
+
'username' => 'user1',
|
12
|
+
'password' => 'the_pass'
|
13
|
+
}
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
before do
|
18
|
+
FileUtils.cp(test_config_file, temp_config_file)
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'using current dir config' do
|
22
|
+
before do
|
23
|
+
allow(Dir).to receive(:pwd).and_return(TEMP_DIR)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should have a repository config' do
|
27
|
+
expect(config.repositories).to eq(expected_repo_config)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'using home dir config' do
|
32
|
+
before do
|
33
|
+
allow(Dir).to receive(:home).and_return(TEMP_DIR)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should have a repository config' do
|
37
|
+
expect(config.repositories).to eq(expected_repo_config)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'using ENV path to config' do
|
42
|
+
before do
|
43
|
+
ENV[described_class::CONFIG_ENV] = temp_config_file
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'should have a repository config' do
|
47
|
+
expect(config.repositories).to eq(expected_repo_config)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -4,12 +4,26 @@ require 'fileutils'
|
|
4
4
|
require 'naether'
|
5
5
|
|
6
6
|
describe LockJar::Resolver do
|
7
|
-
|
7
|
+
subject { described_class.new(config, local_repo: "#{TEMP_DIR}/test-repo") }
|
8
|
+
|
9
|
+
before do
|
8
10
|
FileUtils.mkdir_p("#{TEMP_DIR}/test-repo")
|
9
|
-
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:config) do
|
14
|
+
LockJar::Config.new(
|
15
|
+
'repositories' => {
|
16
|
+
'https://test/repo' => {
|
17
|
+
'username' => 'user1',
|
18
|
+
'password' => 'pass1'
|
19
|
+
}
|
20
|
+
}
|
21
|
+
)
|
10
22
|
end
|
11
23
|
|
12
24
|
it 'should bootstrap naether' do
|
25
|
+
subject
|
26
|
+
|
13
27
|
deps = Naether::Bootstrap.check_local_repo_for_deps("#{TEMP_DIR}/test-repo")
|
14
28
|
deps[:missing].should eql([])
|
15
29
|
deps[:exists].each do |dep|
|
@@ -17,9 +31,39 @@ describe LockJar::Resolver do
|
|
17
31
|
end
|
18
32
|
end
|
19
33
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
34
|
+
describe '#to_local_paths' do
|
35
|
+
it 'should return local paths for notations' do
|
36
|
+
expect(subject.to_local_paths(['org.testng:testng:jar:6.9.10'])).to(
|
37
|
+
eql([File.expand_path("#{TEMP_DIR}/test-repo/org/testng/testng/6.9.10/testng-6.9.10.jar")])
|
38
|
+
)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe '#add_remote_repository' do
|
43
|
+
let(:remote_repos) do
|
44
|
+
subject.naether.remote_repositories.map do |repo|
|
45
|
+
{
|
46
|
+
url: repo.url
|
47
|
+
}.tap do |hash|
|
48
|
+
if repo.authentication
|
49
|
+
hash[:username] = repo.authentication.username
|
50
|
+
hash[:password] = repo.authentication.password
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
let(:expected_remote_repos) do
|
57
|
+
[
|
58
|
+
{ url: 'http://repo1.maven.org/maven2/' },
|
59
|
+
{ url: 'https://test/repo', username: 'user1', password: 'pass1' }
|
60
|
+
]
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'should use repo config for auth' do
|
64
|
+
subject.add_remote_repository('https://test/repo')
|
65
|
+
|
66
|
+
expect(remote_repos).to eq(expected_remote_repos)
|
67
|
+
end
|
24
68
|
end
|
25
69
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lock_jar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.15.
|
4
|
+
version: 0.15.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Guymon
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 2.14.1
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rubocop
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.35.0
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.35.0
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rake
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,6 +109,7 @@ files:
|
|
95
109
|
- lib/lock_jar/bundler.rb
|
96
110
|
- lib/lock_jar/class_loader.rb
|
97
111
|
- lib/lock_jar/cli.rb
|
112
|
+
- lib/lock_jar/config.rb
|
98
113
|
- lib/lock_jar/domain/artifact.rb
|
99
114
|
- lib/lock_jar/domain/dsl.rb
|
100
115
|
- lib/lock_jar/domain/dsl_merger.rb
|
@@ -119,10 +134,12 @@ files:
|
|
119
134
|
- spec/fixtures/jarfile_gem/jarfile_gem.gemspec
|
120
135
|
- spec/fixtures/jarfile_gem/lib/jarfile_gem.rb
|
121
136
|
- spec/fixtures/jarfile_gem/lib/jarfile_gem/version.rb
|
137
|
+
- spec/fixtures/lock_jar_config.yml
|
122
138
|
- spec/fixtures/naether-0.13.0.jar
|
123
139
|
- spec/lock_jar/bundler_spec.rb
|
124
140
|
- spec/lock_jar/class_loader_spec.rb
|
125
141
|
- spec/lock_jar/cli_spec.rb
|
142
|
+
- spec/lock_jar/config_spec.rb
|
126
143
|
- spec/lock_jar/domain/dsl_merger_spec.rb
|
127
144
|
- spec/lock_jar/domain/dsl_spec.rb
|
128
145
|
- spec/lock_jar/domain/gem_dsl_spec.rb
|
@@ -167,10 +184,12 @@ test_files:
|
|
167
184
|
- spec/fixtures/jarfile_gem/jarfile_gem.gemspec
|
168
185
|
- spec/fixtures/jarfile_gem/lib/jarfile_gem.rb
|
169
186
|
- spec/fixtures/jarfile_gem/lib/jarfile_gem/version.rb
|
187
|
+
- spec/fixtures/lock_jar_config.yml
|
170
188
|
- spec/fixtures/naether-0.13.0.jar
|
171
189
|
- spec/lock_jar/bundler_spec.rb
|
172
190
|
- spec/lock_jar/class_loader_spec.rb
|
173
191
|
- spec/lock_jar/cli_spec.rb
|
192
|
+
- spec/lock_jar/config_spec.rb
|
174
193
|
- spec/lock_jar/domain/dsl_merger_spec.rb
|
175
194
|
- spec/lock_jar/domain/dsl_spec.rb
|
176
195
|
- spec/lock_jar/domain/gem_dsl_spec.rb
|