brewlog/README.md
robocopAlpha cc128ac329 Squashed commit of the following:
commit 89a3b71e24
Author: robocopAlpha <35454738+robocopAlpha@users.noreply.github.com>
Date:   Tue Aug 4 15:50:36 2020 +0300

    update readme

    Improve wording.

commit 34f328de59
Author: robocopAlpha <35454738+robocopAlpha@users.noreply.github.com>
Date:   Tue Aug 4 13:55:02 2020 +0300

    Update install.sh

    Fix checking if the installation location is writable or not

commit 6296379a55
Author: robocopAlpha <35454738+robocopAlpha@users.noreply.github.com>
Date:   Tue Aug 4 13:50:33 2020 +0300

    change order of checking shopt nocasematch

commit 6889284f6b
Author: robocopAlpha <35454738+robocopAlpha@users.noreply.github.com>
Date:   Tue Aug 4 13:48:20 2020 +0300

    Installs in the same place as homebrew

commit f67e850575
Author: robocopAlpha <35454738+robocopAlpha@users.noreply.github.com>
Date:   Tue Aug 4 13:37:25 2020 +0300

    Trying to install to the same place as homebrew
2020-08-04 15:51:13 +03:00

4.1 KiB
Raw Blame History

GitHub license GitHub issues GitHub last commit (branch) Bash

brewlog

Why?

I wrote brewlog to patch a minor but IMHO a significant shortcoming I feel homebrew has had for very long time. It is the ability to log what homebrew does. IMO it doesnt have to be something very sophisticated i.e. integration with system-log, etc.. So, I worked on a basic idea I got from this particular issue and developed brewlog.

Why bother with a log file, when brew is so stable?

brew is generally very stable, but occasionally it breaks compatibility when it is upgrading some packages and removes some “obsolete” versions. Generally this is fine, but in certain cases the user wants to retain those packages for compatibility with something else. I recently faced a problem due to this. While brewlog cant prevent something like this from happening, but it logs brew activity so it is much easier to troubleshoot (by identifying what package(s) were added/removed).

What can brewlog do ?

brewlog is simple solution that can:

  • log homebrew/linuxbrew activity (STDOUT and STDERR) to a logfile (default: ~/Logs/brew.log)
    • because brewlog is a a new command (and not an alias), the user still retains the freedom to run brew [command] [formula] in case they do not want to log some brew activity.
  • tail the brew.log file to display selected number of lines.
  • archive the brew.log file (user has to explicitly invoke this command to archive).
    • The brew.log is removed during archiving, a new log file is created on the next run of brewlog.

Now you're easily able to track the changes made to your system while running brew upgradeor brew cleanup.

How to use

# Review/Modify code
curl -sSL 'https://raw.githubusercontent.com/robocopAlpha/brewlog/master/install.sh'
# Install
curl -sSL 'https://raw.githubusercontent.com/robocopAlpha/brewlog/master/install.sh' | bash

# Show help
brewlog --help

# Running homebrew commands
brewlog install ffmpeg
brewlog info ffmpeg

# Even complex brew commands work with brewlog
brewlog list --multiple --versions

Detailed usage

brewlog - allows you to log your homebrew/linuxbrew operations to a file.
Usage:
   brewlog [brew command] [arguments to homebrew]
e.g.
   brewlog install ffmpeg, invokes "brew install ffmpeg" and writes output to a log file.

   --help             Show help
   --brew-help        show brew commands (alias to "brew help")

OPTIONS:
    version            Show brewlog version
    archive            Archives the current log file as .xz
    tail [-n INT]      Show the last "INT" lines from the log file.
                                  (default: last 15 lines)

Homebrew/Linuxbrew Function examples:
  brewlog install [formula]     Install formula
  brewlog uninstall [formula]   Uninstall formula
  brewlog deps [formula]        Show dependencies for formula
  brewlog outdated              Show outdated formulae
  brewlog upgrade [formula]     Upgrade all (or entered) brew formula
  ... ... ...
     Find out more homebrew commands by running "brew --help".

Notice about the command brew log:

  • Not to be confused with brew log which shows the commit history (similar to git log).
  • I'm open to a new name, but for now as I personally dont use brew log, I had no “merge conflicts” in my brain while assigning brewlog to achive my desired result of logging brew output :) [IMHO brew history might have been a better name for brew log]

© Deepankar Chakroborty, 2020. All rights reserved.