Skip to content

Instantly share code, notes, and snippets.

@s1037989
Last active May 17, 2020 17:22
Show Gist options
  • Save s1037989/c0dc58d6d48f3717a7e5b52789e71dba to your computer and use it in GitHub Desktop.
Save s1037989/c0dc58d6d48f3717a7e5b52789e71dba to your computer and use it in GitHub Desktop.
function diff_json {
T1=`mktemp -q -t json_diff.XXX`
T2=`mktemp -q -t json_diff.XXX`
jq . "$1" > $T1
jq . "$2" > $T2
diff -y $T1 $T2
rm -f $T1 $T2
}
function tar-manifest {
if [ -e Changes ]; then
FILE=/tmp/${PWD##*/}-$(head -1 Changes | cut -f1 -d' ').tar.gz
else
FILE=/tmp/${PWD##*/}-0.01.tar.gz
fi
cut -f1 -d' ' MANIFEST | sed -e "s/^/${PWD##*/}\//" | tar cvaf $FILE -C .. -T -
echo -e "\n$FILE"
}
function makedist {
makedist_usage() { echo "makedist [-t <tag>] /pan/dir" 1>&2; return; }
local OPTIND o t VERSION TAG PREFIX PANDIR FILE
while getopts ":t:" o; do
case "${o}" in
t)
t="${OPTARG}"
;;
*)
makedist_usage
;;
esac
done
shift $((OPTIND-1))
if [ -z "$t" ]; then
VERSION=$(git describe --tags --abbrev=0 2>/dev/null || echo '0.00')
TAG="HEAD"
else
VERSION=$(git tag -l "$t")
[ -z "$VERSION" ] && echo "No such tag $t" && return
TAG="$VERSION"
fi
PREFIX=${PWD##*/}-$VERSION/
PANDIR=${1:-/tmp}
FILE=${PANDIR%/}/${PWD##*/}-$VERSION.tar.gz
git archive --prefix=$PREFIX -o $FILE "$TAG" && echo $FILE
}
function makemanifest {
git ls-tree --full-tree -r --name-only HEAD > MANIFEST
}
function maketest {
prove -Ilib -v t
}
function gitpan {
if [ -z "$1" ]; then
[ ! -e gitpanfile ] && { echo "gitpanfile not found"; return; }
local IFS
IFS=$'\n';
while read pan; do
unset IFS
if [[ "$pan" =~ ^# ]]; then continue; fi
echo "# $pan"
gitpan $pan
done < gitpanfile
else
(
local pwd uri repo commit ssha
pwd=`pwd`
uri="$1"
repo="${uri##*/}"
commit=${2:-master}
mkdir -p gitpan
local localpan
if [[ "$uri" =~ ^/ ]]; then
localpan=1
else
localpan=0
repo="${repo%.*}"
fi
if [ ! -d gitpan/$repo ]; then
if [ "$localpan" -eq 0 ]; then
git clone "$uri" gitpan/$repo
else
if [ -z "$GITPAN_HOME" ]; then
echo "\$GITPAN_HOME not set" && return
fi
if [ ! -d "$GITPAN_HOME" ]; then
echo "$GITPAN_HOME not found" && return
fi
if [ ! -d "$GITPAN_HOME/$repo" ]; then
echo "$GITPAN_HOME/$repo not found" && return
fi
git clone "$GITPAN_HOME/$repo" gitpan/$repo
fi
fi
builtin cd gitpan/$repo
git fetch --all
git rev-parse $commit &>/dev/null || { echo "Invalid ssha or tag $commit" && return; }
ssha=$(git rev-parse $commit | cut -b1-12)
git checkout $ssha
[ ! -e "Makefile.PL" ] && echo "No Makefile.PL" && return
perl Makefile.PL INSTALL_BASE=$pwd/local && make install
)
fi
}
function carton-exec {
PATH="local/bin${PATH:+:${PATH}}" PERL5LIB="lib:local/lib/perl5${PERL5LIB:+:${PERL5LIB}}" "$@"
}
function open-port {
[ -z "$2" ] && echo "Usage: $FUNCNAME user server [localport|3000] [remoteport|8080]" && return
ssh -N -R $2:${3:-3000}:localhost:${3:-3000} -R $2:${4:-8080}:localhost:${4:-8080} $1@$2
}
function pull-upstream {
[ -z "$1" -o ! -d "$1" ] && echo "Usage: $FUNCNAME /repos" && return
(
local d
d=`pwd`
unset IFS
for i in $(find $1 -maxdepth 3 -wholename "*/.git/config" -print0 | xargs -0 grep -l remotes/upstream | sed 's/\/.git\/config//'); do
echo -e "\n# $i"
builtin cd "$i" > /dev/null && git pull upstream master 2>/dev/null || echo Error > /dev/stderr
done
)
}
function check-status {
[ -z "$1" -o ! -d "$1" ] && echo "Usage: $FUNCNAME /repos" && return
(
local d
d=`pwd`
unset IFS
for i in $(find $1 -maxdepth 3 -wholename "*/.git/config" -print | sed 's/\/.git\/config//'); do
echo -e "\n# $i"
builtin cd "$i" > /dev/null && git status 2>/dev/null || echo Error > /dev/stderr
done
)
}
function color_my_prompt {
git status &> /dev/null
if [ "$?" -eq 0 ]; then
local listen=${MOJO_LISTEN##*%2F};
local __mojo;
[ "$listen" ] && __mojo="|\[\033[01;32m\]$listen|${MOJO_MODE:-development}";
local __user_and_host="\[\033[01;32m\]$USER@\h";
local __cur_location="\[\033[01;34m\]\w";
local __git_branch_color="\[\033[31m\]";
local __git_branch='`git branch 2> /dev/null | grep -e ^* | sed -E s/^\\\\\*\ \(.+\)$/\(\\\\\1\)\/`';
local __prompt_tail="\[\033[35m\]$";
local __last_color="\[\033[00m\]";
PS1="$__user_and_host$__mojo:$__cur_location$__git_branch_color$__git_branch$__prompt_tail$__last_color ";
else
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
fi
}
function cd { builtin cd "$@" ; . $HOME/.bash_cd ; }
JOE=`which joe`
VI=`which vi`
[ "$JOE" ] && EDITOR=$JOE || EDITOR=$VI
#shopt -s extglob
#[ -z "$SSH_AUTH_SOCK" ] && {
# export SSH_AUTH_SOCK=~/.ssh/ssh-agent.sock
# ssh-add -l &>/dev/null
# if [ $? -ge 2 ]; then
# eval `ssh-agent -a "$SSH_AUTH_SOCK"`
# #ssh-add ~/.ssh/!(*.pub)
# file -F$'\t' -N ~/.ssh/* | grep "private key$" | cut -f1 | paste -s -d$'\t' | tr --delete '\n' | xargs -d$'\t' ssh-add
# fi
#}
#shopt -u extglob
HISTTIMEFORMAT="%Y%m%d - %H:%M:%S "
alias nocomments='sed -r "/^[[:space:]]*$/d;/^[[:space:]]*#/d;s/[[:space:]]+#.*//" '
alias sp2tb="perl -pi -e 's/ +/\t/g'"
alias unix2dos='perl -pi -e "s/\n/\r\n/"'
alias dos2unix='perl -pi -e "s/\r\n/\n/"'
alias striplf='paste -s -d " "'
alias epochs=sec2date
sec2date() { date -d "1970-01-01 $1 seconds GMT"; }
alias epochd=days2date
days2date() { date -d "1970-01-01 $1 days"; }
doy() { [ "$1" ] && d="-d $1"; date $d +%j; }
now() { date +%s; }
alias df='df -h'
alias h2d='printf "%d" 0x${1}'
alias d2h='printf "%x" ${1}'
d2a() { perl -e "print chr '$1'"; }
a2d() { perl -e "print ord '$1'"; }
a2h() { IFS=''; for i in $@; do perl -e "foreach ( split //, '$i' ) { print sprintf('%x ', ord qq{\$_}) }"; done; unset IFS; }
h2a() { for i in $@; do if [ "$i" != "00" ]; then perl -e "print chr \$ARGV[0]" $(printf "%d" 0x${i}); fi; done; }
db64() { perl -MMIME::Base64 -e 'print decode_base64($ARGV[0]||<STDIN>), "\n"' "$1"; }
eb64() { perl -MMIME::Base64 -e 'print encode_base64($ARGV[0]||<STDIN>), "\n"' "$1"; }
function findonday {
local path=$1
local day=$2
local next=$(date -d "$day + 1 day")
find "$path" -type f -newermt "$day" ! -newermt "$next"
}
function findnotonday {
local path=$1
local day=$2
local next=$(date -d "$day + 1 day")
{ find "$path" -type f -newermt "$day" ! -newermt "$next" ; find "$path" -type f; } | sort | uniq -u
}
function highlight {
IFS=$'\n'
while read i; do
echo -e $(env GREP="$1" perl -pi -e 's/\n/\\n/g;s/($ENV{GREP})/\\033[31m$1\\033[0m/g')
done
unset IFS
}
function apt {
echo "$(date) $FUNCNAME $@" >> $HOME/packages.log
`which apt` "$@"
}
function apt-get {
echo "$(date) $FUNCNAME $@" >> $HOME/packages.log
`which apt-get` "$@"
}
function aptitude {
echo "$(date) $FUNCNAME $@" >> $HOME/packages.log
`which aptitude` "$@"
}
function cpanm {
echo "$(date) $FUNCNAME $@" >> $HOME/cpanm.log
`which cpanm` "$@"
}
export COLOR_NC='\e[0m' # No Color
export COLOR_WHITE='\e[1;37m'
export COLOR_BLACK='\e[0;30m'
export COLOR_BLUE='\e[0;34m'
export COLOR_LIGHT_BLUE='\e[1;34m'
export COLOR_GREEN='\e[0;32m'
export COLOR_LIGHT_GREEN='\e[1;32m'
export COLOR_CYAN='\e[0;36m'
export COLOR_LIGHT_CYAN='\e[1;36m'
export COLOR_RED='\e[0;31m'
export COLOR_LIGHT_RED='\e[1;31m'
export COLOR_PURPLE='\e[0;35m'
export COLOR_LIGHT_PURPLE='\e[1;35m'
export COLOR_BROWN='\e[0;33m'
export COLOR_YELLOW='\e[1;33m'
export COLOR_GRAY='\e[0;30m'
export COLOR_LIGHT_GRAY='\e[0;37m'
# Install a Perl module from some local directory
# Useful for early unreleased versions
function mypan {
[ -z "$1" ] && echo "Usage: $FUNCNAME repo" && return
(
local path
[ -f $1/Makefile.PL ] && path=$1
[ -z "$path" -a "$VCS_ROOT" -a -d "$VCS_ROOT" -a -f $VCS_ROOT/$1/Makefile.PL ] && path=$VCS_ROOT/$1
[ -z "$path" ] && echo "No Makefile.PL" && return
local pwd
pwd=$(pwd)
builtin cd "$path"
perl Makefile.PL INSTALL_BASE=$pwd/local && make install
)
}
# Generate a URL to a pinned commit on github, for use in a cpanfile, e.g.
# requires 'Mojolicious', '== 8.00', url => ***PINNED_URL_HERE***;
function pin-github {
git status &> /dev/null || return
local origin=$(git config --get remote.origin.url)
local head=$(git rev-parse HEAD)
perl -Mojo -E 'say Mojo::URL->new(qq($ARGV[0]))->scheme(q(https))->host(q(github.com))->tap(sub{$_->path->trailing_slash(1)->parts->[1]=~s/\.git$//})->path(qq(archive/$ARGV[1].zip))->to_string' $origin ${1:-$head}
}
function certbot-newdomain {
[ -z "$1" ] && { echo "Usage: $FUNCNAME domain"; return; }
local le_root=/etc/letsencrypt
local uid_gid=www-data.www-data
local wellknown_root=/var/www/letsencrypt
if [ ! -f /usr/local/sbin/certbot-auto ]; then
sudo wget https://dl.eff.org/certbot-auto -O /usr/local/sbin/certbot-auto
sudo chmod a+x /usr/local/sbin/certbot-auto
sudo mkdir $wellknown_root
sudo chown $uid_gid $wellknown_root
fi
if [ ! -d $wellknown_root/$1 ]; then
sudo mkdir -p $wellknown_root/$1
sudo chown $uid_gid $wellknown_root/$1
certbot-auto certonly -a webroot --webroot-path=$wellknown_root/$1 -d $1
sudo chown -R $uid_gid $le_root
sudo /etc/init.d/nginx reload
fi
}
function dev {
[ -z "$1" ] && { echo "Start an app on dev.$(hostname -f) Usage: $FUNCNAME app"; return; }
local __app=$1
shift
mode development listen $__app.dev.$(hostname -f) log_level debug reverse_proxy /$__app echo_mojo "$@"
}
function qa {
[ -z "$1" ] && { echo "Start an app on qa.$(hostname -f) Usage: $FUNCNAME app"; return; }
local __app=$1
shift
mode qa listen $__app.qa.$(hostname -f) log_level info reverse_proxy /$__app echo_mojo "$@"
}
function prod {
[ -z "$1" ] && { echo "Start an app on prod.$(hostname -f) Usage: $FUNCNAME app"; return; }
local __app=$1
shift
mode production listen $__app.prod.$(hostname -f) log_level error reverse_proxy /$__app echo_mojo "$@"
}
function echo_mojo {
set | grep --color=never ^MOJO_
"$@"
}
function reverse_proxy {
if [ -z "$1" ]; then
reverse_proxy 1
return
else
local __rp=$1
shift
MOJO_REVERSE_PROXY=$__rp "$@"
fi
}
function listen {
if [ -z "$1" ]; then
local __repo_path=$(git rev-parse --show-toplevel 2>/dev/null)
if [ "$__repo_path" ]; then
listen ${__repo_path##*/}
return
else
unset MOJO_LISTEN
fi
else
local __domain
if [[ $1 =~ \. ]]; then
__domain=$1
else
__domain=$1.$(hostname -f)
fi
shift
MOJO_LISTEN=http+unix://%2Fvar%2Fmojo%2Funixsockets%2F$__domain "$@"
#certbot-newdomain $__domain
#echo $MOJO_LISTEN
fi
}
function mode {
if [ -z "$1" ]; then
local __branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
if [ "$__branch" ]; then
mode $__branch
return
else
unset MOJO_MODE
fi
else
local __mode
if [[ $1 =~ ^dev ]]; then
__mode=development
elif [[ $1 =~ ^prod ]]; then
__mode=production
elif [ $1 == master ]; then
__mode=production
else
__mode=$1
fi
shift
MOJO_MODE=$__mode "$@"
#echo $MOJO_MODE
fi
}
function log_level {
if [ -z "$1" ]; then
local __branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
if [ "$__branch" ]; then
log_level $__branch
return
else
unset MOJO_LOG_LEVEL
fi
else
local __log_level
if [[ $1 =~ ^dev ]]; then
__log_level=debug
elif [[ $1 =~ ^prod ]]; then
__log_level=error
elif [ $1 == master ]; then
__log_level=error
else
__log_level=$1
fi
shift
MOJO_LOG_LEVEL=$__log_level "$@"
#echo $MOJO_LOG_LEVEL
fi
}
test -f "$HOME/.pwd" || echo $(pwd) > $HOME/.pwd
cd "$(< $HOME/.pwd)"
local pwd=$(pwd)
echo $pwd > $HOME/.pwd
listen
mode
log_level
color_my_prompt
function tar-manifest {
if [ -e Changes ]; then
FILE=/tmp/${PWD##*/}-$(head -1 Changes | cut -f1 -d' ').tar.gz
else
FILE=/tmp/${PWD##*/}-0.01.tar.gz
fi
cut -f1 -d' ' MANIFEST | sed -e "s/^/${PWD##*/}\//" | tar cvaf $FILE -C .. -T -
echo -e "\n$FILE"
}
function makedist {
makedist_usage() { echo "makedist [-t <tag>] /pan/dir" 1>&2; return; }
local OPTIND o t VERSION TAG PREFIX PANDIR FILE
while getopts ":t:" o; do
case "${o}" in
t)
t="${OPTARG}"
;;
*)
makedist_usage
;;
esac
done
shift $((OPTIND-1))
if [ -z "$t" ]; then
VERSION=$(git describe --tags --abbrev=0 2>/dev/null || echo '0.00')
TAG="HEAD"
else
VERSION=$(git tag -l "$t")
[ -z "$VERSION" ] && echo "No such tag $t" && return
TAG="$VERSION"
fi
PREFIX=${PWD##*/}-$VERSION/
PANDIR=${1:-/tmp}
FILE=${PANDIR%/}/${PWD##*/}-$VERSION.tar.gz
git archive --prefix=$PREFIX -o $FILE "$TAG" && echo $FILE
}
function makemanifest {
git ls-tree --full-tree -r --name-only HEAD > MANIFEST
}
function maketest {
prove -Ilib -v t
}
function gitpan {
if [ -z "$1" ]; then
[ ! -e gitpanfile ] && { echo "gitpanfile not found"; return; }
local IFS
IFS=$'\n';
while read pan; do
unset IFS
if [[ "$pan" =~ ^# ]]; then continue; fi
echo "# $pan"
gitpan $pan
done < gitpanfile
else
(
local pwd uri repo commit ssha
pwd=`pwd`
uri="$1"
repo="${uri##*/}"
commit=${2:-master}
mkdir -p gitpan
local localpan
if [[ "$uri" =~ ^/ ]]; then
localpan=1
else
localpan=0
repo="${repo%.*}"
fi
if [ ! -d gitpan/$repo ]; then
if [ "$localpan" -eq 0 ]; then
git clone "$uri" gitpan/$repo
else
if [ -z "$GITPAN_HOME" ]; then
echo "\$GITPAN_HOME not set" && return
fi
if [ ! -d "$GITPAN_HOME" ]; then
echo "$GITPAN_HOME not found" && return
fi
if [ ! -d "$GITPAN_HOME/$repo" ]; then
echo "$GITPAN_HOME/$repo not found" && return
fi
git clone "$GITPAN_HOME/$repo" gitpan/$repo
fi
fi
cd gitpan/$repo
git fetch --all
git rev-parse $commit &>/dev/null || { echo "Invalid ssha or tag $commit" && return; }
ssha=$(git rev-parse $commit | cut -b1-12)
git checkout $ssha
[ ! -e "Makefile.PL" ] && echo "No Makefile.PL" && return
perl Makefile.PL INSTALL_BASE=$pwd/local && make install
)
fi
}
function devpan {
[ -z "$1" ] && echo "Usage: $FUNCNAME repo" && return
(
[ ! -f $1/Makefile.PL ] && echo "No Makefile.PL" && return
local pwd
pwd=$(pwd)
cd $1
perl Makefile.PL INSTALL_BASE=$pwd/local && make install
)
}
function devpan-exec {
PATH="local/bin${PATH:+:${PATH}}" PERL5LIB="lib:local/lib/perl5${PERL5LIB:+:${PERL5LIB}}" "$@"
}
function open-port {
[ -z "$2" ] && echo "Usage: $FUNCNAME user server [localport|3000] [remoteport|8080]" && return
ssh -N -R $2:${3:-3000}:localhost:${3:-3000} -R $2:${4:-8080}:localhost:${4:-8080} $1@$2
}
function cd {
builtin cd "$@";
local pwd
pwd=$(pwd)
echo $pwd > $HOME/.pwd;
color_my_prompt
}
function pull-upstream {
[ -z "$1" -o ! -d "$1" ] && echo "Usage: $FUNCNAME /repos" && return
(
local d
d=`pwd`
unset IFS
for i in $(find $1 -maxdepth 3 -wholename "*/.git/config" -print0 | xargs -0 grep -l remotes/upstream | sed 's/\/.git\/config//'); do
echo -e "\n# $i"
cd $i > /dev/null && git pull upstream master 2>/dev/null || echo Error > /dev/stderr
done
)
}
function check-status {
[ -z "$1" -o ! -d "$1" ] && echo "Usage: $FUNCNAME /repos" && return
(
local d
d=`pwd`
unset IFS
for i in $(find $1 -maxdepth 3 -wholename "*/.git/config" -print | sed 's/\/.git\/config//'); do
echo -e "\n# $i"
cd "$i" > /dev/null && git status 2>/dev/null || echo Error > /dev/stderr
done
)
}
function color_my_prompt {
git status &> /dev/null
if [ "$?" -eq 0 ]; then
local __user_and_host="\[\033[01;32m\]$USER@\h";
local __cur_location="\[\033[01;34m\]\w";
local __git_branch_color="\[\033[31m\]";
local __git_branch='`git branch 2> /dev/null | grep -e ^* | sed -E s/^\\\\\*\ \(.+\)$/\(\\\\\1\)\/`';
local __prompt_tail="\[\033[35m\]$";
local __last_color="\[\033[00m\]";
PS1="$__user_and_host:$__cur_location$__git_branch_color$__git_branch$__prompt_tail$__last_color ";
else
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
fi
}
test -f "$HOME/.pwd" || echo $(pwd) > $HOME/.pwd
cd "$(< $HOME/.pwd)"
JOE=`which joe`
VI=`which vi`
[ "$JOE" ] && EDITOR=$JOE || EDITOR=$VI
#shopt -s extglob
#[ -z "$SSH_AUTH_SOCK" ] && {
# export SSH_AUTH_SOCK=~/.ssh/ssh-agent.sock
# ssh-add -l &>/dev/null
# if [ $? -ge 2 ]; then
# eval `ssh-agent -a "$SSH_AUTH_SOCK"`
# #ssh-add ~/.ssh/!(*.pub)
# file -F$'\t' -N ~/.ssh/* | grep "private key$" | cut -f1 | paste -s -d$'\t' | tr --delete '\n' | xargs -d$'\t' ssh-add
# fi
#}
#shopt -u extglob
HISTTIMEFORMAT="%Y%m%d - %H:%M:%S "
alias nocomments='sed -r "/^[[:space:]]*$/d;/^[[:space:]]*#/d;s/[[:space:]]+#.*//" '
alias sp2tb="perl -pi -e 's/ +/\t/g'"
alias unix2dos='perl -pi -e "s/\n/\r\n/"'
alias dos2unix='perl -pi -e "s/\r\n/\n/"'
alias striplf='paste -s -d " "'
alias epochs=sec2date
sec2date() { date -d "1970-01-01 $1 seconds GMT"; }
alias epochd=days2date
days2date() { date -d "1970-01-01 $1 days"; }
doy() { [ "$1" ] && d="-d $1"; date $d +%j; }
now() { date +%s; }
alias df='df -h'
alias h2d='printf "%d" 0x${1}'
alias d2h='printf "%x" ${1}'
d2a() { perl -e "print chr '$1'"; }
a2d() { perl -e "print ord '$1'"; }
a2h() { IFS=''; for i in $@; do perl -e "foreach ( split //, '$i' ) { print sprintf('%x ', ord qq{\$_}) }"; done; unset IFS; }
h2a() { for i in $@; do if [ "$i" != "00" ]; then perl -e "print chr \$ARGV[0]" $(printf "%d" 0x${i}); fi; done; }
db64() { perl -MMIME::Base64 -e 'print decode_base64($ARGV[0]||<STDIN>), "\n"' "$1"; }
eb64() { perl -MMIME::Base64 -e 'print encode_base64($ARGV[0]||<STDIN>), "\n"' "$1"; }
function findonday {
local path=$1
local day=$2
local next=$(date -d "$day + 1 day")
find "$path" -type f -newermt "$day" ! -newermt "$next"
}
function findnotonday {
local path=$1
local day=$2
local next=$(date -d "$day + 1 day")
{ find "$path" -type f -newermt "$day" ! -newermt "$next" ; find "$path" -type f; } | sort | uniq -u
}
function highlight {
IFS=$'\n'
while read i; do
echo -e $(env GREP="$1" perl -pi -e 's/\n/\\n/g;s/($ENV{GREP})/\\033[31m$1\\033[0m/g')
done
unset IFS
}
function apt {
echo "$(date) $FUNCNAME $@" >> $HOME/packages.log
`which apt` "$@"
}
function apt-get {
echo "$(date) $FUNCNAME $@" >> $HOME/packages.log
`which apt-get` "$@"
}
function aptitude {
echo "$(date) $FUNCNAME $@" >> $HOME/packages.log
`which aptitude` "$@"
}
export COLOR_NC='\e[0m' # No Color
export COLOR_WHITE='\e[1;37m'
export COLOR_BLACK='\e[0;30m'
export COLOR_BLUE='\e[0;34m'
export COLOR_LIGHT_BLUE='\e[1;34m'
export COLOR_GREEN='\e[0;32m'
export COLOR_LIGHT_GREEN='\e[1;32m'
export COLOR_CYAN='\e[0;36m'
export COLOR_LIGHT_CYAN='\e[1;36m'
export COLOR_RED='\e[0;31m'
export COLOR_LIGHT_RED='\e[1;31m'
export COLOR_PURPLE='\e[0;35m'
export COLOR_LIGHT_PURPLE='\e[1;35m'
export COLOR_BROWN='\e[0;33m'
export COLOR_YELLOW='\e[1;33m'
export COLOR_GRAY='\e[0;30m'
export COLOR_LIGHT_GRAY='\e[0;37m'
# also set MOJO_MODE=branch
function cd { builtin cd "$@"; local mojo ; mojo=$(git rev-parse --show-toplevel 2>/dev/null) ; if [ ! -z "$mojo" -a -d "$mojo" -a -f "$mojo/.mojo" ]; then . $mojo/.mojo; else unset $(set | grep ^MOJO_ | perl -p -E 's/=.*//' | paste -s -d ' '); fi; }
function set_app { umask 0002 ; local domain ; if [[ $1 =~ \. ]]; then domain=$1; else domain=$1.$(hostname -f); fi ; export MOJO_LISTEN=http+unix://%2Ftmp%2Fmojosocks%2F$domain; }
# get the domain name from MOJO_LISTEN and use that as the host
# color the mode: master red, staging/qa yellow, anything else green
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@$MOJO_LISTEN[$MOJO_MODE]\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment