repo: Make a script to move between repos quickly
This commit is contained in:
41
repo
Executable file
41
repo
Executable file
@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## repo: cd to a code repo, with some fancy fuzzy findingness
|
||||
#
|
||||
# I don't want to have to type `github.com` and an org name every time I need to
|
||||
# cd to a new repo. Unfortunately, my new repo structure will make this
|
||||
# necessary a lot of the time, unless I solve for it.
|
||||
#
|
||||
# So yeah. Here's this thing.
|
||||
#
|
||||
# GOTCHA: (also, setup instructions)
|
||||
#
|
||||
# Bash scripts can't change the working directory of their callers. This is
|
||||
# right and proper, but we need to work around it in this case.
|
||||
#
|
||||
# To use this script, create a function in your .bashrc or .zshrc:
|
||||
#
|
||||
# repo() { cd $(/path/to/this/script $@) }
|
||||
#
|
||||
|
||||
REPO_BASE=${HOME}/src
|
||||
|
||||
repos=$(find -s ${REPO_BASE} -maxdepth 3 -mindepth 3 -type d | sed "s|${REPO_BASE}/||")
|
||||
|
||||
# Default to searching within github.com, because that's by far the most common
|
||||
# place for repos to be.
|
||||
selected=$(echo "${repos}" | gum filter --header="Pick a repo" --prompt="Repo: " --height=20 --value "github.com/${1}")
|
||||
|
||||
echo "$REPO_BASE/$selected"
|
||||
|
||||
# TODO: It could be super nice to bias in favour of more frequently selected options.
|
||||
# For the last 500 uses (or so):
|
||||
# SELECT result, count(1)
|
||||
# FROM (SELECT * FROM invocations ORDER BY time DESC LIMIT 500) inv
|
||||
# WHERE term LIKE '${TERM}%'
|
||||
# GROUP BY result
|
||||
# ORDER BY count(1) desc
|
||||
#
|
||||
# BUT:
|
||||
# If there are exact matches on repo name, they should always be at the top.
|
||||
#
|
||||
Reference in New Issue
Block a user