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
|
end
|
||||||
|
|
||||||
def gcc_version_formula(version)
|
def gcc_version_formula(version)
|
||||||
gcc_formula = Formulary.factory("gcc")
|
gcc_name = "gcc-#{version}"
|
||||||
gcc_name = 'gcc' + version.delete('.')
|
gcc_version_name = "gcc#{version.delete('.')}"
|
||||||
|
|
||||||
if gcc_formula.opt_prefix.exist?
|
ivar = "@#{gcc_version_name}_version"
|
||||||
return gcc_formula
|
return instance_variable_get(ivar) if instance_variable_defined?(ivar)
|
||||||
end
|
|
||||||
|
|
||||||
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?
|
formula = if gcc_path.exist?
|
||||||
gcc_versions_formula
|
gcc_formula
|
||||||
|
elsif gcc_versions_path.exist?
|
||||||
|
Formulary.factory gcc_versions_formula
|
||||||
elsif gcc_formula.version.to_s.include?(version)
|
elsif gcc_formula.version.to_s.include?(version)
|
||||||
gcc_formula
|
gcc_formula
|
||||||
elsif gcc_versions_formula
|
elsif (gcc_versions_formula = Formulary.factory(gcc_version_name) rescue nil)
|
||||||
gcc_versions_formula
|
gcc_versions_formula
|
||||||
else
|
else
|
||||||
Formulary.factory(gcc_name)
|
gcc_formula
|
||||||
end
|
end
|
||||||
|
|
||||||
|
instance_variable_set(ivar, formula)
|
||||||
end
|
end
|
||||||
|
|
||||||
def warn_about_non_apple_gcc(gcc)
|
def warn_about_non_apple_gcc(gcc)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user