shared: refactor gcc_version_formula.
Avoid throwing unnecessary exceptions by checking for paths existing and creating formulae as late as possible. Additionally use instance variables for some caching.
This commit is contained in:
parent
1b0647d747
commit
c92a16e2ce
@ -184,24 +184,30 @@ module SharedEnvExtension
|
||||
end
|
||||
|
||||
def gcc_version_formula(version)
|
||||
gcc_formula = Formulary.factory("gcc")
|
||||
gcc_name = 'gcc' + version.delete('.')
|
||||
gcc_name = "gcc-#{version}"
|
||||
gcc_version_name = "gcc#{version.delete('.')}"
|
||||
|
||||
if gcc_formula.opt_prefix.exist?
|
||||
return gcc_formula
|
||||
end
|
||||
ivar = "@#{gcc_version_name}_version"
|
||||
return instance_variable_get(ivar) if instance_variable_defined?(ivar)
|
||||
|
||||
gcc_versions_formula = Formulary.factory(gcc_name) rescue nil
|
||||
gcc_path = HOMEBREW_PREFIX.join "opt/gcc/bin/#{gcc_name}"
|
||||
gcc_formula = Formulary.factory "gcc"
|
||||
gcc_versions_path = \
|
||||
HOMEBREW_PREFIX.join "opt/#{gcc_version_name}/bin/#{gcc_name}"
|
||||
|
||||
if gcc_versions_formula && gcc_versions_formula.opt_prefix.exist?
|
||||
gcc_versions_formula
|
||||
formula = if gcc_path.exist?
|
||||
gcc_formula
|
||||
elsif gcc_versions_path.exist?
|
||||
Formulary.factory gcc_versions_formula
|
||||
elsif gcc_formula.version.to_s.include?(version)
|
||||
gcc_formula
|
||||
elsif gcc_versions_formula
|
||||
elsif (gcc_versions_formula = Formulary.factory(gcc_version_name) rescue nil)
|
||||
gcc_versions_formula
|
||||
else
|
||||
Formulary.factory(gcc_name)
|
||||
gcc_formula
|
||||
end
|
||||
|
||||
instance_variable_set(ivar, formula)
|
||||
end
|
||||
|
||||
def warn_about_non_apple_gcc(gcc)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user