lock_jar 0.6.2 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +4 -2
- data/README.md +101 -54
- data/VERSION +1 -1
- data/lib/lock_jar/buildr.rb +8 -8
- data/lib/lock_jar/bundler.rb +155 -0
- data/lib/lock_jar/domain/artifact.rb +117 -0
- data/lib/lock_jar/domain/dsl.rb +177 -0
- data/lib/lock_jar/domain/dsl_helper.rb +66 -0
- data/lib/lock_jar/domain/gem_dsl.rb +45 -0
- data/lib/lock_jar/domain/jarfile_dsl.rb +37 -0
- data/lib/lock_jar/domain/lockfile.rb +114 -0
- data/lib/lock_jar/maven.rb +13 -1
- data/lib/lock_jar/registry.rb +46 -5
- data/lib/lock_jar/resolver.rb +5 -1
- data/lib/lock_jar/runtime.rb +230 -165
- data/lib/lock_jar.rb +22 -19
- data/lock_jar.gemspec +17 -12
- data/spec/Jarfile +3 -3
- data/spec/lock_jar/class_loader_spec.rb +47 -43
- data/spec/lock_jar/domain/dsl_helper_spec.rb +52 -0
- data/spec/lock_jar/domain/dsl_spec.rb +54 -0
- data/spec/lock_jar_spec.rb +155 -81
- metadata +15 -10
- data/lib/lock_jar/dsl.rb +0 -184
- data/lib/lock_jar/rubygems.rb +0 -21
- data/spec/lock_jar/dsl_spec.rb +0 -84
- data/spec/lock_jar/rubygems_spec.rb +0 -43
data/lib/lock_jar/dsl.rb
DELETED
@@ -1,184 +0,0 @@
|
|
1
|
-
# Licensed to the Apache Software Foundation (ASF) under one or more
|
2
|
-
# contributor license agreements. See the NOTICE file distributed with this
|
3
|
-
# work for additional information regarding copyright ownership. The ASF
|
4
|
-
# licenses this file to you under the Apache License, Version 2.0 (the
|
5
|
-
# "License"); you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
#
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
#
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
12
|
-
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
13
|
-
# License for the specific language governing permissions and limitations under
|
14
|
-
# the License.
|
15
|
-
|
16
|
-
require 'lock_jar/maven'
|
17
|
-
|
18
|
-
module LockJar
|
19
|
-
class Dsl
|
20
|
-
|
21
|
-
attr_reader :notations
|
22
|
-
attr_reader :repositories
|
23
|
-
attr_reader :local_repository
|
24
|
-
attr_reader :scopes
|
25
|
-
attr_reader :maps
|
26
|
-
attr_reader :excludes
|
27
|
-
|
28
|
-
class << self
|
29
|
-
|
30
|
-
def evaluate(jarfile = nil, &blk)
|
31
|
-
if jarfile.nil? && blk.nil?
|
32
|
-
raise "jarfile or block must be set"
|
33
|
-
end
|
34
|
-
|
35
|
-
|
36
|
-
builder = new
|
37
|
-
|
38
|
-
if jarfile
|
39
|
-
builder.instance_eval(builder.read_file(jarfile.to_s), jarfile.to_s, 1)
|
40
|
-
end
|
41
|
-
|
42
|
-
if blk
|
43
|
-
builder.instance_eval(&blk)
|
44
|
-
end
|
45
|
-
|
46
|
-
builder
|
47
|
-
end
|
48
|
-
|
49
|
-
def scopes
|
50
|
-
['compile', 'runtime', 'test']
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def initialize
|
55
|
-
|
56
|
-
@repositories = []
|
57
|
-
@notations = {}
|
58
|
-
|
59
|
-
@scope_changed = false
|
60
|
-
|
61
|
-
LockJar::Dsl.scopes.each do |scope|
|
62
|
-
@notations[scope] = []
|
63
|
-
end
|
64
|
-
|
65
|
-
@present_scope = 'compile'
|
66
|
-
|
67
|
-
@local_repository = nil
|
68
|
-
@maps = {}
|
69
|
-
@excludes = []
|
70
|
-
end
|
71
|
-
|
72
|
-
def exclude(*notations)
|
73
|
-
@excludes += notations
|
74
|
-
end
|
75
|
-
|
76
|
-
def jar(notation, *args)
|
77
|
-
opts = {}
|
78
|
-
if args.last.is_a? Hash
|
79
|
-
opts.merge!( args.last )
|
80
|
-
end
|
81
|
-
|
82
|
-
artifact( notation, opts )
|
83
|
-
end
|
84
|
-
|
85
|
-
def local( path )
|
86
|
-
@local_repository = path
|
87
|
-
end
|
88
|
-
|
89
|
-
def merge( dsl )
|
90
|
-
@repositories = (@repositories + dsl.repositories).uniq
|
91
|
-
|
92
|
-
dsl.notations.each do |scope, notations|
|
93
|
-
@notations[scope] = (@notations[scope] + notations).uniq
|
94
|
-
end
|
95
|
-
|
96
|
-
dsl.maps.each do |notation,paths|
|
97
|
-
existing_map = @maps[notation]
|
98
|
-
if existing_map
|
99
|
-
@maps[notation] = (existing_map + paths).uniq
|
100
|
-
else
|
101
|
-
@maps[notation] = paths
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
dsl.excludes.each do |exclude|
|
106
|
-
@excludes << exclude
|
107
|
-
end
|
108
|
-
|
109
|
-
self
|
110
|
-
end
|
111
|
-
|
112
|
-
# Map a dependency to another dependency or local directory.
|
113
|
-
def map( notation, *args )
|
114
|
-
@maps[notation] = args
|
115
|
-
end
|
116
|
-
|
117
|
-
# Pom default to all scopes, unless nested in a scope
|
118
|
-
def pom(path, *args)
|
119
|
-
opts = { }
|
120
|
-
|
121
|
-
if args.last.is_a? Hash
|
122
|
-
opts.merge!( args.last )
|
123
|
-
end
|
124
|
-
|
125
|
-
# if not scope opts and default scope, set to all
|
126
|
-
unless opts[:scope] || opts[:scopes] || @scope_changed
|
127
|
-
opts[:scope] = Dsl.scopes
|
128
|
-
end
|
129
|
-
|
130
|
-
artifact( path, opts )
|
131
|
-
end
|
132
|
-
|
133
|
-
def read_file(file)
|
134
|
-
File.open(file, "rb") { |f| f.read }
|
135
|
-
end
|
136
|
-
|
137
|
-
def repository( url, opts = {} )
|
138
|
-
@repositories << url
|
139
|
-
end
|
140
|
-
|
141
|
-
def scope(*scopes, &blk)
|
142
|
-
@scope_changed = true
|
143
|
-
scopes.each do |scope|
|
144
|
-
@present_scope = scope.to_s
|
145
|
-
yield
|
146
|
-
end
|
147
|
-
@scope_changed = false
|
148
|
-
@present_scope = 'compile'
|
149
|
-
end
|
150
|
-
|
151
|
-
private
|
152
|
-
def artifact(artifact, opts)
|
153
|
-
|
154
|
-
scopes = opts[:scope] || opts[:scopes] || opts[:group]
|
155
|
-
|
156
|
-
if scopes
|
157
|
-
|
158
|
-
unless scopes.is_a? Array
|
159
|
-
scopes = [scopes]
|
160
|
-
end
|
161
|
-
|
162
|
-
# include present scope if within a scope block
|
163
|
-
if @scope_changed
|
164
|
-
scopes << @present_scope
|
165
|
-
end
|
166
|
-
|
167
|
-
else
|
168
|
-
scopes = [@present_scope]
|
169
|
-
end
|
170
|
-
|
171
|
-
if artifact
|
172
|
-
scopes.uniq.each do |scope|
|
173
|
-
scope = 'compile' if scope.to_s == 'development'
|
174
|
-
|
175
|
-
if @notations[scope.to_s]
|
176
|
-
@notations[scope.to_s] << artifact
|
177
|
-
end
|
178
|
-
end
|
179
|
-
end
|
180
|
-
|
181
|
-
end
|
182
|
-
|
183
|
-
end
|
184
|
-
end
|
data/lib/lock_jar/rubygems.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'lock_jar/registry'
|
2
|
-
|
3
|
-
module LockJar::Rubygems
|
4
|
-
module Kernel
|
5
|
-
unless respond_to? :lock_jar_registry
|
6
|
-
def lock_jar_registry
|
7
|
-
LockJar::Registry.instance
|
8
|
-
end
|
9
|
-
|
10
|
-
alias :_pre_lockjar_require :require
|
11
|
-
|
12
|
-
def require( filename )
|
13
|
-
spec = Gem::Specification.find_by_path( filename )
|
14
|
-
if spec
|
15
|
-
lock_jar_registry.load_gem( spec )
|
16
|
-
end
|
17
|
-
_pre_lockjar_require( filename )
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
data/spec/lock_jar/dsl_spec.rb
DELETED
@@ -1,84 +0,0 @@
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__),'../spec_helper'))
|
2
|
-
|
3
|
-
describe LockJar::Dsl do
|
4
|
-
context "Instance" do
|
5
|
-
it "should load a Jarfile" do
|
6
|
-
jarfile = LockJar::Dsl.evaluate( "spec/Jarfile" )
|
7
|
-
|
8
|
-
jarfile.local_repository.should eql '~/.m2/repository'
|
9
|
-
jarfile.notations.should eql( {
|
10
|
-
"compile"=>["org.apache.mina:mina-core:2.0.4", "spec/pom.xml"],
|
11
|
-
"runtime"=>["spec/pom.xml", "com.typesafe:config:jar:0.5.0"],
|
12
|
-
"test"=>["spec/pom.xml", "junit:junit:jar:4.10"]} )
|
13
|
-
jarfile.repositories.should eql( ['http://mirrors.ibiblio.org/pub/mirrors/maven2'] )
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should load a block" do
|
17
|
-
block = LockJar::Dsl.evaluate do
|
18
|
-
local '~/.m2'
|
19
|
-
repository 'http://repository.jboss.org/nexus/content/groups/public-jboss'
|
20
|
-
|
21
|
-
jar "org.apache.mina:mina-core:2.0.4"
|
22
|
-
pom 'spec/pom.xml'
|
23
|
-
|
24
|
-
scope 'runtime' do
|
25
|
-
jar 'org.apache.tomcat:servlet-api:jar:6.0.35'
|
26
|
-
end
|
27
|
-
|
28
|
-
scope 'test' do
|
29
|
-
jar 'junit:junit:jar:4.10'
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
block.local_repository.should eql '~/.m2'
|
34
|
-
block.notations.should eql( {"compile"=>["org.apache.mina:mina-core:2.0.4", "spec/pom.xml"], "runtime"=>["spec/pom.xml", "org.apache.tomcat:servlet-api:jar:6.0.35"], "test"=>["spec/pom.xml", "junit:junit:jar:4.10"]} )
|
35
|
-
block.repositories.should eql( ["http://repository.jboss.org/nexus/content/groups/public-jboss"] )
|
36
|
-
|
37
|
-
end
|
38
|
-
|
39
|
-
it "should raise an error without arguments" do
|
40
|
-
lambda { LockJar::Dsl.evaluate }.should raise_error
|
41
|
-
end
|
42
|
-
|
43
|
-
it "should merge dsl" do
|
44
|
-
block1 = LockJar::Dsl.evaluate do
|
45
|
-
repository 'http://repository.jboss.org/nexus/content/groups/public-jboss'
|
46
|
-
|
47
|
-
jar "org.apache.mina:mina-core:2.0.4"
|
48
|
-
pom 'spec/pom.xml'
|
49
|
-
|
50
|
-
scope 'runtime' do
|
51
|
-
jar 'org.apache.tomcat:servlet-api:jar:6.0.35'
|
52
|
-
end
|
53
|
-
|
54
|
-
scope 'test' do
|
55
|
-
jar 'junit:junit:jar:4.10'
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
block2 = LockJar::Dsl.evaluate do
|
60
|
-
repository 'http://repository.jboss.org/nexus/content/groups/public-jboss'
|
61
|
-
repository 'http://new-repo'
|
62
|
-
|
63
|
-
jar "org.apache.mina:mina-core:2.0.4"
|
64
|
-
jar "compile-jar"
|
65
|
-
|
66
|
-
scope 'runtime' do
|
67
|
-
jar 'runtime-jar'
|
68
|
-
pom 'runtime-pom'
|
69
|
-
end
|
70
|
-
|
71
|
-
scope 'test' do
|
72
|
-
jar 'test-jar'
|
73
|
-
pom 'test-pom'
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
dsl = block1.merge( block2 )
|
78
|
-
|
79
|
-
dsl.notations.should eql( {"compile"=>["org.apache.mina:mina-core:2.0.4", "spec/pom.xml", "compile-jar"], "runtime"=>["spec/pom.xml", "org.apache.tomcat:servlet-api:jar:6.0.35", "runtime-jar", "runtime-pom"], "test"=>["spec/pom.xml", "junit:junit:jar:4.10", "test-jar", "test-pom"]} )
|
80
|
-
dsl.repositories.should eql( ["http://repository.jboss.org/nexus/content/groups/public-jboss", 'http://new-repo'] )
|
81
|
-
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__),'../spec_helper'))
|
2
|
-
require 'lib/lock_jar/rubygems'
|
3
|
-
|
4
|
-
|
5
|
-
describe LockJar::Rubygems do
|
6
|
-
|
7
|
-
include LockJar::Rubygems::Kernel
|
8
|
-
|
9
|
-
|
10
|
-
it "should set Registry" do
|
11
|
-
lock_jar_registry.is_a?( LockJar::Registry ).should be_true
|
12
|
-
end
|
13
|
-
|
14
|
-
context "with require" do
|
15
|
-
before(:all) do
|
16
|
-
require 'solr_sail'
|
17
|
-
end
|
18
|
-
|
19
|
-
it "should have only loaded jars for solr_sail" do
|
20
|
-
lock_jar_registry.loaded_gems.keys.should eql(
|
21
|
-
["solr_sail"] )
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should set classpath" do
|
25
|
-
# XXX: Need a better assertion than this. The count will include previous tests
|
26
|
-
$CLASSPATH.size.should eql( 71 )
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should have correctly loaded SolrSail" do
|
30
|
-
# manually load the jar packaged with the gem
|
31
|
-
$CLASSPATH << SolrSail::DEFAULT_JAR
|
32
|
-
|
33
|
-
# Start and stop solr
|
34
|
-
# XXX: an assertion that the java is properly being called
|
35
|
-
config = com.tobedevoured.solrsail.SolrConfig.new( 'tmp/solr')
|
36
|
-
config.install
|
37
|
-
|
38
|
-
server = com.tobedevoured.solrsail.JettyServer.new( 'tmp/solr' )
|
39
|
-
server.start
|
40
|
-
server.stop
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|