Skip to content

Instantly share code, notes, and snippets.

@bsradcliffe
Forked from manekinekko/set_proxy.sh
Last active May 4, 2016 14:15
Show Gist options
  • Save bsradcliffe/4e041c4b8af7b6db9578 to your computer and use it in GitHub Desktop.
Save bsradcliffe/4e041c4b8af7b6db9578 to your computer and use it in GitHub Desktop.
Toggling Proxy Settings for Git, NPM, Bower and Package Control (Mac OS X) automatically
#! /bin/sh
# Configure the below variables with your respective Keychain and proxy information
# Grabs your user password from Keychain
export SECRET="`security find-generic-password -w -s <PASSWORD_PROFILE>`"
AUTH="$USER:$SECRET"
PROXY='<http://PROXY:PORT>'
AUTH_PROXY=<'http://'$AUTH'@PROXY:PORT>'
if [ "$1" == "on" ]; then
echo "Exporting proxy."
export http_proxy=$AUTH_PROXY
export https_proxy=$AUTH_PROXY
echo "Setting git proxy to $AUTH_PROXY."
git config --global http.proxy $AUTH_PROXY
git config --global https.proxy $AUTH_PROXY
echo "Setting npm proxy to $AUTH_PROXY."
npm config set proxy $AUTH_PROXY
npm config set https-proxy $AUTH_PROXY
echo "Setting bower proxy to $AUTH_PROXY."
sed -i.bak 's|"proxy": ""|"proxy": "'"$AUTH_PROXY"'"|g' $HOME/.bowerrc
sed -i.bak 's|"https-proxy": ""|"https-proxy": "'"$AUTH_PROXY"'"|g' $HOME/.bowerrc
echo "Setting Package Control proxy to $AUTH_PROXY."
sed -i.bak 's|"http_proxy": ""|"http_proxy": "'"$PROXY"'"|g' "$HOME/Library/Application Support/Sublime Text 3/Packages/User/Package Control.sublime-settings"
sed -i.bak 's|"https_proxy": ""|"https_proxy": "'"$PROXY"'"|g' "$HOME/Library/Application Support/Sublime Text 3/Packages/User/Package Control.sublime-settings"
sed -i.bak 's|"proxy_username": ""|"proxy_username": "'"$USER"'"|g' "$HOME/Library/Application Support/Sublime Text 3/Packages/User/Package Control.sublime-settings"
sed -i.bak 's|"proxy_password": ""|"proxy_password": "'"$SECRET"'"|g' "$HOME/Library/Application Support/Sublime Text 3/Packages/User/Package Control.sublime-settings"
else
echo "Resetting proxy."
export http_proxy=
export https_proxy=
echo "Resetting git proxy."
git config --global --unset http.proxy > /dev/null 2>&1
git config --global --unset https.proxy > /dev/null 2>&1
echo "Resetting npm proxy."
npm config rm proxy > /dev/null 2>&1
npm config rm https-proxy > /dev/null 2>&1
echo "Resetting bower proxy."
sed -i.bak 's|"proxy": "'"$AUTH_PROXY"'"|"proxy": ""|g' $HOME/.bowerrc
sed -i.bak 's|"https-proxy": "'"$AUTH_PROXY"'"|"https-proxy": ""|g' $HOME/.bowerrc
echo "Resetting Package Control proxy."
sed -i.bak 's|"http_proxy": "'"$PROXY"'"|"http_proxy": ""|g' "$HOME/Library/Application Support/Sublime Text 3/Packages/User/Package Control.sublime-settings"
sed -i.bak 's|"https_proxy": "'"$PROXY"'"|"https_proxy": ""|g' "$HOME/Library/Application Support/Sublime Text 3/Packages/User/Package Control.sublime-settings"
sed -i.bak 's|"proxy_username": "'"$USER"'"|"proxy_username": ""|g' "$HOME/Library/Application Support/Sublime Text 3/Packages/User/Package Control.sublime-settings"
sed -i.bak 's|"proxy_password": "'"$SECRET"'"|"proxy_password": ""|g' "$HOME/Library/Application Support/Sublime Text 3/Packages/User/Package Control.sublime-settings"
fi
@bsradcliffe
Copy link
Author

Modified for proper package control configuration and variabilizing sensitive information.

I'm not sure if sed is correctly implemented here--providing a regular expression might prove a better alternative in substitutions than doing a static check against strings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment