Skip to content
main
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
bin
 
 
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 

longjump

an athletic event in which competitors jump as far as possible along the ground in one leap.

Longjump is an extensible command line tool that lets you jump into applications as far as possible with a single command.

Installation

$ gem install longjump

Usage

$ longjump

We recommend alias lj=longjump for convenience. But note that longjump will just tell you it has no available jumpers, unless you install a gem with a longjumper!

Gems that contain jumpers begin with longjumper.

Why Longjump

Remembering URI's is hard - and is mostly solved with tools like browser bookmarks. But there are still situations where a command-line launcher that generates URI's and opens them is useful. A few examples:

  • Jump to a URL in a development environment, where the environment's base URL is dynamic. You want something like longjump myproject admin to take you to the admin URL for your project, regardless of which environment you're currently using.
  • Open some internal tool with context - maybe feeding a username into a URL structure with something like longjump directory alex.
  • Quickly jump from command line to a URL, even if it's static.

Writing Your Longjumper

You'll need to create a gem. We recommend the convention longjumper-$name (e.g., longjumper-esv) for a gem that has a single jumper or longjumpers-$collection for a gem that has a collection of jumpers (e.g., longjumpers-shopify). Technically longjump is just looking for gem names beginning with longjumper.

Then you will need to write one or more "Jumper" classes and put them under Longjump::Jumpers. We recommend extending Base. Here is an example:

require "longjump/jumpers/base"

module Longjump
  module Jumpers
    class GitHubDocs < Base
      require "cgi"

      command :ghdocs
      description "GitHub Docs"
      default_uri "https://docs.github.com/"

      subcommand :cli, regex: "c|cli", uri: "https://docs.github.com/en/github-cli"
      subcommand :search

      def search(*args)
        query = args.join(" ")
        "#{default_uri}en?query=#{query}"
      end
    end
  end
end

If your default_uri is dynamic, you may want to define a method for it instead:

def default_uri
  SomeService.call
end

More than URL's

Longjump can open URI's in applications, not just URL's in browsers. Here is an example of a Spotify jumper:

module Longjump
  module Jumpers
    class Spotify < Base
      command :spotify
      description "Just a demo with Spotify"

      subcommand :gn, uri: "spotify:album:1do9XXkq2SLwDV7vsEjtjg"
    end
  end
end

For inspiration, here are some URI schemes to consider:

  • discord
  • postgres
  • redis
  • slack
  • zoommtg

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake test to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/alexcwatt/longjump.

About

Open URI's with rich context

Topics

Resources

Packages

No packages published