nexus_cli 2.0.2 → 3.0.0

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.0.2
1
+ 3.0.0
@@ -44,14 +44,14 @@ module NexusCli
44
44
  response = nexus.get(nexus_url("service/local/status"))
45
45
  case response.status
46
46
  when 200
47
- doc = Nokogiri::XML(response.content).xpath("/status/data")
47
+ doc = REXML::Document.new(response.content).elements["/status/data"]
48
48
  data = Hash.new
49
- data['app_name'] = doc.xpath("appName")[0].text
50
- data['version'] = doc.xpath("version")[0].text
51
- data['edition_long'] = doc.xpath("editionLong")[0].text
52
- data['state'] = doc.xpath("state")[0].text
53
- data['started_at'] = doc.xpath("startedAt")[0].text
54
- data['base_url'] = doc.xpath("baseUrl")[0].text
49
+ data['app_name'] = doc.elements["appName"].text
50
+ data['version'] = doc.elements["version"].text
51
+ data['edition_long'] = doc.elements["editionLong"].text
52
+ data['state'] = doc.elements["state"].text
53
+ data['started_at'] = doc.elements["startedAt"].text
54
+ data['base_url'] = doc.elements["baseUrl"].text
55
55
  return data
56
56
  when 401
57
57
  raise PermissionsException
@@ -14,7 +14,8 @@ module NexusCli
14
14
  # @return [Hash] Some information about the artifact that was pulled.
15
15
  def pull_artifact(artifact, destination=nil)
16
16
  group_id, artifact_id, version, extension = parse_artifact_string(artifact)
17
- version = Nokogiri::XML(get_artifact_info(artifact)).xpath("//version").first.content() if version.casecmp("latest")
17
+ version = REXML::Document.new(get_artifact_info(artifact)).elements["//version"].text if version.casecmp("latest")
18
+
18
19
  file_name = "#{artifact_id}-#{version}.#{extension}"
19
20
  destination = File.join(File.expand_path(destination || "."), file_name)
20
21
  response = nexus.get(nexus_url("service/local/artifact/maven/redirect"), :query => {:g => group_id, :a => artifact_id, :v => version, :e => extension, :r => configuration['repository']})
@@ -123,7 +124,7 @@ module NexusCli
123
124
  response = nexus.get(nexus_url("service/local/data_index"), :query => {:g => group_id, :a => artifact_id})
124
125
  case response.status
125
126
  when 200
126
- doc = Nokogiri::XML(response.content)
127
+ doc = REXML::Document.new(response.content)
127
128
  return format_search_results(doc, group_id, artifact_id)
128
129
  else
129
130
  raise UnexpectedStatusCodeException.new(response.status)
@@ -139,13 +140,15 @@ module NexusCli
139
140
  # Formats the given XML into an [Array<String>] so it
140
141
  # can be displayed nicely.
141
142
  #
142
- # @param doc [Nokogiri::XML] the xml search results
143
+ # @param doc [REXML::Document] the xml search results
143
144
  # @param group_id [String] the group id
144
145
  # @param artifact_id [String] the artifact id
145
146
  #
146
147
  # @return [type] [description]
147
148
  def format_search_results(doc, group_id, artifact_id)
148
- versions = doc.xpath("//version").inject([]) {|array,node| array << "#{node.content()}"}
149
+
150
+ versions = []
151
+ REXML::XPath.each(doc, "//version") { |matched_version| versions << matched_version.text }
149
152
  if versions.length > 0
150
153
  indent_size = versions.max{|a,b| a.length <=> b.length}.size+4
151
154
  formated_results = ['Found Versions:']
@@ -66,7 +66,7 @@ module NexusCli
66
66
  response = nexus.get(nexus_url("service/local/search/m2/freeform"), :query => {:p => param[0], :t => param[1], :v => param[2]})
67
67
  case response.status
68
68
  when 200
69
- nodesets.push(Nokogiri::XML(response.body).xpath("/search-results/data"))
69
+ nodesets.push(REXML::Document.new(response.body).elements["/search-results/data"])
70
70
  when 400
71
71
  raise BadSearchRequestException
72
72
  when 404
@@ -77,7 +77,9 @@ module NexusCli
77
77
  end
78
78
  # Perform array intersection across all NodeSets for the final common set.
79
79
  result = nodesets.inject(nodesets.first) {|memo, nodeset| get_common_artifact_set(memo, nodeset)}
80
- return result.nil? ? "" : result.to_xml(:indent => 4)
80
+ formatter = REXML::Formatters::Pretty.new(4)
81
+ formatter.compact = true
82
+ return result.nil? ? "" : formatter.write(result, "")
81
83
  end
82
84
 
83
85
  private
@@ -147,22 +149,27 @@ module NexusCli
147
149
  end
148
150
 
149
151
  # Gets the intersection of two artifact arrays, returning the common set
150
- # @param [Array] set1, set2 The two Nokogiri::NodeSet objects to intersect
151
- # @result [Nokogiri::NodeSet] The resulting object generated from the array intersect
152
- def get_common_artifact_set(set1, set2)
153
- intersection = get_artifact_array(set1) & get_artifact_array(set2)
154
- return intersection.count > 0 ? Nokogiri::XML("<data>#{intersection.join}</data>").root : Nokogiri::XML("").root
152
+ #
153
+ # @param [REXML::Document] left_document, right_document
154
+ # The two REXML::Document objects to intersect
155
+ #
156
+ # @result [REXML::Document nil]
157
+ # The resulting object generated from the intersectection or nil
158
+ def get_common_artifact_set(left_document, right_document)
159
+ intersection = get_artifact_array(left_document) & get_artifact_array(right_document)
160
+ return intersection.count > 0 ? REXML::Document.new("<data>#{intersection.join}</data>").root : nil
155
161
  end
156
162
 
157
163
  # Collect <artifact> elements into an array
164
+ #
158
165
  # @info This will allow use of array intersection to find common artifacts in searches
159
- # @param [Nokogiri::NodeSet] set The object to be divided by <artifact> elements
166
+ #
167
+ # @param [REXML::Document] document The object to be divided by <artifact> elements
168
+ #
160
169
  # @result [Array] The result array of artifact elements
161
- def get_artifact_array(set)
162
- set.search("//artifact").inject([]) do |artifacts, artifact|
163
- artifacts.push(artifact.to_s)
164
- artifacts
165
- end
170
+ def get_artifact_array(document)
171
+ artifacts = []
172
+ REXML::XPath.each(document, "//artifact") { |matched_artifact| artifacts << matched_artifact.text }
166
173
  end
167
174
  end
168
175
  end
@@ -47,7 +47,7 @@ module NexusCli
47
47
  #
48
48
  # @return [Boolean] true if the repository is now subscribing, false otherwise
49
49
  def enable_artifact_subscribe(repository_id, preemptive_fetch)
50
- raise NotProxyRepositoryException.new(repository_id) unless Nokogiri::XML(get_repository_info(repository_id)).xpath("/repository/data/repoType").first.content == "proxy"
50
+ raise NotProxyRepositoryException.new(repository_id) unless is_proxy_repository?(get_repository_info(repository_id))
51
51
 
52
52
  params = {:repositoryId => repository_id}
53
53
  params[:subscribe] = true
@@ -61,7 +61,7 @@ module NexusCli
61
61
  #
62
62
  # @return [Boolean] true if the repository is disabled, false otherwise
63
63
  def disable_artifact_subscribe(repository_id)
64
- raise NotProxyRepositoryException.new(repository_id) unless Nokogiri::XML(get_repository_info(repository_id)).xpath("/repository/data/repoType").first.content == "proxy"
64
+ raise NotProxyRepositoryException.new(repository_id) unless is_proxy_repository?(get_repository_info(repository_id))
65
65
 
66
66
  params = {:repositoryId => repository_id}
67
67
  params[:subscribe] = false
@@ -210,5 +210,10 @@ module NexusCli
210
210
  raise UnexpectedStatusCodeException.new(response.status)
211
211
  end
212
212
  end
213
+
214
+ private
215
+ def is_proxy_repository?(repository_xml)
216
+ REXML::Document.new(repository_xml).elements["/repository/data/repoType"].text == "proxy"
217
+ end
213
218
  end
214
219
  end
@@ -1,4 +1,3 @@
1
- require 'nokogiri'
2
1
  require 'base64'
3
2
 
4
3
  module NexusCli
@@ -29,19 +28,26 @@ module NexusCli
29
28
  # Parses the regular custom metadata xml into a simpler format containing only the custom metadata.
30
29
  def convert_result_to_simple_xml(custom_metadata)
31
30
  request = []
32
- Nokogiri::XML(custom_metadata).root.search("//customMetadataResponse/data/customMetadata[namespace=\"urn:nexus/user#\"]").each do |row|
33
- request.push(create_tag(row.at("key").text.strip, row.at("value").text.strip))
31
+ document = REXML::Document.new(custom_metadata)
32
+ REXML::XPath.each(document, "//customMetadataResponse/data/customMetadata[namespace=\"urn:nexus/user#\"]") do |row|
33
+ request.push(create_tag(row.elements["key"].text.strip, row.elements["value"].text.strip))
34
34
  end
35
- return Nokogiri::XML("<artifact-resolution><data>#{request.join}</data></artifact-resolution>").root.to_xml(:indent => 4)
35
+ formatter = REXML::Formatters::Pretty.new(4)
36
+ formatter.compact = true
37
+ document = REXML::Document.new("<artifact-resolution><data>#{request.join}</data></artifact-resolution>")
38
+ out = ""
39
+ formatter.write(document, out)
40
+ out
36
41
  end
37
42
 
38
43
  # Parses the regular custom metadata xml into a hash containing only the custom metadata.
39
44
  def convert_result_to_hash(custom_metadata)
40
45
  request = {}
41
- Nokogiri::XML(custom_metadata).root.search("//customMetadataResponse/data/customMetadata[namespace=\"urn:nexus/user#\"]").each do |row|
42
- request[row.at("key").text.strip] = row.at("value").text.strip
46
+ document = REXML::Document.new(custom_metadata)
47
+ REXML::XPath.each(document, "//customMetadataResponse/data/customMetadata[namespace=\"urn:nexus/user#\"]") do |row|
48
+ request[row.elements["key"].text.strip] = row.elements["value"].text.strip
43
49
  end
44
- return request
50
+ request
45
51
  end
46
52
 
47
53
  # Create the request from the specified list of custom metadata key:value pairs
@@ -64,7 +70,7 @@ module NexusCli
64
70
  private
65
71
 
66
72
  def create_tag(tag, value)
67
- return "<#{tag}>#{value}</#{tag}>"
73
+ "<#{tag}>#{value}</#{tag}>"
68
74
  end
69
75
  end
70
76
  end
@@ -1,5 +1,4 @@
1
1
  require 'httpclient'
2
- require 'nokogiri'
3
2
  require 'yaml'
4
3
 
5
4
  module NexusCli
data/lib/nexus_cli.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'forwardable'
2
2
  require 'httpclient'
3
3
  require 'nexus_cli/errors'
4
- require 'nokogiri'
4
+ require 'rexml/document'
5
5
  require 'yaml'
6
6
 
7
7
  module NexusCli
data/nexus_cli.gemspec CHANGED
@@ -18,7 +18,6 @@ Gem::Specification.new do |s|
18
18
 
19
19
  s.add_dependency 'thor'
20
20
  s.add_dependency 'httpclient', '= 2.2.5'
21
- s.add_dependency 'nokogiri'
22
21
  s.add_dependency 'extlib'
23
22
  s.add_dependency 'json'
24
23
  s.add_dependency 'highline'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nexus_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 3.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-15 00:00:00.000000000 Z
12
+ date: 2013-02-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
@@ -43,22 +43,6 @@ dependencies:
43
43
  - - '='
44
44
  - !ruby/object:Gem::Version
45
45
  version: 2.2.5
46
- - !ruby/object:Gem::Dependency
47
- name: nokogiri
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :runtime
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
46
  - !ruby/object:Gem::Dependency
63
47
  name: extlib
64
48
  requirement: !ruby/object:Gem::Requirement
@@ -266,7 +250,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
266
250
  version: '0'
267
251
  segments:
268
252
  - 0
269
- hash: 4038582514011426176
253
+ hash: 1427229917539912472
270
254
  required_rubygems_version: !ruby/object:Gem::Requirement
271
255
  none: false
272
256
  requirements:
@@ -275,10 +259,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
275
259
  version: '0'
276
260
  segments:
277
261
  - 0
278
- hash: 4038582514011426176
262
+ hash: 1427229917539912472
279
263
  requirements: []
280
264
  rubyforge_project:
281
- rubygems_version: 1.8.21
265
+ rubygems_version: 1.8.24
282
266
  signing_key:
283
267
  specification_version: 3
284
268
  summary: A command-line wrapper for making REST calls to Sonatype Nexus.