Use the built-in git resource from Chef instead. poise/application does not work on modern Chef.
		
			
				
	
	
		
			78 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
unified_mode true if respond_to? :unified_mode
 | 
						|
 | 
						|
provides :homebrew_update
 | 
						|
 | 
						|
description 'Use the **homebrew_update** resource to manage Homebrew repository updates on MacOS.'
 | 
						|
introduced '16.2'
 | 
						|
examples <<~DOC
 | 
						|
  **Update the hombrew repository data at a specified interval**:
 | 
						|
  ```ruby
 | 
						|
  homebrew_update 'all platforms' do
 | 
						|
    frequency 86400
 | 
						|
    action :periodic
 | 
						|
  end
 | 
						|
  ```
 | 
						|
  **Update the Homebrew repository at the start of a Chef Infra Client run**:
 | 
						|
  ```ruby
 | 
						|
  homebrew_update 'update'
 | 
						|
  ```
 | 
						|
DOC
 | 
						|
 | 
						|
# allow bare homebrew_update with no name
 | 
						|
property :name, String, default: ''
 | 
						|
 | 
						|
property :frequency, Integer,
 | 
						|
  description: 'Determines how frequently (in seconds) Homebrew updates are made. Use this property when the `:periodic` action is specified.',
 | 
						|
  default: 86_400
 | 
						|
 | 
						|
default_action :periodic
 | 
						|
 | 
						|
action_class do
 | 
						|
  BREW_STAMP_DIR = '/var/lib/homebrew/periodic'.freeze
 | 
						|
  BREW_STAMP = "#{BREW_STAMP_DIR}/update-success-stamp".freeze
 | 
						|
 | 
						|
  # Determines whether we need to run `homebrew update`
 | 
						|
  #
 | 
						|
  # @return [Boolean]
 | 
						|
  def brew_up_to_date?
 | 
						|
    ::File.exist?(BREW_STAMP) &&
 | 
						|
      ::File.mtime(BREW_STAMP) > Time.now - new_resource.frequency
 | 
						|
  end
 | 
						|
 | 
						|
  def do_update
 | 
						|
    directory BREW_STAMP_DIR do
 | 
						|
      recursive true
 | 
						|
    end
 | 
						|
 | 
						|
    file BREW_STAMP do
 | 
						|
      content "BREW::Update::Post-Invoke-Success\n"
 | 
						|
      action :create_if_missing
 | 
						|
    end
 | 
						|
 | 
						|
    execute 'brew update' do
 | 
						|
      command %w(brew update)
 | 
						|
      default_env true
 | 
						|
      user Homebrew.owner
 | 
						|
      notifies :touch, "file[#{BREW_STAMP}]", :immediately
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
action :periodic do
 | 
						|
  return unless mac_os_x?
 | 
						|
 | 
						|
  unless brew_up_to_date?
 | 
						|
    converge_by 'update new lists of packages' do
 | 
						|
      do_update
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
action :update do
 | 
						|
  return unless mac_os_x?
 | 
						|
 | 
						|
  converge_by 'force update new lists of packages' do
 | 
						|
    do_update
 | 
						|
  end
 | 
						|
end
 |