buo / homebrew-cask-upgrade

A command line tool for upgrading every outdated app installed by Homebrew Cask
MIT License
2.4k stars 90 forks source link

'negative argument' when runs in eshell #91

Closed lukertty closed 6 years ago

lukertty commented 6 years ago

Hi, homebrew-cask-upgrade is broken inside Emacs and eshell...

What is eshell

Backtrace:

Error: negative argument
/usr/local/Homebrew/Library/Taps/buo/homebrew-cask-upgrade/lib/extend/formatter.rb:87:in `*'
/usr/local/Homebrew/Library/Taps/buo/homebrew-cask-upgrade/lib/extend/formatter.rb:87:in `block in table'
/usr/local/Homebrew/Library/Taps/buo/homebrew-cask-upgrade/lib/extend/formatter.rb:77:in `each'
/usr/local/Homebrew/Library/Taps/buo/homebrew-cask-upgrade/lib/extend/formatter.rb:77:in `each_with_index'
/usr/local/Homebrew/Library/Taps/buo/homebrew-cask-upgrade/lib/extend/formatter.rb:77:in `table'
/usr/local/Homebrew/Library/Taps/buo/homebrew-cask-upgrade/lib/bcu.rb:143:in `print_app_table'
/usr/local/Homebrew/Library/Taps/buo/homebrew-cask-upgrade/lib/bcu.rb:98:in `find_outdated_apps'
/usr/local/Homebrew/Library/Taps/buo/homebrew-cask-upgrade/lib/bcu.rb:24:in `process'
/usr/local/Homebrew/Library/Taps/buo/homebrew-cask-upgrade/cmd/brew-cu.rb:34:in `<top (required)>'
/usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
/usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
/usr/local/Homebrew/Library/Homebrew/utils.rb:18:in `require?'
/usr/local/Homebrew/Library/Homebrew/brew.rb:107:in `<main>'

$ brew cu --cleanup ```sh ==> Options Include auto-update (-a): false Include latest (-f): false ==> Updating Homebrew Checking if we need to fetch /usr/local/Homebrew... Checking if we need to fetch /usr/local/Homebrew/Library/Taps/buo/homebrew-cask-upgrade... Checking if we need to fetch /usr/local/Homebrew/Library/Taps/caskroom/homebrew-cask... Checking if we need to fetch /usr/local/Homebrew/Library/Taps/caskroom/homebrew-fonts... Checking if we need to fetch /usr/local/Homebrew/Library/Taps/caskroom/homebrew-versions... Checking if we need to fetch /usr/local/Homebrew/Library/Taps/d12frosted/homebrew-emacs-plus... Checking if we need to fetch /usr/local/Homebrew/Library/Taps/heroku/homebrew-brew... Checking if we need to fetch /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core... Checking if we need to fetch /usr/local/Homebrew/Library/Taps/homebrew/homebrew-services... Checking if we need to fetch /usr/local/Homebrew/Library/Taps/koekeishiya/homebrew-formulae... Checking if we need to fetch /usr/local/Homebrew/Library/Taps/railwaycat/homebrew-emacsmacport... Already up-to-date. ==> Finding outdated apps Error: negative argument /usr/local/Homebrew/Library/Taps/buo/homebrew-cask-upgrade/lib/extend/formatter.rb:87:in `*' /usr/local/Homebrew/Library/Taps/buo/homebrew-cask-upgrade/lib/extend/formatter.rb:87:in `block in table' /usr/local/Homebrew/Library/Taps/buo/homebrew-cask-upgrade/lib/extend/formatter.rb:77:in `each' /usr/local/Homebrew/Library/Taps/buo/homebrew-cask-upgrade/lib/extend/formatter.rb:77:in `each_with_index' /usr/local/Homebrew/Library/Taps/buo/homebrew-cask-upgrade/lib/extend/formatter.rb:77:in `table' /usr/local/Homebrew/Library/Taps/buo/homebrew-cask-upgrade/lib/bcu.rb:143:in `print_app_table' /usr/local/Homebrew/Library/Taps/buo/homebrew-cask-upgrade/lib/bcu.rb:98:in `find_outdated_apps' /usr/local/Homebrew/Library/Taps/buo/homebrew-cask-upgrade/lib/bcu.rb:24:in `process' /usr/local/Homebrew/Library/Taps/buo/homebrew-cask-upgrade/cmd/brew-cu.rb:34:in `' /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require' /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require' /usr/local/Homebrew/Library/Homebrew/utils.rb:18:in `require?' /usr/local/Homebrew/Library/Homebrew/brew.rb:107:in `
' ```

$ env ```sh Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.KNOAZ2dp0o/Render CLASSPATH=.:/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/lib:/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/jre/lib COLUMNS=190 COMMAND_MODE=unix2003 HOME=/Users/lukertty HOMEBREW_GITHUB_API_TOKEN=****************************************** HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_VERBOSE=1 JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home JRE_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/jre LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_MONETARY=en_US.UTF-8 LC_NUMERIC=en_US.UTF-8 LC_TIME=en_US.UTF-8 LINES=55 LOGNAME=lukertty OLDPWD=/Users/lukertty/.emacs.d/lisp PAGER=cat PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/MacGPG2/bin:/Applications/Wireshark.app/Contents/MacOS:/usr/local/opt/sqlite/bin PWD=/Users/lukertty/.emacs.d SECURITYSESSIONID=186a6 SHELL=/usr/local/bin/zsh SHLVL=20 SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.3c7AWJUiIX/Listeners TERM=emacs TMPDIR=/var/folders/zh/2mz6q01x71v52zwmzxnlx2g80000gn/T/ USER=lukertty XPC_FLAGS=0x0 XPC_SERVICE_NAME=0 _=/usr/local/Cellar/emacs/26.0.91/Emacs.app/Contents/MacOS/Emacs __CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0 http_proxy=http://127.0.0.1:8123 https_proxy=http://127.0.0.1:8123 ```

Note the $TERM is emacs.

Here is the source code, it seems the padding is negative...

    # Print table header
    rows.shift.each_with_index do |th, i|
      string = "#{Tty.underline}#{th.value}#{Tty.reset}"
      padding = col_widths[i] - th.value.length
      if th.align == "center"
        padding_left = padding / 2
        padding_right = padding - padding_left
        padding_right += gutter unless i - 1 == cols
        output << "#{" " * padding_left}#{string}#{" " * padding_right}"
      else
        padding += gutter unless i - 1 == cols
        output << "#{string}#{" " * padding}"
      end
    end
    output << "\n"

Any ideas?

lukertty commented 6 years ago

Fixed in Homebrew/brew#4241