Search GitHub stars with Octokit and fzf

April 22, 2018 0 Comments

Search GitHub stars with Octokit and fzf



If you are anything like me, you’re using Github’s repository stars as bookmarks for interesting projects you want to check out at a later date. And if you’re really like me (generally not advised) you love the command line and think it would be awesome if you had an easy way to search your stars from there. Today I had a spare hour, so I finally got around to build a solution that really fits my workflow, maybe it will appeal to you too.

Octokit is “the simple and official way to build amazing experiences using the GitHub API”, written by the GitHub team. It’s extremely convenient and I used it for writing myself a small utitlity called stars, which will fetch my starred repositories and output their full name, description and URL, separated by tabs. By default it will only return the latest 30 repositories (the first page of the API response), but can also retrieve all of them when called as stars all.

This is the self-explanotary script in all its non-glory:

#!/usr/bin/env ruby
require 'octokit'
Octokit.autopaginate = true if ARGV[0] == 'all'
client =
token: 'youraccesstoken')
starred = client.starred('yourusername')
starred.each do |star|
puts "#{star.full

(Note: the access token is optional, but allows for more API requests which was useful while developing)

This generates the following output (abbreviated):

→ stars
tagomoris/deferral Golang-style defer in Ruby
iridakos/duckrails A development tool to quickly & dynamically mock API endpoints :duck:
baweaver/qo Qo - Query Object - Pattern matching and fluent querying in Ruby
trailofbits/ethersplay EVM dissassembler
letsgetrandy/brototype Bro, do you even?
devise-security/devise-security A security extension for devise, meeting industrial standard security demands for web applications.

If you don’t know about fzf, do yourself a favor and check it out immediately. It’s an awesome command-line fuzzy finder written in Go, which is not only fast but also offers a pretty comprehensive feature set.

To integrate my stars utility with fzf I added a function named sstars (for “search stars”, no awards for originality there) to my .zshrc:

function sstars() {
local url
url=$(stars "$1" | fzf -e | cut -f3)
open $url

This expect stars to be available on your path. It will then pipe its output into fzf, assign the third field of the line (the URL) to a variable and let macOS’ open utility take care of the rest.

Here’s a screenshot of the tool in action:

Searching for Haskell repositories I starred when I still believed in a better world for software developers

Scratching a personal itch is always the best motivation to get started on a little weekend project and I did learn about Octokit in the process, so that’s a nice side-effect.

Tag cloud