shell
ネットワークに応じて処理を振り分けるスクリプト
#!/bin/zsh
# ネットワーク環境を切り替える
switchNetwork() {
local location=$1
currentLocation=$(networksetup -getcurrentlocation)
if test $currentLocation = $location; then
return
fi
scselect $(scselect | grep $location | awk '{ print $1 }')
osascript -e 'display notification "'"Switch network location to ${1}"'" with title "'"${0##*/}"'" '
}
# Git リポジトリ設定を切り替える
switchGitConfig() {
local location=$1
case "$location" in
Home)
git config --global --replace-all http.$GIT_REPO_URL_HTTPS.proxy $PROXY_URL
git config --global --replace-all url.$GIT_REPO_URL_HTTPS.insteadOf $GIT_REPO_URL_SSH
git config --global --replace-all url.$GIT_REPO_URL_HTTPS.insteadOf ssh://$GIT_REPO_URL_SSH --add
;;
Office)
git config --global --unset-all http.$GIT_REPO_URL_HTTPS.proxy
git config --global --unset-all url.$GIT_REPO_URL_HTTPS.insteadOf
;;
esac
}
main() {
set -x
ADAPTER=en0
# Wi-FiがONになっているか
airportpower=$(networksetup -getairportpower $ADAPTER | awk -F': ' '{ print $2 }')
if test ${airportpower} = 'Off'; then
echo 'Wifi is Off.'
exit
fi
# SSIDを取得
ssid=$(networksetup -getairportnetwork $ADAPTER | awk -F': ' '{ print $2 }')
location=Automatic
case "$ssid" in
$SSID_HOME)
location=Home
;;
$SSID_OFFICE)
location=Office
;;
esac
switchNetwork $location
switchGitConfig $location
set +x
}
main