diff --git a/Library/Homebrew/emoji.rb b/Library/Homebrew/emoji.rb new file mode 100644 index 0000000000..8c58ca8952 --- /dev/null +++ b/Library/Homebrew/emoji.rb @@ -0,0 +1,24 @@ +module Emoji + class << self + def tick + # necessary for 1.8.7 unicode handling since many installs are on 1.8.7 + @tick ||= ["2714".hex].pack("U*") + end + + def cross + # necessary for 1.8.7 unicode handling since many installs are on 1.8.7 + @cross ||= ["2718".hex].pack("U*") + end + + def install_badge + ENV["HOMEBREW_INSTALL_BADGE"] || "\xf0\x9f\x8d\xba" + end + + def enabled? + !ENV["HOMEBREW_NO_EMOJI"] + end + alias generic_enabled? enabled? + end +end + +require "extend/os/emoji" diff --git a/Library/Homebrew/extend/os/emoji.rb b/Library/Homebrew/extend/os/emoji.rb new file mode 100644 index 0000000000..fe3e7f44e5 --- /dev/null +++ b/Library/Homebrew/extend/os/emoji.rb @@ -0,0 +1,6 @@ +require "os" +require "emoji" + +if OS.mac? + require "extend/os/mac/emoji" +end diff --git a/Library/Homebrew/extend/os/mac/emoji.rb b/Library/Homebrew/extend/os/mac/emoji.rb new file mode 100644 index 0000000000..79c0c78e36 --- /dev/null +++ b/Library/Homebrew/extend/os/mac/emoji.rb @@ -0,0 +1,7 @@ +module Emoji + class << self + def enabled? + generic_enabled? && MacOS.version >= :lion + end + end +end diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index ae594d9f7b..e44c78087a 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -13,6 +13,7 @@ require "hooks/bottles" require "debrew" require "sandbox" require "requirements/cctools_requirement" +require "emoji" class FormulaInstaller include FormulaCellarChecks @@ -492,13 +493,9 @@ class FormulaInstaller unlock end - def emoji - ENV["HOMEBREW_INSTALL_BADGE"] || "\xf0\x9f\x8d\xba" - end - def summary s = "" - s << "#{emoji} " if MacOS.version >= :lion && !ENV["HOMEBREW_NO_EMOJI"] + s << "#{Emoji.install_badge} " if Emoji.enabled? s << "#{formula.prefix}: #{formula.prefix.abv}" s << ", built in #{pretty_duration build_time}" if build_time s diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index 61d286da54..86c83f9f91 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -1,4 +1,5 @@ require "pathname" +require "emoji" require "exceptions" require "utils/hash" require "utils/json" @@ -12,16 +13,6 @@ require "utils/curl" class Tty class << self - def tick - # necessary for 1.8.7 unicode handling since many installs are on 1.8.7 - @tick ||= ["2714".hex].pack("U*") - end - - def cross - # necessary for 1.8.7 unicode handling since many installs are on 1.8.7 - @cross ||= ["2718".hex].pack("U*") - end - def strip_ansi(string) string.gsub(/\033\[\d+(;\d+)*m/, "") end @@ -124,20 +115,20 @@ end def pretty_installed(f) if !$stdout.tty? "#{f}" - elsif ENV["HOMEBREW_NO_EMOJI"] - "#{Tty.highlight}#{Tty.green}#{f} (installed)#{Tty.reset}" + elsif Emoji.enabled? + "#{Tty.highlight}#{f} #{Tty.green}#{Emoji.tick}#{Tty.reset}" else - "#{Tty.highlight}#{f} #{Tty.green}#{Tty.tick}#{Tty.reset}" + "#{Tty.highlight}#{Tty.green}#{f} (installed)#{Tty.reset}" end end def pretty_uninstalled(f) if !$stdout.tty? "#{f}" - elsif ENV["HOMEBREW_NO_EMOJI"] - "#{Tty.red}#{f} (uninstalled)#{Tty.reset}" + elsif Emoji.enabled? + "#{f} #{Tty.red}#{Emoji.cross}#{Tty.reset}" else - "#{f} #{Tty.red}#{Tty.cross}#{Tty.reset}" + "#{Tty.red}#{f} (uninstalled)#{Tty.reset}" end end