diff options
| author | Mike McQuaid | 2017-02-21 17:28:18 +0000 |
|---|---|---|
| committer | GitHub | 2017-02-21 17:28:18 +0000 |
| commit | 8a4bfff2c0d125a90af0bd530cd8e7a9dd120a91 (patch) | |
| tree | bd2b49169067bf0d271fecf7930998c5b9312c76 /Library | |
| parent | 6344989ca7d8fadd6aa102ef2a931e9d0c39ec52 (diff) | |
| parent | 68bd744d0e44e40a5e3269bb16030134d937a524 (diff) | |
| download | brew-8a4bfff2c0d125a90af0bd530cd8e7a9dd120a91.tar.bz2 | |
Merge pull request #1850 from MikeMcQuaid/audit-version-aliases
audit: check for version aliases.
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/dev-cmd/audit.rb | 24 | ||||
| -rw-r--r-- | Library/Homebrew/readall.rb | 19 |
2 files changed, 32 insertions, 11 deletions
diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index 9ffef0f99..9da5d28b4 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -295,6 +295,27 @@ class FormulaAuditor problem "File should end with a newline" unless text.trailing_newline? + versioned_formulae = Dir[formula.path.to_s.gsub(/\.rb$/, "@*.rb")] + needs_versioned_alias = !versioned_formulae.empty? && + formula.tap && + formula.aliases.grep(/.@\d/).empty? + if needs_versioned_alias + _, last_alias_version = File.basename(versioned_formulae.sort.reverse.first) + .gsub(/\.rb$/, "") + .split("@") + major, minor, = formula.version.to_s.split(".") + alias_name = if last_alias_version.split(".").length == 1 + "#{formula.name}@#{major}" + else + "#{formula.name}@#{major}.#{minor}" + end + problem <<-EOS.undent + Formula has other versions so create an alias: + cd #{formula.tap.alias_dir} + ln -s #{formula.path.to_s.gsub(formula.tap.path, "..")} #{alias_name} + EOS + end + return unless @strict present = audit_components @@ -410,7 +431,8 @@ class FormulaAuditor problem "Dependency '#{dep.name}' was renamed; use new name '#{dep_f.name}'." end - if @@aliases.include?(dep.name) + if @@aliases.include?(dep.name) && + (core_formula? || !dep_f.versioned_formula?) problem "Dependency '#{dep.name}' is an alias; use the canonical name '#{dep.to_formula.full_name}'." end diff --git a/Library/Homebrew/readall.rb b/Library/Homebrew/readall.rb index 3dd7075ec..52addfa87 100644 --- a/Library/Homebrew/readall.rb +++ b/Library/Homebrew/readall.rb @@ -24,16 +24,15 @@ module Readall !failed end - def valid_aliases?(alias_dirs) + def valid_aliases?(alias_dir, formula_dir) + return false unless alias_dir.directory? + failed = false - alias_dirs.each do |alias_dir| - next unless alias_dir.directory? - alias_dir.children.each do |f| - next unless f.symlink? - next if f.file? - onoe "Broken alias: #{f}" - failed = true - end + alias_dir.each_child do |f| + next unless f.symlink? + next if f.file? && !(formula_dir/"#{f.basename}.rb").exist? + onoe "Broken alias: #{f}" + failed = true end !failed end @@ -57,7 +56,7 @@ module Readall def valid_tap?(tap, options = {}) failed = false if options[:aliases] - valid_aliases = valid_aliases?([tap.alias_dir]) + valid_aliases = valid_aliases?(tap.alias_dir, tap.formula_dir) failed = true unless valid_aliases end valid_formulae = valid_formulae?(tap.formula_files) |
