kpm 0.1.3 → 0.1.4

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: 843f4ad85941d5bdf68f95a2b70eb60c657a3863
4
- data.tar.gz: 443167bd27e004d5658f5acd862dd83778c11fd8
3
+ metadata.gz: bf947b3325fa9702980797739a85241543a1084d
4
+ data.tar.gz: 79241998d05b9583a74b74c6b79a854d283b46c0
5
5
  SHA512:
6
- metadata.gz: 1075cdab8831e95e8d58f99cb9754868cab56fb8276a0f515e0d3eb3bde00c547505905cdae4fbf29288f63cafe01584fcfe03086b41a3b71de72a16b30d7ad6
7
- data.tar.gz: 5d2f1873ebd4e08852d14deb608a53e4758d005c8a00ca5c5009b3dbc145fc9f67e24725f969f51290cc46195d70920115fc6cebb6baca536ff976dc854cf09a
6
+ metadata.gz: 0a84a0a01fc7aa88bce35da72f38b771c0ddd8a7b9d899ee32eda996413be22de161a7152d67476011e770ea6ff5a0f8fbc8d69b9123d6418d59759a01dc790f
7
+ data.tar.gz: 4e44086024f1509f77ae7adfc9872b99ca6f09c3822d7601858ae92b47d361447891e48e2f651b4566b7994ad605496e3faea527a968a5e95ac60ac76dbba54c
@@ -36,8 +36,8 @@ module KPM
36
36
 
37
37
  class << self
38
38
  def pull(logger, group_id, artifact_id, packaging='jar', classifier=nil, version='LATEST', destination_path=nil, sha1_file=nil, force_download=false, verify_sha1=true, overrides={}, ssl_verify=true)
39
- coordinates = build_coordinates(group_id, artifact_id, packaging, classifier, version)
40
- pull_and_put_in_place(logger, coordinates, destination_path, is_ruby_plugin_and_should_skip_top_dir(group_id, artifact_id), sha1_file, force_download, verify_sha1, overrides, ssl_verify)
39
+ coordinate_map = {:group_id => group_id, :artifact_id => artifact_id, :packaging => packaging, :classifier => classifier, :version => version}
40
+ pull_and_put_in_place(logger, coordinate_map, destination_path, is_ruby_plugin_and_should_skip_top_dir(group_id, artifact_id), sha1_file, force_download, verify_sha1, overrides, ssl_verify)
41
41
  end
42
42
 
43
43
  def pull_from_fs(logger, file_path, destination_path=nil)
@@ -57,19 +57,41 @@ module KPM
57
57
 
58
58
  protected
59
59
 
60
- def pull_and_put_in_place(logger, coordinates, destination_path=nil, skip_top_dir=true, sha1_file=nil, force_download=false, verify_sha1=true, overrides={}, ssl_verify=true)
60
+ def pull_and_put_in_place(logger, coordinate_map, destination_path=nil, skip_top_dir=true, sha1_file=nil, force_download=false, verify_sha1=true, overrides={}, ssl_verify=true)
61
61
  # Build artifact info
62
- artifact_info = artifact_info(coordinates, overrides, ssl_verify)
63
-
62
+ artifact_info = artifact_info(coordinate_map, overrides, ssl_verify)
64
63
  populate_fs_info(artifact_info, destination_path)
65
64
 
65
+ # Update with resolved version in case 'LATEST' was passed
66
+ coordinate_map[:version] = artifact_info[:version]
67
+ coordinates = build_coordinates(coordinate_map)
68
+
66
69
  # Return early if there's nothing to do
67
70
  if !force_download && skip_if_exists(artifact_info, coordinates, sha1_file)
68
71
  logger.info " Skipping installation of #{coordinates} to #{artifact_info[:file_path]}, file already exists"
