Last active
May 17, 2020 17:22
-
-
Save s1037989/c0dc58d6d48f3717a7e5b52789e71dba to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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)" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
local pwd=$(pwd) | |
echo $pwd > $HOME/.pwd | |
listen | |
mode | |
log_level | |
color_my_prompt |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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