diff options
author | Jamie Winsor <jamie@vialstudios.com> | 2013-05-05 14:02:02 -0700 |
---|---|---|
committer | Jamie Winsor <jamie@vialstudios.com> | 2013-05-05 15:56:12 -0700 |
commit | e308513c12c34882c8fc5250cdf27298bd412156 (patch) | |
tree | 8c16df74d8fe59f7ac26687f5c9d5101e953936e | |
parent | 6d2f3e14753c2ac2b8bded03859a9ace4d13cc1f (diff) | |
download | chef-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.gemspec | 1 | ||||
-rw-r--r-- | lib/chef_zero.rb | 2 | ||||
-rw-r--r-- | lib/chef_zero/endpoints/cookbook_endpoint.rb | 2 | ||||
-rw-r--r-- | lib/chef_zero/endpoints/cookbook_version_endpoint.rb | 2 | ||||
-rw-r--r-- | lib/chef_zero/endpoints/cookbooks_base.rb | 9 | ||||
-rw-r--r-- | lib/chef_zero/endpoints/environment_cookbook_versions_endpoint.rb | 9 |
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 |