Adding a Pusheen Tap for homebrew.

Posted on December 28, 2015

Note: My appologies, dear readers, I appear to by having some issues with the font, and it's squishing poor Pusheen. If anyone has any ideas, I would like to fix this.

░░░▐▀▄░░░░░░░▄▀▌░░░▄▄▄▄▄▄▄░░░░░░░░░░░░░
░░░▌▒▒▀▄▄▄▄▄▀▒▒▐▄▀▀▒██▒██▒▀▀▄░░░░░░░░░░
░░▐▒▒▒▒▀▒▀▒▀▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▀▄░░░░░░░░
░░▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▄▒▒▒▒▒▒▒▒▒▒▒▒▀▄░░░░░░
▀█▒▒▒█▌▒▒█▒▒▐█▒▒▒▀▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▌░░░░░
▀▌▒▒▒▒▒▒▀▒▀▒▒▒▒▒▒▀▀▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐░░░▄▄
▐▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▌▄█▒█
▐▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█▒█▀░
▐▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█▀░░░
▐▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▌░░░░
░▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐░░░░░
░▐▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▌░░░░░
░░▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐░░░░░░
░░▐▄▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▄▌░░░░░░
░░░░▀▄▄▀▀▀▀▀▄▄▀▀▀▀▀▀▀▄▄▀▀▀▀▀▄▄▀░░░░░░░░

One of my friends on facebook posted a pic of a terminal command that printed out the ever adorable pusheen.

Someone else said "0/10, not on homebrew", and I knew I had a new mission.

Since this was an incredibly silly mission, I didn't actually expect to get this accepted into homebrew-core, so I made my own tap as it is known, my own public set of formulae. The end result is now you can run:

brew tap tbelaire/silly-things
brew install pusheen
pusheen

And enjoy this on your very own brew-compatible computer.

"How did you perform this magic?" one might ask. I'll be happy to layout the steps.

First off, create the command. Since I was super amused by the idea of cating this cat with /bin/cat, so a cat in /bin will print out this cat who is not currently in a bin, but would happily jump into one if the opportunity arose.

So my "script" is just:

#!/bin/cat
░░░▐▀▄░░░░░░░▄▀▌░░░▄▄▄▄▄▄▄░░░░░░░░░░░░░
░░░▌▒▒▀▄▄▄▄▄▀▒▒▐▄▀▀▒██▒██▒▀▀▄░░░░░░░░░░
░░▐▒▒▒▒▀▒▀▒▀▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▀▄░░░░░░░░
░░▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▄▒▒▒▒▒▒▒▒▒▒▒▒▀▄░░░░░░
▀█▒▒▒█▌▒▒█▒▒▐█▒▒▒▀▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▌░░░░░
▀▌▒▒▒▒▒▒▀▒▀▒▒▒▒▒▒▀▀▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐░░░▄▄
▐▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▌▄█▒█
▐▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█▒█▀░
▐▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█▀░░░
▐▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▌░░░░
░▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐░░░░░
░▐▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▌░░░░░
░░▌▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▐░░░░░░
░░▐▄▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▄▌░░░░░░
░░░░▀▄▄▀▀▀▀▀▄▄▀▀▀▀▀▀▀▄▄▀▀▀▀▀▄▄▀░░░░░░░░

The way this'll work is when /usr/local/bin/pusheen is called, it will see the #!/bin/cat line, and call /bin/cat /usr/local/bin/pusheen, and then print out a cat.

So cute.

Anyways, I then stuck it in a git repository https://github.com/tbelaire/pusheen, and made a release, so homebrew could have a tarball.

Then, it was just

brew create https://github.com/tbelaire/pusheen/archive/v0.1.tar.gz

and just a little editing, and I had this file:

# Documentation: https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/Formula-Cookbook.md
#                http://www.rubydoc.info/github/Homebrew/homebrew/master/Formula
# PLEASE REMOVE ALL GENERATED COMMENTS BEFORE SUBMITTING YOUR PULL REQUEST!

class Pusheen < Formula
  desc ""
  homepage ""
  url "https://github.com/tbelaire/pusheen/archive/v0.1.tar.gz"
  version "0.1"
  sha256 "f29480b2dbb4eaa7bcb95c5698d44a242f4461965af50dcc98884404c286dbc7"


  def install
      bin.install "bin/pusheen"
  end

  test do
    # `test do` will create, run in and delete a temporary directory.
    #
    # This test will fail and we won't accept that! It's enough to just replace
    # "false" with the main program this formula installs, but it'd be nice if you
    # were more thorough. Run the test with `brew test pusheen`. Options passed
    # to `brew install` such as `--HEAD` also need to be provided to `brew test`.
    #
    # The installed folder is not in the path, so use the entire path to any
    # executables being tested: `system "#{bin}/program", "do", "something"`.
    system "pusheen"
  end
end

You can see my blatant disregard for rules as I so crassly left the generated comments alone. Such barbarism. Oh my.

Anyways, now that it's working, I copied that pusheen.rb file from /usr/local/Library/Formula/ to my own repository I just made up, tbelaire/homebrew-silly-things, and it was off to the metaphorical races. Homebrew is smart enough to fetch that when we call brew tab tbelaire/silly-things, so people all around the world can fix the void in their heart with Pusheen without having to leave their terminal.

And that has been your silly abuse of technology for cat related purposes for today.