• Stars
    star
    181
  • Rank 210,850 (Top 5 %)
  • Language
    Ruby
  • License
    MIT License
  • Created over 11 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Quickly jump to git repositories, run commands in batch and get status overviews.

Pro

pro is a command to wrangle your git repositories. It includes features like instantly cd'ing to your git repos and getting a status overview, and running an arbitrary command in every git repo.

Note that pro only currently works on Unix systems.

CD'ing to a project's repository

Cd'ing to your projects is harder than it should be. There are attempts to solve this problem using frequency and recency. pro solves the problem by fuzzy searching only git repositories.

The supplementary pd command allows you to instantly CD to any git repo by fuzzy matching its name. It is implemented as a shell function. You can install pd (name configurable) by running pro install. Once you have it you can do some pretty intense cd'ing:

pd demo

Protip: running pd with no arguments changes to the pro base.

State of the Repos Address

Oftentimes I find myself wondering which git repositories of mine still have uncommitted changes or unpushed commits. I could find them all and run git status but it would be nice to get a quick overview. pro status does this.

pro status

You can also run pro status <repo> to show the output of git status for a certain repo.

Run all the commands!

Wouldn't it be cool if you could run a command on all your repos and see a summary of the output? Now you can!

You can do this with pro run <command>. If you don't pass a command it will prompt you for one.

For example, searching all your repos for ruby files:

pro run

Notice that it double checks before running so you don't accidentally run rm -rf * on all your projects.

The Pro Base

pro can use a base directory to narrow down its search for git repos. By default it uses your home folder.

To set the base directory set the PRO_BASE environment variable or make a ~/.proBase file containing the path. The .proBase file can contain many lines each with a path to a folder to search. Pro will search the path in the PRO_BASE variable as well as all paths in the .proBase file. If neither exists then the home directory will be used.

Indexing

Whenever you run a pro command or pd it will kick off a background indexing process. This process can run anywhere from less than a second to a minuted depending on the number of files in your pro bases.

On update the cache is invalidated and you may have to wait a while before your command finishes.

Installation

pro is bundled as a Ruby gem. To install run:

$ gem install pro

You may also want to set your Pro Base. See the above section.

Usage

pro is a command to help you manage your git repositories.

Base Directory ==========
pro works from a base directory for efficiency.
This is the folder that contains all your other git repositories;
they don't have to be at the base level, just somewhere down the tree.

To set the base directory set the PRO_BASE environment variable or make
a ~/.proBase file containing the path. The .proBase file can contain many lines
each with a path to a folder to search. Pro will search the path in the PRO_BASE
variable as well as all paths in the .proBase file. If neither exists then the home
directory will be used.

Commands ===============
pro search <query> - prints path of git repo that matches query.
pro status - prints a list of all repos with uncommitted or unpushed changes.
pro status <name> - prints the output of 'git status' on the repo.
pro run - prompts for a command to run in all git repos.
pro run <command> - runs the given command in all git repos.
pro list - prints the paths to all repos. Intended for scripting.
pro bases - prints the paths to all bases. Intended for scripting.
pro install - Install the pro cd command. cd to a directory by fuzzy git repo matching.
pro help - display help

CD Command ============
You can use the 'pro install' command to install a wrapper shell function that allows
you to cd to git repositories in your Pro Base wherever you are based on fuzzy matching.

Just running 'pd' cd's to the pro base.

Example:

  ~/randomFolder/ $ pd pro
  pro/ $ pwd
  /Users/tristan/Box/Dev/Projects/pro
  pro/ $ pd
  Dev/ $ pwd
  /Users/tristan/Box/Dev

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

More Repositories

1

syntect

Rust library for syntax highlighting using Sublime Text syntax definitions.
Rust
1,867
star
2

eyeLike

A webcam based pupil tracking implementation.
C++
894
star
3

telefork

Like fork() but teleports the forked process to a different computer!
Rust
587
star
4

doubleVision

A ruby gem that that manipulates PNG filest to create magic thumbnails like http://funnyjunk.com/channel/ponytime/rainbow+dash/llhuDyy/15#15
Ruby
157
star
5

screentunes

Play tones through an LCD monitor from a web page using an electronics quirk in some displays.
JavaScript
135
star
6

numderline

Font patcher to using shaping tricks to make it easier to pick out digit groups in numbers without commas
HTML
115
star
7

dotfiles

My dotfiles for Linux and Mac.
Shell
98
star
8

stashline

A long term personal finance planning timeline app for IOS
Objective-C
75
star
9

gigatrace

Proof-of-concept for a memory-efficient data structure for zooming billion-event traces
Rust
65
star
10

QuestSaberPatch

Patcher tool to add custom levels to the Oculus Quest version of Beat Saber
C#
64
star
11

twitterperf

Prototyping the performance of various components of a theoretical faster Twitter
Rust
63
star
12

enfasten

⚡️ Automatically make your site faster with optimized responsive images
Go
62
star
13

wikicrush

Processor scripts for Wikipedia dumps to crush them into a dense binary format that is easy to pathfind with.
Ruby
59
star
14

dayder

Search lots of data sets for spurious correlations
Rust
55
star
15

MetalTest

Glitchless smooth window resizing in Metal
Swift
48
star
16

ratewithscience

Rate things on arbitrary scales using big data and science!
Rust
48
star
17

PolyMouse

Fusion of gaze and head tracking for fast & accurate hands-free pointing
C++
48
star
18

quickdown

Fast lightweight Markdown viewer with Rust and Webrender. HtN 2017
Rust
45
star
19

indexView

Widget to graph historical stock indexes and compute stats.
JavaScript
40
star
20

faceHack

Replace faces in any video with your own! Made for Terrible Hacks
HTML
37
star
21

FusionMouse

Combines Tobii eye tracking with TrackIR head tracking for a fast hands-free mouse replacement, in Rust!
Rust
36
star
22

LastSecondSlides

Use the Google speech-to-text API to generate presentation slides as you talk!
Python
34
star
23

faiyels

See all your code rendered at once and zoom around it using Rust & GPU rendering.
Rust
32
star
24

ddbus

D library for interfacing with dbus
D
31
star
25

thume.popclick

A lua module for PopClick, detect mouth noises with HammerSpoon
C
30
star
26

SmartGaze

WIP Open source IR eye tracker for the Eye Tribe tracker hardware
C++
28
star
27

OpenTuringCompiler

A cross platform Turing Compiler built with LLVM.
C++
24
star
28

mjolnir.th.hints

Mjolnir Module for Window Hints
Objective-C
23
star
29

EmojiEngine

The world's fastest rendering engine, for emoji. Made for TerribleHack X
JavaScript
23
star
30

seqalign_pathing

Rust implementation of sequence alignment / Levenshtein distance by A* acceleration of the DP algorithm
Rust
19
star
31

PopClick

Detecting lip popping noises to trigger an action.
C++
15
star
32

EyeTribeReversing

Reverse engineering The Eye Tribe eye tracker
C
14
star
33

QuickMouse

O(log9(N)) keyboard mouse for OSX that uses the Numpad. Written in MacRuby
Ruby
13
star
34

PolyType

Firmware for my custom keyboard running on the Teensy 3.1
C++
12
star
35

KeyboardCAD

Cad files and scripts for 3D printing and laser cutting custom keyboards
OpenSCAD
12
star
36

perftrace

Trace instruction execution using perf breakpoints in Python
C
12
star
37

SublimeRustAutoImport

Automatically add use statement imports for Rust from ST3
Python
10
star
38

SquareGame

Kiran Rao's SquareGame. Ported to IOS. The project does not include the cocos2d libs folder and the OpenFeint Library. If you want to compile it you will have to download them.
Objective-C
10
star
39

d-phobos-docset

Dash docset for D language Phobos library
Ruby
10
star
40

SublimeTect

Control scheme like Vim but with mode switching through pressing palm keys on fancy keyboards.
Python
10
star
41

nixfiles

my NixOS dotfiles for a VPS and eventually a desktop
Nix
9
star
42

hnblogs

RSS feed of all the comments of my favourite Hacker News users
Ruby
9
star
43

trishume.github.com

My website/blog thing. Made with Jekyll.
HTML
8
star
44

tobii-sys

Rust bindings for the Tobii Stream Engine API for eye tracking
Rust
8
star
45

SmartHeadTracker

WIP OpenCV webcam head tracker based on coloured markers
C++
8
star
46

stopfmt

Sublime plugin to fold short error-checking if statements in Go onto one line
Python
6
star
47

improsent

A command-based web app for improvising powerpoint presentations.
JavaScript
6
star
48

VintageousPlus

DEPRECATED: merged into https://github.com/NeoVintageous/NeoVintageous
Python
6
star
49

ChordingModel

Modelling and statistics scripts for chorded keyboard layouts.
Ruby
6
star
50

QLTool

Command line tool for generating quicklook previews
Objective-C
5
star
51

TuringInTuring

My grade 11 programming summative. A turing interpreter written in turing. Not Perl, they just have a shared extension. Perl does have better syntax than turing though.
Turing
5
star
52

