-
-
Save skys215/c5c3b50cabeee22871dc751a2dab0899 to your computer and use it in GitHub Desktop.
A shell script to quickly change npm/composer mirror
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Variable | |
# Template # | |
# Always end with a space | |
# COMMAND_COMPOSER_GLOBAL="composer config -g repos.packagist composer " | |
# Always end with a space | |
# COMMAND_COMPOSER_LOCAL="composer config repo.packagist composer " | |
# The command to reset to default repository globally | |
# COMMAND_COMPOSER_RESET_GLOBAL="composer config -g --unset repos.packagist" | |
# The command to reset to default repository locally | |
# COMMAND_COMPOSER_RESET_LOCAL="composer config --unset repos.packagist" | |
# The Original mirrors which the client has | |
# COMMAND_NPM_ORIGINAL="" | |
# Mirror names, replace DUMMY with package manager name | |
# DUMMY_MIRROR_NAMES=() | |
# Mirror lists, replace DUMMY with package manager name | |
# The order of mirror URL must match with the mirror name | |
# DUMMY_MIRRORS=() | |
# NPM | |
COMMAND_NPM_GLOBAL="npm config set registry " | |
COMMAND_NPM_LOCAL="npm config set registry " | |
COMMAND_NPM_RESET_GLOBAL="npm config set registry https://www.npmjs.org" | |
COMMAND_NPM_RESET_LOCAL="npm config set registry https://www.npmjs.org" | |
COMMAND_NPM_GET_GLOBAL="npm config get --global registry" | |
COMMAND_NPM_GET_LOCAL="npm config get registry" | |
COMMAND_NPM_ORIGINAL="" | |
# NPM mirror names | |
NPM_MIRROR_NAMES=( | |
"taobao" | |
"zju" | |
"huawei" | |
) | |
# NPM mirror names | |
# NPM mirrors | |
NPM_MIRRORS=( | |
"https://registry.npm.taobao.org" | |
"http://mirrors.zju.edu.cn/npm" | |
"https://mirrors.huaweicloud.com/repository/npm/" | |
) | |
# COMPOSER | |
COMMAND_COMPOSER_GLOBAL="composer config -g repos.packagist composer " | |
COMMAND_COMPOSER_LOCAL="composer config repo.packagist composer " | |
COMMAND_COMPOSER_RESET_GLOBAL="composer config -g --unset repos.packagist" | |
COMMAND_COMPOSER_RESET_LOCAL="composer config --unset repos.packagist" | |
COMMAND_COMPOSER_GET_GLOBAL="composer config -g --get repos.packagist" | |
COMMAND_COMPOSER_GET_LOCAL="composer config --get repos.packagist" | |
COMMAND_COMPOSER_ORIGINAL="" | |
COMPOSER_MIRROR_NAMES=( | |
"cnpkg" | |
"lvchn" | |
"phpcomposer" | |
"aliyun" | |
"huawei" | |
) | |
COMPOSER_MIRRORS=( | |
"https://php.cnpkg.org" | |
"https://packagist.laravel-china.org" | |
"https://packagist.phpcomposer.com" | |
"https://mirrors.aliyun.com/composer" | |
"https://mirrors.huaweicloud.com/repository/php" | |
) | |
PACKAGE_NAME="" | |
MIRROR_NAME="fastest" | |
SCOPE_NAME="LOCAL" | |
SHOW_HELP () { | |
echo "Usage: swap npm|composer|help mirror_name|reset [--global|--local]" | |
} | |
NPM () { | |
INDEX=0 | |
COMMAND="" | |
case $2 in | |
"GLOBAL") | |
COMMAND="COMMAND_NPM_GLOBAL" | |
;; | |
"LOCAL") | |
if [ ! -e "package.json" ]; then | |
echo "No package.json file found under current directory, cannot change repository locally." | |
exit 1 | |
fi | |
COMMAND="COMMAND_NPM_LOCAL" | |
;; | |
esac | |
case "$1" in | |
"help") | |
SHOW_HELP | |
exit | |
;; | |
"taobao"|"tb") | |
INDEX=0 | |
;; | |
"zju") | |
INDEX=1 | |
;; | |
"huawei"|"hw") | |
INDEX=2 | |
;; | |
"fastest") | |
#INDEX= function return value | |
echo "TODO" | |
exit | |
;; | |
"get") | |
case SCOPE_NAME in | |
"GLOBAL") | |
COMMAND="COMMAND_NPM_GET_GLOBAL" | |
exit | |
;; | |
"LOCAL") | |
COMMAND="COMMAND_NPM_GET_LOCAL" | |
;; | |
esac | |
echo "${!COMMAND}" | |
eval "${!COMMAND}" | |
exit | |
;; | |
"reset") | |
case $SCOPE_NAME in | |
"GLOBAL") | |
COMMAND="COMMAND_NPM_RESET_GLOBAL" | |
exit | |
;; | |
"LOCAL") | |
COMMAND="COMMAND_NPM_RESET_LOCAL" | |
;; | |
esac | |
eval COMMAND | |
exit | |
;; | |
esac | |
COMMAND="COMMAND_NPM_${SCOPE_NAME}" | |
MIRROR="${NPM_MIRRORS[$INDEX]}" | |
echo "${!COMMAND}${MIRROR}" | |
eval "${!COMMAND}${MIRROR}" | |
} | |
COMPOSER () { | |
INDEX=0 | |
COMMAND="" | |
case $2 in | |
"GLOBAL") | |
COMMAND="COMMAND_COMPOSER_GLOBAL" | |
;; | |
"LOCAL") | |
if [ ! -e "composer.json" ]; then | |
echo "No composer.json file found under current directory, cannot change repository locally." | |
exit 1 | |
fi | |
COMMAND="COMMAND_COMPOSR_LOCAL" | |
;; | |
esac | |
case "$1" in | |
"help") | |
SHOW_HELP | |
exit | |
;; | |
"cnpkg") | |
INDEX=0 | |
;; | |
"lvchn") | |
INDEX=1 | |
;; | |
"phpcomposer") | |
INDEX=2 | |
;; | |
"aliyun") | |
INDEX=3 | |
;; | |
"huawei") | |
INDEX=4 | |
;; | |
"fastest") | |
#INDEX= function return value | |
echo "TODO" | |
exit | |
;; | |
"get") | |
case $SCOPE_NAME in | |
"GLOBAL") | |
COMMAND="COMMAND_COMPOSER_GET_GLOBAL" | |
;; | |
"LOCAL") | |
COMMAND="COMMAND_COMPOSER_GET_LOCAL" | |
;; | |
esac | |
echo "${!COMMAND}" | |
eval "${!COMMAND}" | |
exit | |
;; | |
"reset") | |
case SCOPE_NAME in | |
"GLOBAL") | |
COMMAND="COMMAND_COMPOSER_RESET_GLOBAL" | |
;; | |
"LOCAL") | |
COMMAND="COMMAND_COMPOSER_RESET_LOCAL" | |
;; | |
esac | |
echo "${COMMAND}" | |
eval "${!COMMAND}" | |
exit | |
;; | |
esac | |
COMMAND="COMMAND_COMPOSER_${SCOPE_NAME}" | |
MIRROR="${COMPOSER_MIRRORS[$INDEX]}" | |
echo "${!COMMAND}${MIRROR}" | |
eval "${!COMMAND}${MIRROR}" | |
} | |
if [ $# -eq 0 ]; then | |
echo "Please set which package you want to set mirror" | |
fi | |
if [ $# -eq 3 ]; then | |
case $3 in | |
'--global') | |
SCOPE_NAME="GLOBAL" | |
;; | |
'--local') | |
SCOPE_NAME="LOCAL" | |
;; | |
*) | |
SCOPE_NAME="LOCAL" | |
;; | |
esac | |
fi | |
case $1 in | |
help) | |
SHOW_HELP | |
;; | |
npm) | |
NPM $2 $SCOPE_NAME | |
;; | |
composer) | |
COMPOSER $2 $SCOPE_NAME | |
;; | |
*) | |
echo $2" not supported" | |
exit 1 | |
;; | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment