summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJamie Winsor <jamie@vialstudios.com>2013-05-05 14:02:02 -0700
committerJamie Winsor <jamie@vialstudios.com>2013-05-05 15:56:12 -0700
commite308513c12c34882c8fc5250cdf27298bd412156 (patch)
tree8c16df74d8fe59f7ac26687f5c9d5101e953936e
parent6d2f3e14753c2ac2b8bded03859a9ace4d13cc1f (diff)
downloadchef-zero-e308513c12c34882c8fc5250cdf27298bd412156.tar.gz
remove dependency on Chef::Version and Chef::VersionConstraint
use Solve for version comparison and constraint satisfication
-rw-r--r--chef-zero.gemspec1
-rw-r--r--lib/chef_zero.rb2
-rw-r--r--lib/chef_zero/endpoints/cookbook_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/cookbook_version_endpoint.rb2
-rw-r--r--lib/chef_zero/endpoints/cookbooks_base.rb9
-rw-r--r--lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb9
6 files changed, 11 insertions, 14 deletions
diff --git a/chef-zero.gemspec b/chef-zero.gemspec
index 224ea6d..6f030a2 100644
--- a/chef-zero.gemspec
+++ b/chef-zero.gemspec
@@ -16,6 +16,7 @@ Gem::Specification.new do |s|
s.add_dependency 'chef' # For version, version constraint and deep merge
s.add_dependency 'thin' # webrick DOES NOT FREAKING WORK
s.add_dependency 'mixlib-log', '>= 1.3.0'
+ s.add_dependency 'solve', '>= 0.4.3'
s.bindir = "bin"
s.executables = %w( chef-zero )
diff --git a/lib/chef_zero.rb b/lib/chef_zero.rb
index 879c4cb..d7acbae 100644
--- a/lib/chef_zero.rb
+++ b/lib/chef_zero.rb
@@ -1,3 +1,5 @@
+require 'solve'
+
module ChefZero
autoload :Log, 'chef_zero/log'
diff --git a/lib/chef_zero/endpoints/cookbook_endpoint.rb b/lib/chef_zero/endpoints/cookbook_endpoint.rb
index 9334af7..e8326a7 100644
--- a/lib/chef_zero/endpoints/cookbook_endpoint.rb
+++ b/lib/chef_zero/endpoints/cookbook_endpoint.rb
@@ -31,7 +31,7 @@ module ChefZero
end
def latest_version(versions)
- sorted = versions.sort_by { |version| Chef::Version.new(version) }
+ sorted = versions.sort_by { |version| Solve::Version.new(version) }
sorted[-1]
end
end
diff --git a/lib/chef_zero/endpoints/cookbook_version_endpoint.rb b/lib/chef_zero/endpoints/cookbook_version_endpoint.rb
index 7712fac..27687c8 100644
--- a/lib/chef_zero/endpoints/cookbook_version_endpoint.rb
+++ b/lib/chef_zero/endpoints/cookbook_version_endpoint.rb
@@ -98,7 +98,7 @@ module ChefZero
end
def latest_version(versions)
- sorted = versions.sort_by { |version| Chef::Version.new(version) }
+ sorted = versions.sort_by { |version| Solve::Version.new(version) }
sorted[-1]
end
end
diff --git a/lib/chef_zero/endpoints/cookbooks_base.rb b/lib/chef_zero/endpoints/cookbooks_base.rb
index 53f7945..143a695 100644
--- a/lib/chef_zero/endpoints/cookbooks_base.rb
+++ b/lib/chef_zero/endpoints/cookbooks_base.rb
@@ -1,7 +1,4 @@
require 'json'
-require 'chef/exceptions' # Needed so Chef::Version/VersionConstraint load
-require 'chef/version_class'
-require 'chef/version_constraint'
require 'chef_zero/rest_base'
require 'chef_zero/data_normalizer'
@@ -28,11 +25,11 @@ module ChefZero
def filter_cookbooks(cookbooks_list, constraints = {}, num_versions = nil)
cookbooks_list.keys.sort.each do |name|
- constraint = Chef::VersionConstraint.new(constraints[name])
+ constraint = Solve::Constraint.new(constraints[name])
versions = []
- cookbooks_list[name].keys.sort_by { |version| Chef::Version.new(version) }.reverse.each do |version|
+ cookbooks_list[name].keys.sort_by { |version| Solve::Version.new(version) }.reverse.each do |version|
break if num_versions && versions.size >= num_versions
- if constraint.include?(version)
+ if constraint.satisfies?(version)
versions << version
end
end
diff --git a/lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb b/lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb
index 6efa9a0..0a61c83 100644
--- a/lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb
+++ b/lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb
@@ -1,7 +1,4 @@
require 'json'
-require 'chef/exceptions' # Needed so Chef::Version/VersionConstraint load
-require 'chef/version_class'
-require 'chef/version_constraint'
require 'chef_zero/rest_base'
require 'chef_zero/rest_error_response'
@@ -100,15 +97,15 @@ module ChefZero
end
def sort_versions(versions)
- result = versions.sort_by { |version| Chef::Version.new(version) }
+ result = versions.sort_by { |version| Solve::Version.new(version) }
result.reverse
end
def filter_by_constraint(versions, cookbook_name, constraint)
return versions if !constraint
- constraint = Chef::VersionConstraint.new(constraint)
+ constraint = Solve::Constraint.new(constraint)
new_versions = versions[cookbook_name]
- new_versions = new_versions.select { |version| constraint.include?(version) }
+ new_versions = new_versions.select { |version| constraint.satisfies?(version) }
result = versions.clone
result[cookbook_name] = new_versions
result