dotfiles/dot_zsh_functions
2019-10-12 16:19:10 +02:00

199 lines
5.9 KiB
Plaintext

function google() {
open -na "Google Chrome" --args "https://www.google.com/search?q=$*"
}
function stackoverflow() {
open -na "Google Chrome" --args "https://www.google.com/search?q=site:stackoverflow.com $*"
}
function github() {
open -na "Google Chrome" --args "https://github.com/search?q=$*"
}
function hacker() {
open -na "Google Chrome" --args "https://hn.algolia.com/?sort=byDate&query=$*"
}
function gmail() {
open -na "Google Chrome" --args "https://mail.google.com/mail/u/0"
}
function gmail2() {
open -na "Google Chrome" --args "https://mail.google.com/mail/u/1"
}
function cicd() {
open -na "Google Chrome" --args "https://issues.collibra.com/secure/RapidBoard.jspa?rapidView=457&view=planning.nodetail"
}
function issues() {
jira issue jql "status = Open AND text ~ \"$*\" ORDER BY Created DESC"
}
function calendar() {
open -na "Google Chrome" --args "https://calendar.google.com/calendar/r?tab=mc"
}
function asana() {
open -na "Google Chrome" --args "https://app.asana.com"
}
function bookmarks() {
open -na "Google Chrome" --args "https://github.com/MorganGeek/bookmarks/blob/master/README.md"
}
function spotify() {
open -na "Google Chrome" --args "https://open.spotify.com/search/results/$*"
}
function lob() {
open -na "Google Chrome" --args "https://lobste.rs"
}
function logtalk() {
path_swilgt=$(find /usr/local/Cellar/logtalk -name "*swilgt.sh" 2>/dev/null)
sh "$path_swilgt"
}
function archive() {
open -na "Google Chrome" --args "https://web.archive.org/web/*/$*"
}
function git_listobjectsbysize() {
tempFile=$(mktemp)
IFS=$'\n'
for commitSHA1 in $(git rev-list --all); do
git ls-tree -r --long "$commitSHA1" >>"$tempFile"
done
# sort files by SHA1, de-dupe list and finally re-sort by filesize
sort --key 3 "$tempFile" | \
uniq | \
sort --key 4 --numeric-sort --reverse
# remove temp file
rm -f "$tempFile"
}
function top_commands() {
history | cat | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a; }' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n50
}
function top_commands_full() {
history | cat | sed 's/^[0-9 TAB]*//g' | awk '{CMD[$0]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "%\t" a; }' | sort -nr | nl | head -n50
}
function istherenewissues() {
LASTISSUE=$(newissues | sed $'s,\x1b\\[[0-9;]*[a-zA-Z],,g' | awk 'FNR==2{print $2}')
if [[ -f ".newjiraissue" ]]
then
previous_jira_issue=$(cat ".newjiraissue" | sed $'s,\x1b\\[[0-9;]*[a-zA-Z],,g') # the sed part is for removing output colors
if [ "$LASTISSUE" != "$previous_jira_issue" ]; then
newissues
else
echo "no new issue"
fi
fi
echo "$LASTISSUE" > .newjiraissue
}
function aboutpage() {
year=$(echo "$*" | egrep -Eo '\b[[:digit:]]{4}\b' | head -n1)
if [ -z "$year" ]
then
year=$(curl -sSL "$*" | tr '<' '\r' | \egrep -i "date|datetime" -A 1 | \grep -Eo '\b[[:digit:]]{4}\b' | head -n1)
fi
author=$(curl -sSL "$*" | tr '<' '\r' | \egrep -i "author" -A 1 | \grep -Eo '([A-Z][A-Za-z]+\s([A-Za-z ]+)*)' | head -n1)
yearint=$(($year + 0))
currentyear=$(echo `date +"%Y"`)
if [ ! -z "$author" ]
then
echo "by $author"
fi
if [[ $yearint -ge 1970 && $yearint -le $currentyear ]]
then
echo "$yearint"
fi
}
# Extract a column from a tabular output
# via https://blog.developer.atlassian.com/ten-tips-for-wonderful-bash-productivity/
function col() {
awk -v col=$1 '{print $col}'
}
# Skip first x words in line
# via https://blog.developer.atlassian.com/ten-tips-for-wonderful-bash-productivity/
function skip {
n=$(($1 + 1))
cut -d' ' -f$n-
}
# Unique lines of code
# Via https://text.causal.agency/004-uloc.txt
function uloc {
find . -type f \( \
-name '*.py' \
-o -name '*.rb' \
-o -name '*.go' \
-o -name '*.java' \
-o -name '*.c' -o -name '*.h' \
-o -name '*.js' \
\) -exec \cat \{\} \; | sed -e 's/^[ \t]*//;s/[ \t]*$//' | sort -u | wc -l
}
# Find files bigger than X size and sort them by size
function biggerthan() {
find . -size "+$*" -type f -print0 | xargs -0 ls -Ssh | sort -z
}
# To automatically ls when changing directory
function cd() {
builtin cd "$@" && ls -latr
}
function mouse() {
case "$(uname -s)" in
Darwin)
sh ~/.scripts/mouse_bluetooth.sh
;;
esac
}
function meteo() {
curl "fr.wttr.in/$*"
}
function how_in() {
where="$1"; shift
IFS=+ curl "cht.sh/${where}/$*"
}
function rate() {
curl "http://rate.sx/$*"
}
transfer() {
# check arguments
if [ $# -eq 0 ];
then
echo "No arguments specified. Usage:\necho transfer /tmp/test.md\ncat /tmp/test.md | transfer test.md"
return 1
fi
# get temporarily filename, output is written to this file show progress can be showed
tmpfile=$( mktemp -t transferXXX )
# upload stdin or file
file=$1
if tty -s;
then
basefile=$(basename "$file" | sed -e 's/[^a-zA-Z0-9._-]/-/g')
if [ ! -e $file ];
then
echo "File $file doesn't exists."
return 1
fi
if [ -d $file ];
then
# zip directory and transfer
zipfile=$( mktemp -t transferXXX.zip )
cd $(dirname $file) && zip -r -q - $(basename $file) >> $zipfile
curl --progress-bar --upload-file "$zipfile" "https://transfer.sh/$basefile.zip" >> $tmpfile
rm -f $zipfile
else
# transfer file
curl --progress-bar --upload-file "$file" "https://transfer.sh/$basefile" >> $tmpfile
fi
else
# transfer pipe
curl --progress-bar --upload-file "-" "https://transfer.sh/$file" >> $tmpfile
fi
# cat output link
cat $tmpfile
# cleanup
rm -f $tmpfile
}
# Where is a function defined?
function whichfunc() {
whence -v $1
type -a $1
}