72
+
73
+ # We need to do a bit of magic to make sure that artifact_info[:bundle_dir] is correctly populated when we bail early
74
+ if artifact_info[:is_tgz]
75
+ plugin_dir = File.split(artifact_info[:dir_name])[0]
76
+ plugins_manager = PluginsManager.new(plugin_dir, logger)
77
+ artifact_id = coordinates.split(':')[1]
78
+ plugin_name = plugins_manager.guess_plugin_name(artifact_id)
79
+ if plugin_name.nil?
80
+ logger.warn("Failed to guess plugin_name for #{coordinates}: artifact_info[:bundle_dir] will not be populated correctly")
81
+ else
82
+ version = artifact_info[:version]
83
+ artifact_info[:bundle_dir] = Pathname.new(artifact_info[:dir_name]).join(plugin_name).join(version).to_s
84
+ end
85
+ else
86
+ artifact_info[:bundle_dir] = artifact_info[:dir_name]
87
+ end
88
+
69
89
  artifact_info[:skipped] = true
70
90
  return artifact_info
71
91
  end
72
92
 
93
+
94
+
73
95
  # Create the destination directory
74
96
  FileUtils.mkdir_p(artifact_info[:dir_name])
75
97
 
@@ -138,11 +160,12 @@ module KPM
138
160
  local_sha1 == artifact_info[:sha1]
139
161
  end
140
162
 
141
- def artifact_info(coordinates, overrides={}, ssl_verify=true)
163
+ def artifact_info(coordinate_map, overrides={}, ssl_verify=true)
142
164
  info = {
143
165
  :skipped => false
144
166
  }
145
167
 
168
+ coordinates = build_coordinates(coordinate_map)
146
169
  nexus_info = nexus_remote(overrides, ssl_verify).get_artifact_info(coordinates)
147
170
 
148
171
  xml = REXML::Document.new(nexus_info)
@@ -216,7 +239,14 @@ module KPM
216
239
  res
217
240
  end
218
241
 
219
- def build_coordinates(group_id, artifact_id, packaging, classifier, version=nil)
242
+ def build_coordinates(coordinate_map)
243
+
244
+ group_id = coordinate_map[:group_id]
245
+ artifact_id = coordinate_map[:artifact_id]
246
+ packaging = coordinate_map[:packaging]
247
+ classifier = coordinate_map[:classifier]
248
+ version = coordinate_map[:version]
249
+
220
250
  if classifier.nil?
221
251
  if version.nil?
222
252
  "#{group_id}:#{artifact_id}:#{packaging}"
@@ -63,7 +63,7 @@ module KPM
63
63
 
64
64
 
65
65
 
66
- def install_plugin(plugin_key, specified_group_id=nil, specified_artifact_id=nil, specified_packaging=nil, specified_classifier=nil, specified_version=nil, bundles_dir=nil, specified_type=nil, force_download=false, verify_sha1=true)
66
+ def install_plugin(plugin_key, raw_kb_version=nil, specified_group_id=nil, specified_artifact_id=nil, specified_packaging=nil, specified_classifier=nil, specified_version=nil, bundles_dir=nil, specified_type=nil, force_download=false, verify_sha1=true)
67
67
 
68
68
  # plugin_key needs to exist
69
69
  if plugin_key.nil?
@@ -73,7 +73,7 @@ module KPM
73
73
 
74
74
 
75
75
  # Lookup artifact and perform validation against input
76
- looked_up_group_id, looked_up_artifact_id, looked_up_packaging, looked_up_classifier, looked_up_version, looked_up_type = KPM::PluginsDirectory.lookup(plugin_key, true)
76
+ looked_up_group_id, looked_up_artifact_id, looked_up_packaging, looked_up_classifier, looked_up_version, looked_up_type = KPM::PluginsDirectory.lookup(plugin_key, true, raw_kb_version)
77
77
  return if !validate_installation_arg(plugin_key, 'group_id', specified_group_id, looked_up_group_id)
78
78
  return if !validate_installation_arg(plugin_key, 'artifact_id', specified_artifact_id, looked_up_artifact_id)
79
79
  return if !validate_installation_arg(plugin_key, 'packaging', specified_packaging, looked_up_packaging)
@@ -119,8 +119,8 @@ module KPM
119
119
 
120
120
 
121
121
  # Before we do the install we verify that the entry we have in the plugin_identifiers.json matches our current request
122
- coordinates = [group_id, artifact_id, packaging, classifier, version]
123
- return if !validate_plugin_key(plugins_dir, plugin_key, coordinates)
122
+ coordinate_map = {:group_id => group_id, :artifact_id => artifact_id, :packaging => packaging, :classifier => classifier}
123
+ return if !validate_plugin_key(plugins_dir, plugin_key, coordinate_map)
124
124
 
125
125
 
126
126
  @logger.debug("Installing plugin: group_id=#{group_id} artifact_id=#{artifact_id} packaging=#{packaging} classifier=#{classifier} version=#{version} destination=#{destination}")
@@ -137,9 +137,12 @@ module KPM
137
137
  @nexus_config,
138
138
  @nexus_ssl_verify)
139
139
 
140
+ # Update with resolved version
141
+ coordinate_map[:version] = artifact_info[:version]
142
+
140
143
  mark_as_active(plugins_dir, artifact_info, artifact_id)
141
144
 
142
- update_plugin_identifier(plugins_dir, plugin_key, type.to_s, coordinates, artifact_info)
145
+ update_plugin_identifier(plugins_dir, plugin_key, type.to_s, coordinate_map, artifact_info)
143
146
 
144
147
  artifact_info
145
148
  end
@@ -240,32 +243,24 @@ module KPM
240
243
  true
241
244
  end
242
245
 
243
- def validate_plugin_key(plugins_dir, plugin_key, coordinates)
246
+ def validate_plugin_key(plugins_dir, plugin_key, coordinate_map)
244
247
  plugins_manager = PluginsManager.new(plugins_dir, @logger)
245
- return plugins_manager.validate_plugin_identifier_key(plugin_key, coordinates)
248
+ return plugins_manager.validate_plugin_identifier_key(plugin_key, coordinate_map)
246
249
  end
247
250
 
248
- def update_plugin_identifier(plugins_dir, plugin_key, type, coordinates, artifact_info)
249
- # In case the artifact on disk already existed and the installation is skipped, info[:bundle_dir] is null but the path exists in info[:dir_name]
250
- path = artifact_info[:bundle_dir] || artifact_info[:dir_name]
251
+ def update_plugin_identifier(plugins_dir, plugin_key, type, coordinate_map, artifact_info)
252
+ path = artifact_info[:bundle_dir]
251
253
 
252
254
  # The plugin_name needs to be computed after the fact (after the installation) because some plugin archive embed their directory structure
253
255
  plugin_name = Pathname.new(path).parent.split[1].to_s
254
256
  plugins_manager = PluginsManager.new(plugins_dir, @logger)
255
- plugins_manager.add_plugin_identifier_key(plugin_key, plugin_name, type, coordinates)
257
+ plugins_manager.add_plugin_identifier_key(plugin_key, plugin_name, type, coordinate_map)
256
258
  end
257
259
 
258
260
  def mark_as_active(plugins_dir, artifact_info, artifact_id=nil)
259
261
  # Mark this bundle as active
260
262
  plugins_manager = PluginsManager.new(plugins_dir, @logger)
261
- if artifact_info[:bundle_dir].nil?
262
- # In case the artifact on disk already existed and the installation is skipped,
263
- # we don't know the plugin name on disk (arbitrary if it's a .tar.gz). That being said,
264
- # we can guess it for Kill Bill plugins (using our naming conventions)
265
- plugins_manager.set_active(plugins_manager.guess_plugin_name(artifact_id), artifact_info[:version])
266
- else
267
- plugins_manager.set_active(artifact_info[:bundle_dir])
268
- end
263
+ plugins_manager.set_active(artifact_info[:bundle_dir])
269
264
  end
270
265
  end
271
266
  end
data/lib/kpm/installer.rb CHANGED
@@ -79,7 +79,7 @@ module KPM
79
79
 
80
80
  infos = []
81
81
  @config['plugins']['java'].each do |plugin|
82
- infos << install_plugin(plugin['name'], plugin['group_id'], plugin['artifact_id'], plugin['packaging'], plugin['classifier'], plugin['version'], @config['plugins_dir'], 'java', force_download, verify_sha1)
82
+ infos << install_plugin(plugin['name'], nil, plugin['group_id'], plugin['artifact_id'], plugin['packaging'], plugin['classifier'], plugin['version'], @config['plugins_dir'], 'java', force_download, verify_sha1)
83
83
  end
84
84
 
85
85
  infos
@@ -90,7 +90,7 @@ module KPM
90
90
 
91
91
  infos = []
92
92
  @config['plugins']['ruby'].each do |plugin|
93
- infos << install_plugin(plugin['name'], plugin['group_id'], plugin['artifact_id'], plugin['packaging'], plugin['classifier'], plugin['version'], @config['plugins_dir'], 'ruby', force_download, verify_sha1)
93
+ infos << install_plugin(plugin['name'], nil, plugin['group_id'], plugin['artifact_id'], plugin['packaging'], plugin['classifier'], plugin['version'], @config['plugins_dir'], 'ruby', force_download, verify_sha1)
94
94
  end
95
95
 
96
96
  infos
@@ -5,10 +5,10 @@ module KPM
5
5
  class KauiArtifact < BaseArtifact
6
6
  class << self
7
7
  def versions(overrides={}, ssl_verify=true)
8
- coordinates = build_coordinates(KPM::BaseArtifact::KAUI_GROUP_ID,
9
- KPM::BaseArtifact::KAUI_ARTIFACT_ID,
10
- KPM::BaseArtifact::KAUI_PACKAGING,
11
- KPM::BaseArtifact::KAUI_CLASSIFIER)
8
+
9
+ coordinate_map = {:group_id => KPM::BaseArtifact::KAUI_GROUP_ID, :artifact_id => KPM::BaseArtifact::KAUI_ARTIFACT_ID, :packaging => KPM::BaseArtifact::KAUI_PACKAGING, :classifier => KPM::BaseArtifact::KAUI_CLASSIFIER}
10
+
11
+ coordinates = build_coordinates(coordinate_map)
12
12
  response = REXML::Document.new nexus_remote(overrides, ssl_verify).search_for_artifacts(coordinates)
13
13
  versions = SortedSet.new
14
14
  response.elements.each('search-results/data/artifact/version') { |element| versions << element.text }
@@ -5,7 +5,8 @@ module KPM
5
5
  class KillbillServerArtifact < BaseArtifact
6
6
  class << self
7
7
  def versions(artifact_id, packaging=KPM::BaseArtifact::KILLBILL_PACKAGING, classifier=KPM::BaseArtifact::KILLBILL_CLASSIFIER, overrides={}, ssl_verify=true)
8
- coordinates = build_coordinates(KPM::BaseArtifact::KILLBILL_GROUP_ID, artifact_id, packaging, classifier)
8
+ coordinate_map = {:group_id => KPM::BaseArtifact::KILLBILL_GROUP_ID, :artifact_id => artifact_id, :packaging => packaging, :classifier => classifier}
9
+ coordinates = build_coordinates(coordinate_map)
9
10
  response = REXML::Document.new nexus_remote(overrides, ssl_verify).search_for_artifacts(coordinates)
10
11
  versions = SortedSet.new
11
12
  response.elements.each('search-results/data/artifact/version') { |element| versions << element.text }
@@ -54,32 +54,32 @@ module KPM
54
54
  end
55
55
  end
56
56
 
57
- def validate_plugin_identifier_key(plugin_key, coordinates)
58
-
57
+ def validate_plugin_identifier_key(plugin_key, coordinate_map)
59
58
  identifiers = read_plugin_identifiers
60
59
  entry = identifiers[plugin_key]
61
60
  if entry
62
- [:group_id, :artifact_id, :packaging, :classifier, :version].each_with_index do |value_type, idx|
63
- return false if !validate_plugin_identifier_key_value(plugin_key, value_type, entry[value_type.to_s], coordinates[idx])
61
+ coordinate_map.each_pair do |key, value|
62
+ return false if !validate_plugin_identifier_key_value(plugin_key, key, entry[key.to_s], value)
64
63
  end
65
64
  end
66
65
  true
67
66
  end
68
67
 
69
- def add_plugin_identifier_key(plugin_key, plugin_name, language, coordinates)
68
+ def add_plugin_identifier_key(plugin_key, plugin_name, language, coordinate_map)
70
69
 
71
70
  identifiers = read_plugin_identifiers
72
- # If key does not already exists we update it, if not nothing to do
73
- if !identifiers.has_key?(plugin_key)
71
+ # If key does not already exists or if the version in the json is not the one we are currently installing we update the entry, if not nothing to do
72
+ if !identifiers.has_key?(plugin_key) ||
73
+ (coordinate_map && identifiers[plugin_key]['version'] != coordinate_map[:version])
74
74
 
75
75
  entry = {'plugin_name' => plugin_name}
76
76
  entry['language'] = language
77
- if coordinates
78
- entry['group_id'] = coordinates[0]
79
- entry['artifact_id'] = coordinates[1]
80
- entry['packaging'] = coordinates[2]
81
- entry['classifier'] = coordinates[3]
82
- entry['version'] = coordinates[4]
77
+ if coordinate_map
78
+ entry['group_id'] = coordinate_map[:group_id]
79
+ entry['artifact_id'] = coordinate_map[:artifact_id]
80
+ entry['packaging'] = coordinate_map[:packaging]
81
+ entry['classifier'] = coordinate_map[:classifier]
82
+ entry['version'] = coordinate_map[:version]
83
83
  end
84
84
  identifiers[plugin_key] = entry
85
85
  write_plugin_identifiers(identifiers)
@@ -24,6 +24,10 @@ module KPM
24
24
  @sha1_config['sha1'][coordinates]
25
25
  end
26
26
 
27
+ def all_sha1()
28
+ @sha1_config['sha1']
29
+ end
30
+
27
31
  def add_or_modify_entry!(coordinates, sha1)
28
32
  @sha1_config['sha1'][coordinates] = sha1
29
33
  save!
data/lib/kpm/tasks.rb CHANGED
@@ -174,6 +174,27 @@ module KPM
174
174
  say "Artifact has been retrieved and can be found at path: #{response[:file_path]}", :green
175
175
  end
176
176
 
177
+ method_option :force_download,
178
+ :type => :boolean,
179
+ :default => false,
180
+ :desc => 'Force download of the artifact even if it exists'
181
+ method_option :verify_sha1,
182
+ :type => :boolean,
183
+ :default => true,
184
+ :desc => 'Validates sha1 sum'
185
+ desc 'pull_defaultbundles', 'Pulls the default OSGI bundles from Sonatype and places it on your machine.'
186
+ def pull_defaultbundles(kb_version='LATEST')
187
+ response = BaseInstaller.new(logger,
188
+ options[:overrides],
189
+ options[:ssl_verify])
190
+ .install_default_bundles(nil,
191
+ nil,
192
+ kb_version,
193
+ options[:force_download],
194
+ options[:verify_sha1])
195
+ say "Artifact has been retrieved and can be found at path: #{response[:file_path]}", :green
196
+ end
197
+
177
198
  desc 'search_for_plugins', 'Searches for all available plugins and prints them to the screen.'
178
199
  def search_for_plugins
179
200
  all_plugins = KillbillPluginArtifact.versions(options[:overrides], options[:ssl_verify])
data/lib/kpm/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module KPM
2
- VERSION = '0.1.3'
2
+ VERSION = '0.1.4'
3
3
  end
@@ -46,6 +46,15 @@ describe KPM::Installer do
46
46
  # Verify idempotency
47
47
  installer.install
48
48
  check_installation(plugins_dir, kb_webapp_path, kaui_webapp_path)
49
+
50
+ # Finally verify that for both (well behaved) ruby and java plugin, skipping the install will still correctly return the `:bundle_dir`
51
+ info = installer.install_plugin('payment-test-plugin', nil, 'org.kill-bill.billing.plugin.ruby', 'payment-test-plugin', nil, nil, '1.8.7', plugins_dir)
52
+ info[:bundle_dir].should == plugins_dir + '/plugins/ruby/killbill-payment-test/1.8.7'
53
+
54
+
55
+ info = installer.install_plugin('analytics', nil, nil, nil, nil, nil, '0.7.1', plugins_dir)
56
+ info[:bundle_dir].should == plugins_dir + '/plugins/java/analytics-plugin/0.7.1'
57
+
49
58
  end
50
59
  end
51
60
 
@@ -9,29 +9,40 @@ describe KPM::KillbillPluginArtifact do
9
9
 
10
10
  it 'should be able to download and verify artifacts' do
11
11
  Dir.mktmpdir do |dir|
12
+ sha1_file = dir + '/sha1.yml'
12
13
  info = KPM::KillbillPluginArtifact.pull(@logger,
13
14
  KPM::BaseArtifact::KILLBILL_JAVA_PLUGIN_GROUP_ID,
14
15
  'analytics-plugin',
15
16
  KPM::BaseArtifact::KILLBILL_JAVA_PLUGIN_PACKAGING,
16
17
  KPM::BaseArtifact::KILLBILL_JAVA_PLUGIN_CLASSIFIER,
17
18
  'LATEST',
18
- dir)
19
+ dir,
20
+ sha1_file)
19
21
  info[:file_name].should == "analytics-plugin-#{info[:version]}.jar"
20
22
  info[:size].should == File.size(info[:file_path])
23
+
24
+ check_yaml_for_resolved_latest_version(sha1_file, 'org.kill-bill.billing.plugin.java:analytics-plugin:jar', '3.0.0')
21
25
  end
22
26
 
23
27
  Dir.mktmpdir do |dir|
28
+ sha1_file = dir + '/sha1.yml'
24
29
  info = KPM::KillbillPluginArtifact.pull(@logger,
25
30
  KPM::BaseArtifact::KILLBILL_RUBY_PLUGIN_GROUP_ID,
26
31
  'logging-plugin',
27
32
  KPM::BaseArtifact::KILLBILL_RUBY_PLUGIN_PACKAGING,
28
33
  KPM::BaseArtifact::KILLBILL_RUBY_PLUGIN_CLASSIFIER,
29
34
  'LATEST',
30
- dir)
35
+ dir,
36
+ sha1_file)
31
37
 
32
38
  # No file name - since we untar'ed it
33
39
  info[:file_name].should be_nil
40
+
41
+ check_yaml_for_resolved_latest_version(sha1_file, 'org.kill-bill.billing.plugin.ruby:logging-plugin:tar.gz', '3.0.0')
34
42
  end
43
+
44
+
45
+
35
46
  end
36
47
 
37
48
  it 'should be able to list versions' do
@@ -51,4 +62,24 @@ describe KPM::KillbillPluginArtifact do
51
62
  logging_plugin_versions.size.should >= 1
52
63
  logging_plugin_versions[0].should == '1.7.0'
53
64
  end
65
+
66
+ private
67
+
68
+ # We verify that 'LATEST' version has been correctly translated into the yml file
69
+ # (we can't check against actual version because as we keep releasing those increment,
70
+ # so the best we can do it check this is *not* LATEST and greater than current version at the time the test was written )
71
+ def check_yaml_for_resolved_latest_version(sha1_file, key_prefix, minimum_version)
72
+
73
+ sha1_checker = KPM::Sha1Checker.from_file(sha1_file)
74
+
75
+ keys = sha1_checker.all_sha1.keys.select { |k| k.start_with? key_prefix}
76
+ keys.size.should == 1
77
+
78
+ parts = keys[0].split(':')
79
+ parts.size.should == 4
80
+ parts[3].should_not == 'LATEST'
81
+ parts[3].should >= minimum_version
82
+ end
83
+
84
+
54
85
  end
