Class: Ruuuby::MetaData::BrewAPI

Inherits:
RuuubyAPIComponentCLI show all
Defined in:
lib/ruuuby/ruuuby/api/api_brew.rb

Overview

TODO: github.com/Homebrew/brew/releases TODO: www.unixtutorial.org/brew-cask-vs-brew-formula/ TODO: brew.sh/

| term | definition | | ——- | ——— | | formula | | | cask | | | tap | |

Instance Attribute Summary

Attributes inherited from RuuubyAPIComponentCLI

#cmd_start

Attributes inherited from RuuubyEngineComponent

#versionable

Instance Method Summary collapse

Methods inherited from RuuubyAPIComponentCLI

#_calculate_version, #executed_cmd_returned_expected_output, #run_cmd, #run_cmd_raw

Methods inherited from RuuubyAPIComponent

#version

Methods inherited from RuuubyEngineComponent

#∅?

Constructor Details

#initialize(engine) ⇒ BrewAPI

Returns a new instance of BrewAPI.



24
25
26
27
28
# File 'lib/ruuuby/ruuuby/api/api_brew.rb', line 24

def initialize(engine)
  super(engine, 'brew')
  @path_openssl         = nil
  @env_var_no_analytics = nil
end

Instance Method Details

#analytics?Boolean

Returns:

  • (Boolean)

Raises:

  • (RuntimeError)


74
# File 'lib/ruuuby/ruuuby/api/api_brew.rb', line 74

def analytics?; self.env_var_no_analytics ? false : self.run_cmd('analytics state') == 'Analytics are disabled.'; end

#analytics_disabled?Boolean

Returns:

  • (Boolean)


77
# File 'lib/ruuuby/ruuuby/api/api_brew.rb', line 77

def analytics_disabled?; self.env_var_no_analytics; end

#analytics_set_offString

Returns:

Raises:

  • (RuntimeError)


93
94
95
96
97
98
99
# File 'lib/ruuuby/ruuuby/api/api_brew.rb', line 93

def analytics_set_off
  if self.env_var_no_analytics
    🛑 ::RuntimeError.new('| {🍺}-> m{analytics_set_off} called when the ENV_VAR{HOMEBREW_NO_ANALYTICS} is set to{1}, thus function call would have no effect |')
  else
    self.run_cmd('analytics off')
  end
end

#analytics_set_onString

Returns:

Raises:

  • (RuntimeError)


82
83
84
85
86
87
88
# File 'lib/ruuuby/ruuuby/api/api_brew.rb', line 82

def analytics_set_on;
  if self.env_var_no_analytics
    🛑 ::RuntimeError.new('| {🍺}-> m{analytics_set_on} called when the ENV_VAR{HOMEBREW_NO_ANALYTICS} is set to{1}, thus function call would have no effect |')
  else
    self.run_cmd('analytics on')
  end
end

#cleanupString

Returns:

Raises:

  • (RuntimeError)


109
# File 'lib/ruuuby/ruuuby/api/api_brew.rb', line 109

def cleanup; self.run_cmd('cleanup --verbose'); end

#doctorString

Returns:

Raises:

  • (RuntimeError)


104
# File 'lib/ruuuby/ruuuby/api/api_brew.rb', line 104

def doctor; self.run_cmd('doctor'); end

#env_var_no_analyticsBoolean

Returns:

  • (Boolean)


170
171
172
173
174
175
176
177
178
179
# File 'lib/ruuuby/ruuuby/api/api_brew.rb', line 170

def env_var_no_analytics
  if @env_var_no_analytics.nil?
    if ENV.∃?('HOMEBREW_NO_ANALYTICS')
      @env_var_no_analytics = ENV.fetch🔑('HOMEBREW_NO_ANALYTICS') == '1'
    else
      @env_var_no_analytics = false
    end
  end
  @env_var_no_analytics
end

#healthy?(production_standards = false) ⇒ Boolean

Parameters:

  • production_standards (Boolean) (defaults to: false)

Returns:

  • (Boolean)

Raises:

  • (RuntimeError)


47
48
49
50
51
52
53
54
55
56
57
# File 'lib/ruuuby/ruuuby/api/api_brew.rb', line 47

def healthy?(production_standards=false)
  if self.doctor == 'Your system is ready to brew.'
    if production_standards
      return self.analytics? == false
    else
      return true
    end
  else
    false
  end
end

#openssl_pathString

Returns:



147
148
149
150
151
152
153
# File 'lib/ruuuby/ruuuby/api/api_brew.rb', line 147

def openssl_path
  if @path_openssl.∅?
    require 'openssl'
    @path_openssl = self.package_prefix('[email protected]')
  end
  @path_openssl
end

#openssl_path_executableString

Returns:

Raises:

  • (RuntimeError)


144
# File 'lib/ruuuby/ruuuby/api/api_brew.rb', line 144

def openssl_path_executable; "#{self.openssl_path}/bin/openssl"; end

#openssl_versionString

Returns:

Raises:

  • (RuntimeError)


139
# File 'lib/ruuuby/ruuuby/api/api_brew.rb', line 139

def openssl_version; self.run_cmd_raw("#{self.openssl_path}/bin/openssl version"); end

#package_prefix(package_name) ⇒ String

Parameters:

Returns:

Raises:

  • (ArgumentError)


116
117
118
119
# File 'lib/ruuuby/ruuuby/api/api_brew.rb', line 116

def package_prefix(package_name)
  🛑str❓('package_name', package_name)
  self.run_cmd("--prefix #{package_name}")
end

#∃_h_file?(required_version, required_header) ⇒ Boolean

Parameters:

Returns:

  • (Boolean)

Raises:

  • (ArgumentError)


161
162
163
164
165
# File 'lib/ruuuby/ruuuby/api/api_brew.rb', line 161

def ∃_h_file?(required_version, required_header)
  🛑strs❓([required_version, required_header])
  result = @engine.api.run_cmd!("find /usr/local/Cellar -name \"#{required_header}\"")
  result.∋?(required_version) && result.∋?("include/#{required_header}")
end