From ca59d6fbee26ab5a79663ae6a7f22801ce2f0538 Mon Sep 17 00:00:00 2001 From: Xu Cheng Date: Wed, 20 Jan 2016 19:41:42 +0800 Subject: [PATCH] update: improve repo_var * use HOMEBREW_REPOSITORY instead of HOMEBREW_PREFIX * better performance: * update-bash: avoid shellout * update-report: use strip_prefix and tr * more robust: * explicitly handle the case when repo is HOMEBREW_REPOSITORY to avoid to handle the trailing backslash. * handle both lower case and upper case when stripping non alpha and digital characters. --- Library/Homebrew/cmd/update-bash.sh | 14 +++++++++----- Library/Homebrew/cmd/update-report.rb | 13 ++++++++----- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/Library/Homebrew/cmd/update-bash.sh b/Library/Homebrew/cmd/update-bash.sh index 27cbd32ed7..05e7322ba8 100755 --- a/Library/Homebrew/cmd/update-bash.sh +++ b/Library/Homebrew/cmd/update-bash.sh @@ -45,11 +45,15 @@ git_init_if_necessary() { } repo_var() { - echo "$1" | - sed -e "s|$HOMEBREW_PREFIX||g" \ - -e 's|Library/Taps/||g' \ - -e 's|[^a-z0-9]|_|g' | - tr "[:lower:]" "[:upper:]" + local repo_var="$1" + if [[ "$repo_var" = "$HOMEBREW_REPOSITORY" ]] + then + repo_var="" + else + repo_var="${repo_var#"$HOMEBREW_LIBRARY/Taps"}" + repo_var="$(echo -n "$repo_var" | tr -C "A-Za-z0-9" "_" | tr "[:lower:]" "[:upper:]")" + fi + echo "$repo_var" } upstream_branch() { diff --git a/Library/Homebrew/cmd/update-report.rb b/Library/Homebrew/cmd/update-report.rb index b915f44f21..92bf87daf1 100644 --- a/Library/Homebrew/cmd/update-report.rb +++ b/Library/Homebrew/cmd/update-report.rb @@ -151,11 +151,14 @@ class Reporter attr_reader :initial_revision, :current_revision, :repository def self.repository_variable(repository) - repository.to_s. - gsub("#{HOMEBREW_PREFIX}", ""). - gsub("Library/Taps/", ""). - gsub(/[^a-z0-9]/, "_"). - upcase + if repository == HOMEBREW_REPOSITORY + "" + else + repository.to_s. + strip_prefix(Tap::TAP_DIRECTORY.to_s). + tr("^A-Za-z0-9", "_"). + upcase + end end def initialize(repository)