Skip to content

anandaroop/klimt

Repository files navigation

Klimt

CircleCI Build Status

Klimt is a Command Line Interface Metadata Tool. That almost spells Klimt. So close.

It makes it dead simple to view Artsy API json responses from the command line.

Usage

Klimt has four basic subcommands which will work with most REST-ful endpoints in the API (see caveat).

View a resource

Supply the model name as it appears in the v1 API endpoint, and an id:

$ klimt find partner gagosian-gallery
$ klimt find artist damien-hirst

List a collection of resources

Supply the (usually plural) model name as it appears in the v1 API endpoint, and optionally some API parameters:

$ klimt list partners
$ klimt list partners eligible_for_listing=true near=30,-90

Find a resource via term search

Supply the term to search for (enclosed in quotes if it contains whitespace), and optionally a list of space-delimited indexes to constrain the search.

$ klimt search "Gagosian Gallery"
$ klimt search Gagosian --indexes=Article Artwork

Count a resource

Supply the (usually plural) model name as it appears in the v1 API endpoint, and optionally some API parameters:

$ klimt count cultures
$ klimt count cultures nationalities=true

Caveat re: root-level endpoints

The find, list and count commands work great when the API endpoint in question is structured as a root-level endpoint rather than a nested one. So for now… /api/v1/partner/<id> ✔️ but /api/v1/partner/<id>/locations ❌.

See the discussion under "Gravity's v1 API" in Potential.

Custom subcommands

If a resource can't be retrieved because it's not a root-level endoint, or if some further custom behavior is desired, it's easy enough to create a new subcommand to encapsulate these requirements, e.g. the partner subcommand or the city subcommand.

For example, this partner subcommand results in several fetches and a detailed report:

$ klimt partner check-locations gagosian-gallery -x=-90 -y=30

Authentication

Klimt — like the Heroku CLI client — uses Netrc to manage credentials. The first time you use it it will ask for a login, generate a token and save the token in ~/.netrc.

Klimt 💖 JQ

JQ is a command line json pretty-printing and transformation tool that works great with Klimt

$ klimt list partners | jq '.[] | { id, name }'
$ klimt find partner moma-ps1 | jq '.name'

In fact Klimt will detect if JQ is installed, and if so will sometimes use it for nicer output, such as if you pass Klimt the --color flag:

$ klimt find artist andy-warhol --color

Installation

Klimt is available as a RubyGem, so installation is as simple as:

# Set up your gravity keys, then…
$ gem install klimt

Klimt uses a Gravity ClientApplication, whose id and secret you'll have to supply in your environment as KLIMT_ID and KLIMT_SECRET. (These are available in the shared 1Password vault — search for "Klimt env")

$ KLIMT_ID=<replace> KLIMT_SECRET=<replace> klimt help

Or just add these env variables to your shell startup script.

If you'd like auto-completion in zsh, add eval "$(klimt zsh-completion)" to the end of your .zshrc.