From 3a22a601fef64d3c4c05c5bdfce2706de3442d4a Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Tue, 14 Jan 2025 13:43:24 -0600 Subject: [PATCH 01/14] fix lib name for chef-client 18.6.2 and greater Signed-off-by: Corey Hemminger --- libraries/helpers.rb | 8 +++----- spec/recipes/default_spec.rb | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/libraries/helpers.rb b/libraries/helpers.rb index 79d8dcb..a6231ca 100644 --- a/libraries/helpers.rb +++ b/libraries/helpers.rb @@ -20,8 +20,8 @@ # class HomebrewUserWrapper - require 'chef/mixin/homebrew_user' - include Chef::Mixin::HomebrewUser + require Chef::VERSION >= Chef::Version.new('18.6.2') ? 'chef/mixin/homebrew' : 'chef/mixin/homebrew_user' + include Chef::VERSION >= Chef::Version.new('18.6.2') ? Chef::Mixin::Homebrew : Chef::Mixin::HomebrewUser include Chef::Mixin::Which end @@ -60,9 +60,7 @@ def exist? def owner @owner ||= begin - # once we only support 14.0 we can switch this to find_homebrew_username - require 'etc' - ::Etc.getpwuid(HomebrewUserWrapper.new.find_homebrew_uid).name + find_homebrew_username rescue Chef::Exceptions::CannotDetermineHomebrewOwner calculate_owner end.tap do |owner| diff --git a/spec/recipes/default_spec.rb b/spec/recipes/default_spec.rb index 229a54d..0cef0dc 100644 --- a/spec/recipes/default_spec.rb +++ b/spec/recipes/default_spec.rb @@ -40,7 +40,7 @@ end before do - allow_any_instance_of(Chef::Mixin::HomebrewUser).to receive(:find_homebrew_uid).and_return(Process.uid) + allow_any_instance_of(Chef::Mixin::Homebrew).to receive(:find_homebrew_uid).and_return(Process.uid) end it 'does not run homebrew installation' do From b73089c748fa24649235cb9881f7296206d8d2e5 Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Tue, 14 Jan 2025 13:48:43 -0600 Subject: [PATCH 02/14] updated changelog Signed-off-by: Corey Hemminger --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 44ca996..6b10cda 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ This file is used to list changes made in each version of the homebrew cookbook. ## Unreleased +- Updated library call for new homebrew class name + ## 5.4.9 - *2024-11-18* Standardise files with files in sous-chefs/repo-management From 92ea0b7a74d49c9a7658cef14fbf6a827065457c Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Mon, 20 Jan 2025 10:36:45 -0600 Subject: [PATCH 03/14] cookstyle fixes Signed-off-by: Corey Hemminger --- resources/cask.rb | 1 + resources/tap.rb | 1 + 2 files changed, 2 insertions(+) diff --git a/resources/cask.rb b/resources/cask.rb index c4d2053..f66fc8f 100644 --- a/resources/cask.rb +++ b/resources/cask.rb @@ -19,6 +19,7 @@ # limitations under the License. # +unified_mode true chef_version_for_provides '< 14.0' if respond_to?(:chef_version_for_provides) property :cask_name, String, regex: %r{^[\w/-]+$}, name_property: true diff --git a/resources/tap.rb b/resources/tap.rb index 8f67124..dc7f329 100644 --- a/resources/tap.rb +++ b/resources/tap.rb @@ -19,6 +19,7 @@ # limitations under the License. # +unified_mode true chef_version_for_provides '< 14.0' if respond_to?(:chef_version_for_provides) property :tap_name, String, name_property: true, regex: %r{^[\w-]+(?:\/[\w-]+)+$} From 6fae708af5a07374be8e1aa1431b29d82b941813 Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Mon, 20 Jan 2025 10:43:40 -0600 Subject: [PATCH 04/14] cookstyle fix Signed-off-by: Corey Hemminger --- libraries/helpers.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/helpers.rb b/libraries/helpers.rb index a6231ca..37bcaf0 100644 --- a/libraries/helpers.rb +++ b/libraries/helpers.rb @@ -63,9 +63,9 @@ def owner find_homebrew_username rescue Chef::Exceptions::CannotDetermineHomebrewOwner calculate_owner - end.tap do |owner| - Chef::Log.debug("Homebrew owner is #{owner}") - end + end.tap do |owner| + Chef::Log.debug("Homebrew owner is #{owner}") + end end private From f243170116c8c7dc985b88225c96a2a164c8ea78 Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Mon, 20 Jan 2025 12:03:16 -0600 Subject: [PATCH 05/14] test Signed-off-by: Corey Hemminger --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ebeb70f..e8d7114 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: issues: write integration: - needs: "lint-unit" +# needs: "lint-unit" runs-on: macos-latest strategy: matrix: From e56ed5deb802d638c36e6f799d25e459c23c8f7a Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Mon, 20 Jan 2025 12:38:06 -0600 Subject: [PATCH 06/14] test2 Signed-off-by: Corey Hemminger --- libraries/helpers.rb | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/libraries/helpers.rb b/libraries/helpers.rb index 37bcaf0..f3b6470 100644 --- a/libraries/helpers.rb +++ b/libraries/helpers.rb @@ -19,14 +19,16 @@ # limitations under the License. # -class HomebrewUserWrapper +# class HomebrewUserWrapper +# require Chef::VERSION >= Chef::Version.new('18.6.2') ? 'chef/mixin/homebrew' : 'chef/mixin/homebrew_user' +# include Chef::VERSION >= Chef::Version.new('18.6.2') ? Chef::Mixin::Homebrew : Chef::Mixin::HomebrewUser +# include Chef::Mixin::Which +# end + +module HomebrewHelper require Chef::VERSION >= Chef::Version.new('18.6.2') ? 'chef/mixin/homebrew' : 'chef/mixin/homebrew_user' include Chef::VERSION >= Chef::Version.new('18.6.2') ? Chef::Mixin::Homebrew : Chef::Mixin::HomebrewUser include Chef::Mixin::Which -end - -module Homebrew - extend self require 'mixlib/shellout' include Chef::Mixin::ShellOut @@ -91,8 +93,8 @@ def sudo_user def current_user ENV['USER'] end -end unless defined?(Homebrew) +end # unless defined?(Homebrew) class HomebrewWrapper - include Homebrew + include HomebrewHelper end From 4ecdb9c418c4be79e88d068d2ad8f57a91fb68dc Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Mon, 20 Jan 2025 13:10:51 -0600 Subject: [PATCH 07/14] test3 Signed-off-by: Corey Hemminger --- libraries/helpers.rb | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/libraries/helpers.rb b/libraries/helpers.rb index f3b6470..f9a1167 100644 --- a/libraries/helpers.rb +++ b/libraries/helpers.rb @@ -19,16 +19,16 @@ # limitations under the License. # -# class HomebrewUserWrapper -# require Chef::VERSION >= Chef::Version.new('18.6.2') ? 'chef/mixin/homebrew' : 'chef/mixin/homebrew_user' -# include Chef::VERSION >= Chef::Version.new('18.6.2') ? Chef::Mixin::Homebrew : Chef::Mixin::HomebrewUser -# include Chef::Mixin::Which -# end - -module HomebrewHelper - require Chef::VERSION >= Chef::Version.new('18.6.2') ? 'chef/mixin/homebrew' : 'chef/mixin/homebrew_user' - include Chef::VERSION >= Chef::Version.new('18.6.2') ? Chef::Mixin::Homebrew : Chef::Mixin::HomebrewUser +class HomebrewUserWrapper + require 'chef/mixin/homebrew' + include Chef::Mixin::Homebrew + # require Chef::VERSION >= Chef::Version.new('18.6.2') ? 'chef/mixin/homebrew' : 'chef/mixin/homebrew_user' + # include Chef::VERSION >= Chef::Version.new('18.6.2') ? Chef::Mixin::Homebrew : Chef::Mixin::HomebrewUser include Chef::Mixin::Which +end + +module Homebrew + extend self require 'mixlib/shellout' include Chef::Mixin::ShellOut @@ -93,8 +93,8 @@ def sudo_user def current_user ENV['USER'] end -end # unless defined?(Homebrew) +end unless defined?(Homebrew) class HomebrewWrapper - include HomebrewHelper + include Homebrew end From 14606682433b0314eb054e60638aab72724fddce Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Mon, 20 Jan 2025 13:22:55 -0600 Subject: [PATCH 08/14] test4 Signed-off-by: Corey Hemminger --- libraries/helpers.rb | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/libraries/helpers.rb b/libraries/helpers.rb index f9a1167..cfaf2ff 100644 --- a/libraries/helpers.rb +++ b/libraries/helpers.rb @@ -19,22 +19,23 @@ # limitations under the License. # -class HomebrewUserWrapper - require 'chef/mixin/homebrew' - include Chef::Mixin::Homebrew - # require Chef::VERSION >= Chef::Version.new('18.6.2') ? 'chef/mixin/homebrew' : 'chef/mixin/homebrew_user' - # include Chef::VERSION >= Chef::Version.new('18.6.2') ? Chef::Mixin::Homebrew : Chef::Mixin::HomebrewUser - include Chef::Mixin::Which -end +# class HomebrewUserWrapper +# require 'chef/mixin/homebrew' +# include Chef::Mixin::Homebrew +# # require Chef::VERSION >= Chef::Version.new('18.6.2') ? 'chef/mixin/homebrew' : 'chef/mixin/homebrew_user' +# # include Chef::VERSION >= Chef::Version.new('18.6.2') ? Chef::Mixin::Homebrew : Chef::Mixin::HomebrewUser +# include Chef::Mixin::Which +# end module Homebrew - extend self + require 'chef/mixin/homebrew' + include Chef::Mixin::Homebrew require 'mixlib/shellout' include Chef::Mixin::ShellOut def self.included(base) - base.extend(Homebrew) + base.extend(HomebrewHelper) end def install_path @@ -70,6 +71,8 @@ def owner end end + extend self + private def calculate_owner @@ -93,8 +96,8 @@ def sudo_user def current_user ENV['USER'] end -end unless defined?(Homebrew) +end # unless defined?(Homebrew) -class HomebrewWrapper - include Homebrew -end +# class HomebrewWrapper +# include Homebrew +# end From 31ff70f7226987ae01717217ec3536a7e498948d Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Mon, 20 Jan 2025 13:27:52 -0600 Subject: [PATCH 09/14] test5 Signed-off-by: Corey Hemminger --- libraries/helpers.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/helpers.rb b/libraries/helpers.rb index cfaf2ff..7f7c93c 100644 --- a/libraries/helpers.rb +++ b/libraries/helpers.rb @@ -35,7 +35,7 @@ module Homebrew include Chef::Mixin::ShellOut def self.included(base) - base.extend(HomebrewHelper) + base.extend(Homebrew) end def install_path From b460b208dbd322ef27a3b4ed1fe5866a0212ea0b Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Mon, 20 Jan 2025 14:53:46 -0600 Subject: [PATCH 10/14] test6 Signed-off-by: Corey Hemminger --- libraries/helpers.rb | 12 +++++------- spec/unit/libraries/homebrew_helpers_spec.rb | 2 +- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/libraries/helpers.rb b/libraries/helpers.rb index 7f7c93c..6e14cb6 100644 --- a/libraries/helpers.rb +++ b/libraries/helpers.rb @@ -27,7 +27,7 @@ # include Chef::Mixin::Which # end -module Homebrew +module HomebrewHelper require 'chef/mixin/homebrew' include Chef::Mixin::Homebrew @@ -35,7 +35,7 @@ module Homebrew include Chef::Mixin::ShellOut def self.included(base) - base.extend(Homebrew) + base.extend(HomebrewHelper) end def install_path @@ -71,8 +71,6 @@ def owner end end - extend self - private def calculate_owner @@ -98,6 +96,6 @@ def current_user end end # unless defined?(Homebrew) -# class HomebrewWrapper -# include Homebrew -# end +class HomebrewWrapper + include HomebrewHelper +end diff --git a/spec/unit/libraries/homebrew_helpers_spec.rb b/spec/unit/libraries/homebrew_helpers_spec.rb index a5830b2..b90669a 100644 --- a/spec/unit/libraries/homebrew_helpers_spec.rb +++ b/spec/unit/libraries/homebrew_helpers_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'chef/mixin/shell_out' -describe Homebrew do +describe HomebrewHelper do let(:opt_homebrew_path) { '/opt/homebrew' } let(:usr_local_homebrew_path) { '/usr/local' } let(:usr_local_repository_path) { '/usr/local/Homebrew' } From 15614021c221fb579b4ef744ca2cfd1377558e94 Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Mon, 20 Jan 2025 14:58:24 -0600 Subject: [PATCH 11/14] Test7 Signed-off-by: Corey Hemminger --- recipes/default.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/default.rb b/recipes/default.rb index 39c0aab..98e6dfa 100644 --- a/recipes/default.rb +++ b/recipes/default.rb @@ -19,7 +19,7 @@ # limitations under the License. # -unless Homebrew.exist? +unless HomebrewHelper.exist? homebrew_go = "#{Chef::Config[:file_cache_path]}/homebrew_go" # Grant Homebrew install script permission to execute From b37df3d2d1144ea6753309b0183ce14924a50dc4 Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Mon, 20 Jan 2025 16:34:39 -0600 Subject: [PATCH 12/14] test8 Signed-off-by: Corey Hemminger --- libraries/helpers.rb | 21 ++++++++++----------- recipes/default.rb | 2 +- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/libraries/helpers.rb b/libraries/helpers.rb index 6e14cb6..f19c4a6 100644 --- a/libraries/helpers.rb +++ b/libraries/helpers.rb @@ -19,23 +19,22 @@ # limitations under the License. # -# class HomebrewUserWrapper -# require 'chef/mixin/homebrew' -# include Chef::Mixin::Homebrew -# # require Chef::VERSION >= Chef::Version.new('18.6.2') ? 'chef/mixin/homebrew' : 'chef/mixin/homebrew_user' -# # include Chef::VERSION >= Chef::Version.new('18.6.2') ? Chef::Mixin::Homebrew : Chef::Mixin::HomebrewUser -# include Chef::Mixin::Which -# end - -module HomebrewHelper +class HomebrewUserWrapper require 'chef/mixin/homebrew' include Chef::Mixin::Homebrew + # require Chef::VERSION >= Chef::Version.new('18.6.2') ? 'chef/mixin/homebrew' : 'chef/mixin/homebrew_user' + # include Chef::VERSION >= Chef::Version.new('18.6.2') ? Chef::Mixin::Homebrew : Chef::Mixin::HomebrewUser + include Chef::Mixin::Which +end + +module Homebrew + extend self require 'mixlib/shellout' include Chef::Mixin::ShellOut def self.included(base) - base.extend(HomebrewHelper) + base.extend(Homebrew) end def install_path @@ -94,7 +93,7 @@ def sudo_user def current_user ENV['USER'] end -end # unless defined?(Homebrew) +end unless defined?(Homebrew) class HomebrewWrapper include HomebrewHelper diff --git a/recipes/default.rb b/recipes/default.rb index 98e6dfa..39c0aab 100644 --- a/recipes/default.rb +++ b/recipes/default.rb @@ -19,7 +19,7 @@ # limitations under the License. # -unless HomebrewHelper.exist? +unless Homebrew.exist? homebrew_go = "#{Chef::Config[:file_cache_path]}/homebrew_go" # Grant Homebrew install script permission to execute From 61a0583731e4ecd43debf70c6c1e7032de47deb6 Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Mon, 20 Jan 2025 16:44:27 -0600 Subject: [PATCH 13/14] test9 Signed-off-by: Corey Hemminger --- libraries/helpers.rb | 2 +- spec/unit/libraries/homebrew_helpers_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/helpers.rb b/libraries/helpers.rb index f19c4a6..f9a1167 100644 --- a/libraries/helpers.rb +++ b/libraries/helpers.rb @@ -96,5 +96,5 @@ def current_user end unless defined?(Homebrew) class HomebrewWrapper - include HomebrewHelper + include Homebrew end diff --git a/spec/unit/libraries/homebrew_helpers_spec.rb b/spec/unit/libraries/homebrew_helpers_spec.rb index b90669a..a5830b2 100644 --- a/spec/unit/libraries/homebrew_helpers_spec.rb +++ b/spec/unit/libraries/homebrew_helpers_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' require 'chef/mixin/shell_out' -describe HomebrewHelper do +describe Homebrew do let(:opt_homebrew_path) { '/opt/homebrew' } let(:usr_local_homebrew_path) { '/usr/local' } let(:usr_local_repository_path) { '/usr/local/Homebrew' } From 2554518436ea1fdb5cfbb3276f40c4740c2e0880 Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Tue, 21 Jan 2025 09:19:00 -0600 Subject: [PATCH 14/14] Most specs working Signed-off-by: Corey Hemminger --- libraries/helpers.rb | 54 ++++++++++++++------------- spec/recipes/cask_spec.rb | 2 +- spec/recipes/default_spec.rb | 2 +- spec/recipes/install_formulas_spec.rb | 2 +- 4 files changed, 31 insertions(+), 29 deletions(-) diff --git a/libraries/helpers.rb b/libraries/helpers.rb index f9a1167..c77cb93 100644 --- a/libraries/helpers.rb +++ b/libraries/helpers.rb @@ -62,39 +62,41 @@ def exist? def owner @owner ||= begin - find_homebrew_username - rescue Chef::Exceptions::CannotDetermineHomebrewOwner - calculate_owner + HomebrewUserWrapper.new.find_homebrew_username + rescue + Chef::Exceptions::CannotDetermineHomebrewPath end.tap do |owner| Chef::Log.debug("Homebrew owner is #{owner}") end end - private - - def calculate_owner - owner = homebrew_owner_attr || sudo_user || current_user - if owner == 'root' - raise Chef::Exceptions::User, - "Homebrew owner is 'root' which is not supported. " \ - "To set an explicit owner, please set node['homebrew']['owner']." - end - owner - end - - def homebrew_owner_attr - Chef.node['homebrew']['owner'] - end - - def sudo_user - ENV['SUDO_USER'] - end - - def current_user - ENV['USER'] - end + # private + # + # def calculate_owner + # owner = homebrew_owner_attr || sudo_user || current_user + # if owner == 'root' + # raise Chef::Exceptions::User, + # "Homebrew owner is 'root' which is not supported. " \ + # "To set an explicit owner, please set node['homebrew']['owner']." + # end + # owner + # end + # + # def homebrew_owner_attr + # Chef.node['homebrew']['owner'] + # end + # + # def sudo_user + # ENV['SUDO_USER'] + # end + # + # def current_user + # ENV['USER'] + # end end unless defined?(Homebrew) class HomebrewWrapper include Homebrew end + +Chef::Mixin::Homebrew.include(Homebrew) diff --git a/spec/recipes/cask_spec.rb b/spec/recipes/cask_spec.rb index 2fa5aa0..d8ada3e 100644 --- a/spec/recipes/cask_spec.rb +++ b/spec/recipes/cask_spec.rb @@ -7,7 +7,7 @@ end before(:each) do - allow(Homebrew).to receive(:owner).and_return('vagrant') + allow_any_instance_of(HomebrewUserWrapper).to receive(:find_homebrew_username).and_return('vagrant') end it 'manages the Cask Cache directory' do diff --git a/spec/recipes/default_spec.rb b/spec/recipes/default_spec.rb index 0cef0dc..582325c 100644 --- a/spec/recipes/default_spec.rb +++ b/spec/recipes/default_spec.rb @@ -8,7 +8,7 @@ end allow(Homebrew).to receive(:exist?).and_return(true) - allow(Homebrew).to receive(:owner).and_return('vagrant') + allow_any_instance_of(HomebrewUserWrapper).to receive(:find_homebrew_username).and_return('vagrant') stub_command('which git').and_return(true) end diff --git a/spec/recipes/install_formulas_spec.rb b/spec/recipes/install_formulas_spec.rb index feb2f1c..1f7982f 100644 --- a/spec/recipes/install_formulas_spec.rb +++ b/spec/recipes/install_formulas_spec.rb @@ -12,7 +12,7 @@ allow(resource).to receive_shell_out('/usr/local/bin/brew analytics state', user: 'vagrant') end stub_command('which git').and_return('/usr/local/bin/git') - allow(Homebrew).to receive(:owner).and_return('vagrant') + allow_any_instance_of(HomebrewUserWrapper).to receive(:find_homebrew_username).and_return('vagrant') allow(Homebrew).to receive(:exist?).and_return(true) end