@@ -30,7 +30,8 @@ describe KPM::PluginsManager do
30
30
 
31
31
  it 'creates a plugin identifier entry with coordinates' do
32
32
  # Verifies file gets created if does not exist
33
- identifiers = @manager.add_plugin_identifier_key('bar', 'bar_name', 'type', ['group', 'artifact', 'packaging', nil, 'version'])
33
+ coordinate_map = {:group_id => 'group', :artifact_id => 'artifact', :packaging => 'packaging', :version => 'version'}
34
+ identifiers = @manager.add_plugin_identifier_key('bar', 'bar_name', 'type', coordinate_map)
34
35
  identifiers.size.should == 1
35
36
  identifiers['bar']['plugin_name'].should == 'bar_name'
36
37
  identifiers['bar']['group_id'].should == 'group'
@@ -98,17 +99,40 @@ describe KPM::PluginsManager do
98
99
 
99
100
  it 'creates plugin identifiers and validate entry' do
100
101
  # Verifies file gets created if does not exist
101
- identifiers = @manager.add_plugin_identifier_key('yoyo', 'yoyo_name', 'type', ['group', 'artifact', 'packaging', nil, 'version'])
102
+ coordinate_map = {:group_id => 'group', :artifact_id => 'artifact', :packaging => 'packaging', :version => 'version'}
103
+
104
+ identifiers = @manager.add_plugin_identifier_key('yoyo', 'yoyo_name', 'type', coordinate_map)
102
105
  identifiers.size.should == 1
103
106
  identifiers['yoyo']['plugin_name'].should == 'yoyo_name'
104
107
 
105
- @manager.validate_plugin_identifier_key('yoyo', ['group', 'artifact', 'packaging', nil, 'version']).should == true
108
+ @manager.validate_plugin_identifier_key('yoyo', coordinate_map).should == true
106
109
 
107
110
  # Negative validation
108
- @manager.validate_plugin_identifier_key('yoyo', ['group1', 'artifact', 'packaging', nil, 'version']).should == false
111
+ invalid_coordinate_map = {:group_id => 'group1', :artifact_id => 'artifact', :packaging => 'packaging', :version => 'version'}
112
+
113
+ @manager.validate_plugin_identifier_key('yoyo', invalid_coordinate_map).should == false
109
114
  end
110
115
 
111
116
 
117
+ it 'creates a plugin identifier entry with a new version' do
118
+ # Verifies file gets created if does not exist
119
+
120
+ coordinate_map1 = {:group_id => 'group', :artifact_id => 'artifact', :packaging => 'packaging', :version => 'version1'}
121
+
122
+ identifiers = @manager.add_plugin_identifier_key('bar', 'bar_name', 'type', coordinate_map1)
123
+ identifiers.size.should == 1
124
+ identifiers['bar']['plugin_name'].should == 'bar_name'
125
+ identifiers['bar']['version'].should == 'version1'
126
+
127
+ coordinate_map2 = {:group_id => 'group', :artifact_id => 'artifact', :packaging => 'packaging', :version => 'version2'}
128
+
129
+ identifiers = @manager.add_plugin_identifier_key('bar', 'bar_name', 'type', coordinate_map2)
130
+ identifiers.size.should == 1
131
+ identifiers['bar']['plugin_name'].should == 'bar_name'
132
+ identifiers['bar']['version'].should == 'version2'
133
+
134
+ end
135
+
112
136
  it 'sets a path as active' do
113
137
  @manager.set_active(@plugin_dir.join('1.0.0'))
114
138
  File.exists?(@plugin_dir.join('SET_DEFAULT')).should be_true
metadata CHANGED
@@ -1,85 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kpm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kill Bill core team
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-18 00:00:00.000000000 Z
11
+ date: 2015-12-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: highline
15
- version_requirements: !ruby/object:Gem::Requirement
15
+ requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 1.6.21
20
- requirement: !ruby/object:Gem::Requirement
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
21
23
  requirements:
22
- - - ~>
24
+ - - "~>"
23
25
  - !ruby/object:Gem::Version
24
26
  version: 1.6.21
25
- prerelease: false
26
- type: :runtime
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: nexus_cli
29
- version_requirements: !ruby/object:Gem::Requirement
29
+ requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 4.1.0
34
- requirement: !ruby/object:Gem::Requirement
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
35
37
  requirements:
36
- - - ~>
38
+ - - "~>"
37
39
  - !ruby/object:Gem::Version
38
40
  version: 4.1.0
39
- prerelease: false
40
- type: :runtime
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: thor
43
- version_requirements: !ruby/object:Gem::Requirement
43
+ requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: 0.19.1
48
- requirement: !ruby/object:Gem::Requirement
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
49
51
  requirements:
50
- - - ~>
52
+ - - "~>"
51
53
  - !ruby/object:Gem::Version
52
54
  version: 0.19.1
53
- prerelease: false
54
- type: :runtime
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
- version_requirements: !ruby/object:Gem::Requirement
57
+ requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: 10.0.0
62
- requirement: !ruby/object:Gem::Requirement
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
63
65
  requirements:
64
- - - '>='
66
+ - - ">="
65
67
  - !ruby/object:Gem::Version
66
68
  version: 10.0.0
67
- prerelease: false
68
- type: :development
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
- version_requirements: !ruby/object:Gem::Requirement
71
+ requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: 2.12.0
76
- requirement: !ruby/object:Gem::Requirement
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
77
79
  requirements:
78
- - - ~>
80
+ - - "~>"
79
81
  - !ruby/object:Gem::Version
80
82
  version: 2.12.0
81
- prerelease: false
82
- type: :development
83
83
  description: A package manager for Kill Bill.
84
84
  email: killbilling-users@googlegroups.com
85
85
  executables:
@@ -87,8 +87,8 @@ executables:
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
- - .gemrelease
91
- - .gitignore
90
+ - ".gemrelease"
91
+ - ".gitignore"
92
92
  - Gemfile
93
93
  - README.md
94
94
  - Rakefile
@@ -127,26 +127,38 @@ homepage: http://kill-bill.org
127
127
  licenses:
128
128
  - Apache License (2.0)
129
129
  metadata: {}
130
- post_install_message:
130
+ post_install_message:
131
131
  rdoc_options:
132
- - --exclude
133
- - .
132
+ - "--exclude"
133
+ - "."
134
134
  require_paths:
135
135
  - lib
136
136
  required_ruby_version: !ruby/object:Gem::Requirement
137
137
  requirements:
138
- - - '>='
138
+ - - ">="
139
139
  - !ruby/object:Gem::Version
140
140
  version: 1.8.6
141
141
  required_rubygems_version: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - '>='
143
+ - - ">="
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  requirements: []
147
- rubyforge_project:
148
- rubygems_version: 2.1.9
149
- signing_key:
147
+ rubyforge_project:
148
+ rubygems_version: 2.2.2
149
+ signing_key:
150
150
  specification_version: 4
151
151
  summary: Kill Bill package manager.
152
- test_files: []
152
+ test_files:
153
+ - spec/kpm/remote/base_artifact_spec.rb
154
+ - spec/kpm/remote/installer_spec.rb
155
+ - spec/kpm/remote/kaui_artifact_spec.rb
156
+ - spec/kpm/remote/killbill_plugin_artifact_spec.rb
157
+ - spec/kpm/remote/killbill_server_artifact_spec.rb
158
+ - spec/kpm/remote/tomcat_manager_spec.rb
159
+ - spec/kpm/unit/base_artifact_spec.rb
160
+ - spec/kpm/unit/plugins_directory_spec.rb
161
+ - spec/kpm/unit/plugins_manager_spec.rb
162
+ - spec/kpm/unit/sha1_checker_spec.rb
163
+ - spec/kpm/unit/sha1_test.yml
164
+ - spec/spec_helper.rb