sirgatez icon

Untitled

sirgatez | PRO | 04/03/23 06:34:59 PM UTC (Edited) | 0 ⭐ | 434 👁️ | Never ⏰ | []
Bash |

3.5 KB

|

Source Code

|

0 👍

/

0 👎

GenerateAliasesAndFunctions.sh
 
#!/bin/zsh
 
# To use: source <thisfile>
 
# I keep this first like in a file called GoLinks_pre.sh which loads first
export go_hardlinks=()
export go_mylinks=()
export go_searchlinks=()
 
# This is kept in Golinks.sh which loads second
 
# LinkedIn Go Links go/<thing>
# Note these are provided for example only and will not work outside of the LinkedIn internal network
# Now you could setup your own DNS or URL redirect for "go" and redirect it to whatever you wanted. For example bit.ly links.
go_hardlinks=(${go_hardlinks[@]}
    'helpin' 'questions' 'wiki' # Research
)
 
# <thing>
go_mylinks=(${go_mylinks[@]}
    # Web tools
    'gmail:https://mail.google.com'
 
    # Conversions and Experimentation
    'epochconverter:https://www.epochconverter.com'
    'jsfiddle:https://jsfiddle.net'
    'regex101:https://regex101.com'
    'urlencoder:https://meyerweb.com/eric/tools/dencoder'
    'keycodes:https://keycode.info'
    'keycodechart:http://www.foreui.com/articles/Key_Code_Table.htm'
)
 
# <thing> [params]
go_searchlinks=($go_searchlinks[@]
    # Shopping
    'amazon:https://www.amazon.com###/s?url=search-alias%3Daps&field-keywords=$$$'
 
    # Web Searches
    'google:https://www.google.com###/search?q=$$$'
    'google_img:https://www.google.com###/search?q=$$$&tbm=isch'
 
    # Fun
    'httpcat:https://http.cat/###$$$'
 
    # Research
    'colorhex:https://www.color-hex.com###/color/$$$'
    'macapp:http://macappstore.org/###$$$/'
    'nasdaq:https://www.nasdaq.com###/symbol/$$$/real-time'
    'rfc:https://tools.ietf.org###/html/$$$'
    'stackoverflow:https://stackoverflow.com###/search?q=$$$'
)
 
function _golinks_setup() {
    local go_links app link go_l f
    go_links=(${go_hardlinks[@]} ${go_mylinks[@]} ${go_searchlinks[@]})
    for go_l in ${go_links}; do
        if [[ "a${go_l}" =~ ":" ]]; then
            if [[ "a${go_l}" =~ '\$\$\$' ]]; then
                go_l=${${go_l//\\&/&}//&/\\&} # Escape ambersand, as it expands unintentionally in functions.
                app=$(echo "${${${go_l}%%:*}}") # Bash subsitution for "cut -f1 -d:"
                link=$(echo "${${go_l}#*:}")    # Bash subsitution for "cut -f2- -d:"
                # Note the regex requires 4x$ for a match of 3x. Otherwise we keep 1 $.
                # Define function template and static variables
                if [[ "a${go_l}" =~ '###' ]]; then
                    f='function ${app}() { if [[ $[#] -eq 0 ]]; then url "${link_s}";else;url "${link}";fi }' # Template function
                    f=$(echo "${f}" | sed 's@${link_s}@'"${link%###*}"'@' | sed 's@${link}@'"${link//\#\#\#/}"'@')
                else
                    f='function ${app}() { if [[ $[#] -eq 0 ]]; then echo "Error: $0 requires at least 1 argument (search term)";return 1;fi;url "${link}" }' # Template function
                fi
                echo $(echo $f | sed 's@${app}@'"${app}"'@' | sed 's@${link}@'"${link//\#\#\#/}"'@' | sed 's/\$\$\$/$(urlencode "${@}")/')  >> GenerateAliasesAndFunctions_Generated.sh 
            else
                app=$(echo "${${${go_l}%%:*}}") 
                link=$(echo "${${go_l}#*:}")
                echo alias ${app}="'url \"${link}\"'"  >> GenerateAliasesAndFunctions_Generated.sh # Define custom alias
            fi
        else
            echo alias go/${go_l}="'url \"http://go/${go_l}\"'" >> GenerateAliasesAndFunctions_Generated.sh # Define simple alias. Only works at Google and LinkedIn
        fi
    done
}
 
_golinks_setup

Comments