module Chef::Mixin::HomebrewUser
Public Instance Methods
find_homebrew_uid(provided_user = nil)
click to toggle source
This tries to find the user to execute brew as. If a user is provided, that overrides the brew executable user. It is an error condition if the brew executable owner is root or we cannot find the brew executable. @param [String, Integer] provided_user @return [Integer] UID of the user
# File lib/chef/mixin/homebrew_user.rb, line 39 def find_homebrew_uid(provided_user = nil) # They could provide us a user name or a UID if provided_user return provided_user if provided_user.is_a? Integer return Etc.getpwnam(provided_user).uid end @homebrew_owner_uid ||= calculate_owner @homebrew_owner_uid end
find_homebrew_username(provided_user = nil)
click to toggle source
Use #find_homebrew_uid to return the UID and then lookup the name from that UID because sometimes you want the name not the UID @param [String, Integer] provided_user @return [String] username
# File lib/chef/mixin/homebrew_user.rb, line 54 def find_homebrew_username(provided_user = nil) @homebrew_owner_username ||= Etc.getpwuid(find_homebrew_uid(provided_user)).name @homebrew_owner_username end
Private Instance Methods
calculate_owner()
click to toggle source
# File lib/chef/mixin/homebrew_user.rb, line 61 def calculate_owner default_brew_path = "/usr/local/bin/brew" if ::File.exist?(default_brew_path) # By default, this follows symlinks which is what we want owner = ::File.stat(default_brew_path).uid elsif (brew_path = shell_out("which brew").stdout.strip) && !brew_path.empty? owner = ::File.stat(brew_path).uid else raise Chef::Exceptions::CannotDetermineHomebrewOwner, 'Could not find the "brew" executable in /usr/local/bin or anywhere on the path.' end Chef::Log.debug "Found Homebrew owner #{Etc.getpwuid(owner).name}; executing `brew` commands as them" owner end