Giter Club home page Giter Club logo

ozzie00 / pathpicker Goto Github PK

View Code? Open in Web Editor NEW

This project forked from facebook/pathpicker

0.0 3.0 0.0 650 KB

PathPicker accepts a wide range of input -- output from git commands, grep results, searches -- pretty much anything. After parsing the input, PathPicker presents you with a nice UI to select which files you're interested in. After that you can open them in your favorite editor or execute arbitrary commands.

Home Page: http://facebook.github.io/PathPicker/

License: Other

CSS 1.59% Shell 4.19% Ruby 1.01% HTML 8.07% Python 85.14%

pathpicker's Introduction

PathPicker

Facebook PathPicker is a simple command line tool that solves the perpetual problem of selecting files out of bash output. PathPicker will:

  • Parse all incoming lines for entries that look like files
  • Present the piped input in a convenient selector UI
  • Allow you to either:
    • Edit the selected files in your favorite $EDITOR
    • Execute an arbitrary command with them

It is easiest to understand by watching a simple demo:

Examples

After installing PathPicker, using it is as easy as piping into fpp. It takes a wide variety of input -- try it with all the options below:

  • git status | fpp
  • hg status | fpp
  • git grep "FooBar" | fpp
  • grep -r "FooBar" . | fpp
  • git diff HEAD~1 --stat | fpp
  • arc inlines | fpp
  • find . -iname "*.js" | fpp

and anything else you can dream up!

Requirements

PathPicker should work with most Bash environments and requires Python >2.6 and <3.0.

ZSH is supported as well but won't have a few features like alias expansion in command line mode.

Installing PathPicker

Installing PathPicker is easiest with Homebrew for mac:

  • brew update (to pull down the recipe since it is new)
  • brew install fpp

However if you're on a system without Homebrew, it's still quite easy to install PathPicker since it's essentially just a bash script that calls some Python. These steps more-or-less outline the process:

  • cd /usr/local/ # or wherever you install apps
  • git clone [email protected]:facebook/PathPicker.git
  • cd PathPicker/

Here we make a symbolic link from the bash script in the repo to /usr/local/bin/ which is assumed to be in the current $PATH

  • ln -s ./fpp /usr/local/bin/fpp
  • fpp --help # should work!

Advanced Functionality

As mentioned above, PathPicker allows you to also execute arbitrary commands with the specified files. Here is an exaple showing a git checkout command executed against the selected files:

The selected files are appended to the command prefix to form the final command. If you need the files in the middle of your command, you can use the $F token instead, like:

cat $F | wc -l

How PathPicker works

PathPicker is a combination of a bash script and some small Python modules. It essentially has three steps:

  • First in the bash script, it redirects all standardout in to a python module that parses and extracts out the filenames. This data is saved in a temporary file and the python script exits.
  • Next, the bash script switches to terminal input mode and another python module reads out the saved entries and presents them in a selector UI built with curses. The user either selects a few files to edit or inputs a command to execute.
  • Lastly, the python script outputs a command to a bash file that is later executed by the original bash script.

It's not the most elegant architecture in the world but (in our opinion) provides a lot of utility.

Join the PathPicker community

See the CONTRIBUTING file for how to help out.

License

PathPicker is BSD-licensed. We also provide an additional patent grant.

pathpicker's People

Contributors

pcottle avatar frantic avatar wasade avatar aledista avatar jackwu95 avatar johankj avatar

Watchers

Oz avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.