Sublime-Rosetta-Get

Sublime Text 2 plugin to insert snippets from rosetta code.
Python
4
star
53

transience

A Qt daemon for displaying transient overlays like window hints.
C++
4
star
54

webrender_playground

Playing around with Webrender and the new glutin to get nice window resizing on macOS
Rust
3
star
55

portmanteau

Portmanteau generator web app using graph search in Rust
Rust
3
star
56

SublimeTalon

Sublime plugin for integration with https://talonvoice.com/
Python
3
star
57

sympy-wiki-with-svn

For a Google Code-In task. Merge-in of svn wiki.
3
star
58

haxe-webcam-witchcraft

Object tracking webcam witchcraft in Haxe. There is also a faster but less featured processing version that requires libOpenCV.
Haxe
3
star
59

KeySelect

Select text using your keyboard. A Qt OSX app that does image processing on screenshots to identify text.
C
3
star
60

AITron

test bed for tron AI
JavaScript
2
star
61

Drop2Run

Work in progress. Uses ideone API to run any program dropped onto the page.
JavaScript
2
star
62

OpenTuringParser

A hand-written parser for Turing. Will be used in the new compiler. Goals include giving excellent error messages and having auto-fixing support. (Similar to the Clang parser.)
C++
2
star
63

vizwl

Qt program for drawing debug visualizations from any language using a simple text protocol
C++
2
star
64

atom-good-go-to

Fast go to file and line from command line searching all panes for Atom
JavaScript
2
star
65

watcard-cli

A ruby command line tool for accessing watcard history.
Ruby
2
star
66

quickruby

A ruby DSL for programming contests and associated tools.
Ruby
2
star
67

uiscope

A QT Dbus server for accessing the OSX accessibility hierarchy.
Objective-C++
2
star
68

MaximallyDirect2D

TerribleHack XI project to render directly from UDP packets to the screen with Apple Metal
Objective-C
2
star
69

dynamic-favicon

Experimentation with dynamic favicons.
2
star
70

resume

My printable online resume.
HTML
2
star
71

Geo-Summative

My grade 9 geography summative on going to Niagara Falls.
JavaScript
2
star
72

libdlusb-0.0.9-mac

A port of libdlusb to the mac. Sync your Timex DataLink USB watch to a mac computer.
C
2
star
73

LookMouse

A head tracking mouse using a microcontroller and a head-mounted IMU.
Arduino
2
star
74

Ultimate-Tic-Tac-Toe

A java applet (with crappy AI) for ultimate tic tac toe.
Java
2
star
75

ratews_backend

Rating on arbitrary scales courtesy of the Wikipedia link graph.
Rust
2
star
76

BlinKey

Firmware for one key keyboard emulating Blink(1) with Adafruit Trinket.
C
1
star
77

google-ai-ants-bot

My ants bot for the google AI challenge. Not gonna upload full code till it's over.
1
star
78

jsglot

Javascript implementation for the polyglot gem. Requires the polyglot gem and a ruby v8 gem.
Ruby
1
star
79

live_debug

Live coding ruby debugger inspired by Bret Victor's "Inventing on Principle." Intended mainly for programming contests.
1
star
80

d-vibed-docset

A Dash docset for the Vibe.d D web framework
Ruby
1
star
81

magicsense

Probabilistic language-independent intelligent autocomplete in Rust
Rust
1
star
82

shakespeare-programs

Programs written in the Shakespeare language. Run using the perl module Lingua::Shakespeare
1
star
83

turing-particles

Simple particle systems in turing
Perl
1
star
84

fractions.rb

A simple fractions and probability library for ruby. I wrote it without knowing that ruby includes the Rational class with the same functionality. :-|
Ruby
1
star
85

quickchart

WIP simple real-time charting web app and server
JavaScript
1
star
86

ninjax

Ruby library that allows you to write nearly any program in one line of code. See the test programs for documentation.
Ruby
1
star
87

rustdoc

Repo for hosting rust docs on Github Pages, managed by an automated uploads from Travis
HTML
1
star
88

treeeees

Generates cool word gardens! Based on the first problem of the 2012 ECOO programming contest finals.
Ruby
1
star
89

ruby-pdf-word-grapher

Creates graphs of per-line-group occurences of words in a text file (from a converted PDF.) Track symbols in literature!
Ruby
1
star
90

DWITE-solutions

My solutions to past DWITE contest problems. Only the ones I wrote, not guaranteed to work.
Ruby
1
star
91

normal

Normal distribution calculator web app
HTML
1
star