all repos — dotfiles @ fc2aad2f769171a06f3c0ef7fcb2fea4ebf27db6

my *nix dotfiles

bin/xurls (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
#!/usr/bin/env bash
# extract urls in current tmux pane and pass it to fzy

content="$(tmux capture-pane -J -p)"

mapfile -t urls < <(echo "$content" | grep -oE '(https?|ftp|file):/?//[-A-Za-z0-9+&@#/%?=~_|!:,.;]*[-A-Za-z0-9+&@#/%=~_|]')
mapfile -t wwws < <(echo "$content" | grep -oE '(http?s://)?www\.[a-zA-Z](-?[a-zA-Z0-9])+\.[a-zA-Z]{2,}(/\S+)*' | grep -vE '^https?://' |sed 's/^\(.*\)$/http:\/\/\1/')
mapfile -t ips  < <(echo "$content" | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}(:[0-9]{1,5})?(/\S+)*' |sed 's/^\(.*\)$/http:\/\/\1/')
mapfile -t gits < <(echo "$content" | grep -oE '(ssh://)?git@\S*' | sed 's/:/\//g' | sed 's/^\(ssh\/\/\/\)\{0,1\}git@\(.*\)$/https:\/\/\2/')

items="$(printf '%s\n' "${urls[@]}" "${wwws[@]}" "${ips[@]}" "${gits[@]}" |
    grep -v '^$' |
    sort -u |
    nl -w3 -s ' '
)"

[ -z "$items" ] && exit

chosen="$(fzy <<< "$items" | awk '{ print $2 }')"

case "$OSTYPE" in
    darwin*)
        printf "$chosen" | pbcopy
        ;;
    *)
        printf "$chosen" | xclip -sel c
        ;;
esac