X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=etc%2Fzsh%2Fzshrc;h=305e0ec98af851039db68fa643071d17ee90d0c8;hb=2ebcbd6409fb56c44bbe4671e4d845d8be7284b7;hp=f5b943f34ad5c88bb2d19cc60fef76534894eada;hpb=828d43a5f8414c8b0bd90c5ac353f498d2353f7c;p=grml-etc-core.git diff --git a/etc/zsh/zshrc b/etc/zsh/zshrc index f5b943f..305e0ec 100644 --- a/etc/zsh/zshrc +++ b/etc/zsh/zshrc @@ -2393,6 +2393,7 @@ inplaceMkDirs() { PATHTOMKDIR="${(Q)bufwords[iword]}" fi [[ -z "${PATHTOMKDIR}" ]] && return 1 + PATHTOMKDIR=${~PATHTOMKDIR} if [[ -e "${PATHTOMKDIR}" ]]; then zle -M " path already exists, doing nothing" else @@ -2640,46 +2641,39 @@ xtrename() { return 0 } -# TODO: -# Rewrite this by either using tinyurl.com's API -# or using another shortening service to comply with -# tinyurl.com's policy. -# -# Create small urls via http://tinyurl.com using wget(1). -#function zurl() { -# emulate -L zsh -# [[ -z $1 ]] && { print "USAGE: zurl " ; return 1 } -# -# local PN url tiny grabber search result preview -# PN=$0 -# url=$1 -## Check existence of given URL with the help of ping(1). -## N.B. ping(1) only works without an eventual given protocol. -# ping -c 1 ${${url#(ftp|http)://}%%/*} >& /dev/null || \ -# read -q "?Given host ${${url#http://*/}%/*} is not reachable by pinging. Proceed anyway? [y|n] " -# -# if (( $? == 0 )) ; then -## Prepend 'http://' to given URL where necessary for later output. -# [[ ${url} != http(s|)://* ]] && url='http://'${url} -# tiny='http://tinyurl.com/create.php?url=' -# if check_com -c wget ; then -# grabber='wget -O- -o/dev/null' -# else -# print "wget is not available, but mandatory for ${PN}. Aborting." -# fi -## Looking for i.e.`copy('http://tinyurl.com/7efkze')' in TinyURL's HTML code. -# search='copy\(?http://tinyurl.com/[[:alnum:]]##*' -# result=${(M)${${${(f)"$(${=grabber} ${tiny}${url})"}[(fr)${search}*]}//[()\';]/}%%http:*} -## TinyURL provides the rather new feature preview for more confidence. -# preview='http://preview.'${result#http://} -# -# printf '%s\n\n' "${PN} - Shrinking long URLs via webservice TinyURL ." -# printf '%s\t%s\n\n' 'Given URL:' ${url} -# printf '%s\t%s\n\t\t%s\n' 'TinyURL:' ${result} ${preview} -# else -# return 1 -# fi -#} +# Create small urls via http://goo.gl using curl(1). +# API reference: https://code.google.com/apis/urlshortener/ +function zurl() { + emulate -L zsh + if [[ -z $1 ]]; then + print "USAGE: zurl " + return 1 + fi + + local PN url prog api json data + PN=$0 + url=$1 + + # Prepend 'http://' to given URL where necessary for later output. + if [[ ${url} != http(s|)://* ]]; then + url='http://'${url} + fi + + if check_com -c curl; then + prog=curl + else + print "curl is not available, but mandatory for ${PN}. Aborting." + return 1 + fi + api='https://www.googleapis.com/urlshortener/v1/url' + contenttype="Content-Type: application/json" + json="{\"longUrl\": \"${url}\"}" + data=$($prog --silent -H ${contenttype} -d ${json} $api) + # Match against a regex and print it + if [[ $data =~ '"id": "(http://goo.gl/[[:alnum:]]+)"' ]]; then + print $match; + fi +} #f2# Find history events by search pattern and list them by date. whatwhen() {