summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Keiser <john@johnkeiser.com>2016-08-08 11:31:54 -0700
committerJohn Keiser <john@johnkeiser.com>2016-08-10 14:50:44 -0700
commit9860fd5e3edbda739670a2d24ccb1c9845a0cbf1 (patch)
treee3bc947e2725e53b9978620bd8f88ce75f80cb11
parentf447166308858df33a728aba0b59fc80852c3c16 (diff)
downloadchef-9860fd5e3edbda739670a2d24ccb1c9845a0cbf1.tar.gz
Add release notes and gem version diff generator
-rw-r--r--RELEASE_NOTES.md62
-rwxr-xr-xtasks/bin/gem-version-diff37
2 files changed, 67 insertions, 32 deletions
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index b3bba87dc0..14e30f1f77 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -1,35 +1,33 @@
*This file holds "in progress" release notes for the current release under development and is intended for consumption by the Chef Documentation team.
Please see `https://docs.chef.io/release/<major>-<minor>/release_notes.html` for the official Chef release notes.*
-# Chef Client Release Notes 12.12:
-
-## Attribute read/write/unlink/exist? APIs
-
-On the node object:
-
-- `node.read("foo", "bar", "baz")` equals `node["foo"]["bar"]["baz"] `but with safety (nil instead of exception)
-- `node.read!("foo", "bar", "baz")` equals `node["foo"]["bar"]["baz"]` and does raises NoMethodError
-
-- `node.write(:default, "foo", "bar", "baz")` equals `node.default["foo"]["bar"] = "baz"` and autovivifies and replaces intermediate non-hash objects (very safe)
-- `node.write!(:default, "foo", "bar", "baz")` equals `node.default["foo"]["bar"] = "baz"` and while it autovivifies it can raise if you hit a non-hash on an intermediate key (NoMethodError)
-- there is still no non-autovivifying writer, and i don't think anyone really wants one.
-- `node.exist?("foo", "bar")` can be used to see if `node["foo"]["bar"]` exists
-
-On node levels:
-
-- `node.default.read/read!("foo")` operates similarly to `node.read("foo")` but only on default level
-- `node.default.write/write!("foo", "bar")` is `node.write/write!(:default, "foo", "bar")`
-- `node.default.unlink/unlink!("foo")` is `node.unlink/unlink!(:default, "foo")`
-- `node.default.exist?("foo", "bar")` can be used to see if `node.default["foo"]["bar"]` exists
-
-Deprecations:
-
-- node.set is deprecated
-- node.set_unless is deprecated
-
-## `data_collector` enhancements
-
-- Adds `node` to the `data_collector` message
-- `data_collector` reports on all resources and not just those that have been processed
-
-## `knife cookbook create` is deprecated. Use the chef-dk's `chef generate cookbook` instead. \ No newline at end of file
+# Chef Client Release Notes 12.13:
+
+Highlights for this release:
+
+- Ohai 8.18 includes a new plugin for gathering available user shells. Additionally for OS X users there is a new hardware plugin that gathers system information, and we’ve added detection of VMware and VirtualBox installations.
+
+## Updated Dependencies
+
+- ruby - 2.1.9 (was 2.1.8)
+
+### Updated Gems
+
+- chef-zero - 4.8.0 (was 4.7.0)
+- cheffish - 2.0.5 (was 2.0.4)
+- compat_resource - 12.10.7 (was 12.10.6)
+- ffi - 1.9.14 (was 1.9.10)
+- ffi-yajl - 2.3.0 (was 2.2.3)
+- fuzzyurl - 0.9.0 (was 0.8.0)
+- mixlib-cli - 1.7.0 (was 1.6.0)
+- mixlib-log - 1.7.0 (was 1.6.0)
+- ohai - 8.18.0 (was 8.17.1)
+- pry - 0.10.4 (was 0.10.3)
+- rspec - 3.5.0 (was 3.4.0)
+- rspec-core - 3.5.2 (was 3.4.4)
+- rspec-expectations - 3.5.0 (was 3.4.0)
+- rspec-mocks - 3.5.0 (was 3.4.1)
+- rspec-support - 3.5.0 (was 3.4.1)
+- simplecov - 0.12.0 (was 0.11.2)
+- specinfra - 2.60.3 (was 2.59.4)
+- mixlib-archive - 0.2.0 (added to package)
diff --git a/tasks/bin/gem-version-diff b/tasks/bin/gem-version-diff
new file mode 100755
index 0000000000..617402d4e6
--- /dev/null
+++ b/tasks/bin/gem-version-diff
@@ -0,0 +1,37 @@
+#!/usr/bin/env ruby
+
+require_relative "../../version_policy"
+
+old_version, new_version = ARGV[0..1]
+
+require "set"
+ENV["BUNDLE_WITHOUT"] = INSTALL_WITHOUT_GROUPS.join(":")
+relevant_gems = Set.new
+`bundle list`.each_line do |line|
+ next unless line =~ /^ \* (\S+)/
+ relevant_gems.add($1)
+end
+
+old_gems = {}
+old_file = `git show #{old_version}:Gemfile.lock`
+old_file.each_line do |line|
+ next unless line =~ /^ (\S+) \(([^\)]+)\)$/
+ next unless relevant_gems.include?($1)
+ old_gems[$1] = $2
+end
+
+new_gems = {}
+new_file = `git show #{new_version}:Gemfile.lock`
+new_file.each_line do |line|
+ next unless line =~ /^ (\S+) \(([^\)]+)\)$/
+ next unless relevant_gems.include?($1)
+ new_gems[$1] = $2
+end
+
+modified_gems = (old_gems.keys & new_gems.keys).sort.select { |name| new_gems[name] != old_gems[name] }.map { |name| "#{name} - #{new_gems[name]} (was #{old_gems[name]})" }
+removed_gems = (old_gems.keys - new_gems.keys).sort.map { |name| "#{name} - #{old_gems[name]}" }
+added_gems = (new_gems.keys - old_gems.keys).sort.map { |name| "#{name} - #{new_gems[name]}" }
+
+puts "MODIFIED:\n#{modified_gems.join("\n")}" if modified_gems.any?
+puts "\nADDED:\n#{added_gems.join("\n")}" if added_gems.any?
+puts "\nREMOVED:\n#{removed_gems.join("\n")}" if removed_gems.any?