From 38283a81964c6657c9dd5ce7798831e74d8b8d38 Mon Sep 17 00:00:00 2001 From: Super Manito <68613938+SuperManito@users.noreply.github.com> Date: Thu, 17 Mar 2022 21:34:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=94=AF=E6=8C=81=E9=83=A8?= =?UTF-8?q?=E5=88=86=E4=BA=91=E8=AE=A1=E7=AE=97=E5=8E=82=E5=95=86=E5=BC=80?= =?UTF-8?q?=E6=BA=90=E9=95=9C=E5=83=8F=E7=AB=99=E5=86=85=E7=BD=91=E5=9C=B0?= =?UTF-8?q?=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChangeMirrors.sh | 143 ++++++++++++++++++++----------- DockerInstallation.sh | 64 +++++++------- README.md | 13 +-- docs/README.md | 18 ++-- docs/_coverpage.md | 6 +- docs/css/vue.css | 2 +- docs/index.html | 4 +- docs/js/docsify-copy-code.min.js | 2 +- 8 files changed, 152 insertions(+), 100 deletions(-) diff --git a/ChangeMirrors.sh b/ChangeMirrors.sh index ceaa3c3..440ba50 100644 --- a/ChangeMirrors.sh +++ b/ChangeMirrors.sh @@ -1,6 +1,6 @@ #!/bin/bash ## Author: SuperManito -## Modified: 2022-02-25 +## Modified: 2022-03-17 ## License: GPL-2.0 ## Github: https://github.com/SuperManito/LinuxMirrors ## Gitee: https://gitee.com/SuperManito/LinuxMirrors @@ -91,7 +91,7 @@ function EnvJudgment() { if [ $? -eq 0 ]; then clear else - echo -e "\n${ERROR} lsb-release 软件包安装失败" + echo -e "\n$ERROR lsb-release 软件包安装失败" echo -e "\n本脚本需要通过 lsb_release 指令判断系统类型,当前可能为精简安装的系统一般系统自带,请自行安装后重新执行脚本!\n" exit fi @@ -156,7 +156,7 @@ function EnvJudgment() { function PermissionJudgment() { ## 权限判定: if [ $UID -ne 0 ]; then - echo -e "\n${ERROR} Permission no enough, please use user ROOT! \n" + echo -e "\n$ERROR Permission no enough, please use user ROOT! \n" exit fi } @@ -165,7 +165,7 @@ function PermissionJudgment() { function CloseFirewall() { systemctl status firewalld | grep running -q if [ $? -eq 0 ]; then - CHOICE_C=$(echo -e "\n${BOLD}└ 是否关闭防火墙和 SELINUX? [Y/n] ${PLAIN}") + CHOICE_C=$(echo -e "\n${BOLD}└─ 是否关闭防火墙和 SELINUX? [Y/n] ${PLAIN}") read -p "${CHOICE_C}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in @@ -175,7 +175,7 @@ function CloseFirewall() { ;; [Nn] | [Nn][Oo]) ;; *) - echo -e "\n${WARN} 输入错误,默认不关闭!" + echo -e "\n$WARN 输入错误,默认不关闭!" ;; esac fi @@ -203,7 +203,7 @@ function BackupMirrors() { ## /etc/apt/sources.list if [ -s $DebianSourceList ]; then if [ -s $DebianSourceListBackup ]; then - CHOICE_BACKUP1=$(echo -e "\n${BOLD}└ 检测到系统存在已备份的 list 源文件,是否覆盖备份? [Y/n] ${PLAIN}") + CHOICE_BACKUP1=$(echo -e "\n${BOLD}└─ 检测到系统存在已备份的 list 源文件,是否覆盖备份? [Y/n] ${PLAIN}") read -p "${CHOICE_BACKUP1}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in @@ -212,12 +212,12 @@ function BackupMirrors() { ;; [Nn] | [Nn][Oo]) ;; *) - echo -e "\n${WARN} 输入错误,默认不覆盖!" + echo -e "\n$WARN 输入错误,默认不覆盖!" ;; esac else cp -rf $DebianSourceList $DebianSourceListBackup >/dev/null 2>&1 - echo -e "\n${COMPLETE} 已备份原有 list 源文件至 $DebianSourceListBackup" + echo -e "\n$COMPLETE 已备份原有 list 源文件至 $DebianSourceListBackup" sleep 1s fi else @@ -228,7 +228,7 @@ function BackupMirrors() { ## /etc/apt/sources.list.d if [ -d $DebianExtendListDir ] && [ ${VERIFICATION_FILES} -eq 0 ]; then if [ -d $DebianExtendListDirBackup ] && [ ${VERIFICATION_BACKUPFILES} -eq 0 ]; then - CHOICE_BACKUP2=$(echo -e "\n${BOLD}└ 检测到系统存在已备份的 list 第三方源文件,是否覆盖备份? [Y/n] ${PLAIN}") + CHOICE_BACKUP2=$(echo -e "\n${BOLD}└─ 检测到系统存在已备份的 list 第三方源文件,是否覆盖备份? [Y/n] ${PLAIN}") read -p "${CHOICE_BACKUP2}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in @@ -237,13 +237,13 @@ function BackupMirrors() { ;; [Nn] | [Nn][Oo]) ;; *) - echo -e "\n${WARN} 输入错误,默认不覆盖!" + echo -e "\n$WARN 输入错误,默认不覆盖!" ;; esac else [ -d $DebianExtendListDirBackup ] || mkdir -p $DebianExtendListDirBackup cp -rf $DebianExtendListDir/* $DebianExtendListDirBackup >/dev/null 2>&1 - echo -e "${COMPLETE} 已备份原有 list 第三方源文件至 $DebianExtendListDirBackup 目录" + echo -e "$COMPLETE 已备份原有 list 第三方源文件至 $DebianExtendListDirBackup 目录" sleep 1s fi fi @@ -251,7 +251,7 @@ function BackupMirrors() { ## /etc/yum.repos.d if [ ${VERIFICATION_FILES} -eq 0 ]; then if [ -d $RedHatReposDirBackup ] && [ ${VERIFICATION_BACKUPFILES} -eq 0 ]; then - CHOICE_BACKUP3=$(echo -e "\n${BOLD}└ 检测到系统存在已备份的 repo 源文件,是否覆盖备份? [Y/n] ${PLAIN}") + CHOICE_BACKUP3=$(echo -e "\n${BOLD}└─ 检测到系统存在已备份的 repo 源文件,是否覆盖备份? [Y/n] ${PLAIN}") read -p "${CHOICE_BACKUP3}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in @@ -260,13 +260,13 @@ function BackupMirrors() { ;; [Nn] | [Nn][Oo]) ;; *) - echo -e "\n${WARN} 输入错误,默认不覆盖!" + echo -e "\n$WARN 输入错误,默认不覆盖!" ;; esac else [ -d $RedHatReposDirBackup ] || mkdir -p $RedHatReposDirBackup cp -rf $RedHatReposDir/* $RedHatReposDirBackup >/dev/null 2>&1 - echo -e "\n${COMPLETE} 已备份原有 repo 源文件至 $RedHatReposDirBackup 目录" + echo -e "\n$COMPLETE 已备份原有 repo 源文件至 $RedHatReposDirBackup 目录" sleep 1s fi else @@ -308,9 +308,9 @@ function ChangeMirrors() { esac VERIFICATION_SOURCESYNC=$? if [ ${VERIFICATION_SOURCESYNC} -eq 0 ]; then - echo -e "\n${SUCCESS} 软件源更换完毕" + echo -e "\n$COMPLETE 软件源更换完毕" else - echo -e "\n${ERROR} 软件源${SYNC_TXT}失败\n" + echo -e "\n$ERROR 软件源${SYNC_TXT}失败\n" echo -e "请再次执行脚本并更换软件源后进行尝试,如果仍然${SYNC_TXT}失败那么可能由以下原因导致" echo -e "1. 网络问题:例如网络异常、网络间歇式中断、由地区影响的网络因素等" echo -e "2. 软件源问题:所选镜像站正在维护,或者出现罕见的少数文件同步出错导致软件源${SYNC_TXT}命令执行后返回错误状态" @@ -321,7 +321,7 @@ function ChangeMirrors() { ## 更新软件包 function UpgradeSoftware() { - CHOICE_B=$(echo -e "\n${BOLD}└ 是否更新软件包? [Y/n] ${PLAIN}") + CHOICE_B=$(echo -e "\n${BOLD}└─ 是否更新软件包? [Y/n] ${PLAIN}") read -p "${CHOICE_B}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in @@ -335,7 +335,7 @@ function UpgradeSoftware() { yum update -y ;; esac - CHOICE_C=$(echo -e "\n${BOLD}└ 是否清理已下载的软件包缓存? [Y/n] ${PLAIN}") + CHOICE_C=$(echo -e "\n${BOLD}└─ 是否清理已下载的软件包缓存? [Y/n] ${PLAIN}") read -p "${CHOICE_C}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in @@ -348,17 +348,17 @@ function UpgradeSoftware() { yum clean packages -y >/dev/null 2>&1 fi - echo -e "\n${COMPLETE} 清理完毕" + echo -e "\n$COMPLETE 清理完毕" ;; [Nn] | [Nn][Oo]) ;; *) - echo -e "\n${WARN} 输入错误,默认不清理!" + echo -e "\n$WARN 输入错误,默认不清理!" ;; esac ;; [Nn] | [Nn][Oo]) ;; *) - echo -e "\n${WARN} 输入错误,默认不更新!" + echo -e "\n$WARN 输入错误,默认不更新!" ;; esac } @@ -491,6 +491,55 @@ function EPELMirrors() { ## 选择国内源 function ChooseMirrors() { + + ## 云计算厂商的软件源 + ## 分外网(公网)地址和内网地址,内网地址仅面向云计算厂商云服务器用户使用 + ## 内网地址不支持使用 HTTPS 协议 + function Cloud_Computing_Vendors_Mirrors() { + ## 公网地址 + case $1 in + 1) + Extranet="mirrors.aliyun.com" + ;; + 2) + Extranet="mirrors.cloud.tencent.com" + ;; + 3) + Extranet="repo.huaweicloud.com" + ;; + esac + ## 内网地址 + case $1 in + 1) + Intranet="mirrors.cloud.aliyuncs.com" + ;; + 2) + Intranet="mirrors.tencentyun.com" + ;; + 3) + Intranet="mirrors.myhuaweicloud.com" + ;; + esac + + CHOICE_A_TMP=$(echo -e "\n ${BOLD}└─ 是否使用公网地址? [Y/n] ${PLAIN}") + read -p "${CHOICE_A_TMP}" INPUT + [ -z ${INPUT} ] && INPUT=Y + case $INPUT in + [Yy] | [Yy][Ee][Ss]) + SOURCE=${Extranet} + ;; + [Nn] | [Nn][Oo]) + SOURCE=${Intranet} + echo -e "\n $WARN 已切换至内网地址,仅支持云计算厂商云服务器用户使用!" + NOT_SUPPORT_HTTPS="True" + ;; + *) + SOURCE=${Extranet} + echo -e "\n$WARN 输入错误,默认使用公网地址!" + ;; + esac + } + clear echo -e '+---------------------------------------------------+' echo -e '| |' @@ -528,17 +577,11 @@ function ChooseMirrors() { echo -e " 系统时间 ${BLUE}$(date "+%Y-%m-%d %H:%M:%S")${PLAIN}" echo -e '' echo -e '#####################################################' - CHOICE_A=$(echo -e "\n${BOLD}└ 请选择并输入你想使用的软件源 [ 1-13 ]:${PLAIN}") + CHOICE_A=$(echo -e "\n${BOLD}└─ 请选择并输入你想使用的软件源 [ 1-13 ]:${PLAIN}") read -p "${CHOICE_A}" INPUT case $INPUT in - 1) - SOURCE="mirrors.aliyun.com" - ;; - 2) - SOURCE="mirrors.cloud.tencent.com" - ;; - 3) - SOURCE="repo.huaweicloud.com" + 1 | 2 | 3) + Cloud_Computing_Vendors_Mirrors $INPUT ;; 4) SOURCE="mirrors.163.com" @@ -572,7 +615,7 @@ function ChooseMirrors() { ;; *) SOURCE="mirrors.aliyun.com" - echo -e "\n${WARN} 输入错误,将默认使用 ${BLUE}阿里云${PLAIN} 作为国内源!" + echo -e "\n$WARN 输入错误,将默认使用 ${BLUE}阿里云${PLAIN} 作为国内源!" sleep 2s ;; esac @@ -590,9 +633,9 @@ function ChooseMirrors() { VERIFICATION_EPELBACKUPFILES=$? if [ ${VERIFICATION_EPEL} -eq 0 ]; then - CHOICE_D=$(echo -e "\n${BOLD}└ 检测到系统已安装 EPEL 扩展源,是否替换/覆盖为国内源? [Y/n] ${PLAIN}") + CHOICE_D=$(echo -e "\n ${BOLD}└─ 检测到系统已安装 EPEL 扩展源,是否替换/覆盖为国内源? [Y/n] ${PLAIN}") else - CHOICE_D=$(echo -e "\n${BOLD}└ 是否安装 EPEL 扩展源? [Y/n] ${PLAIN}") + CHOICE_D=$(echo -e "\n ${BOLD}└─ 是否安装 EPEL 扩展源? [Y/n] ${PLAIN}") fi read -p "${CHOICE_D}" INPUT [ -z ${INPUT} ] && INPUT=Y @@ -604,28 +647,32 @@ function ChooseMirrors() { EPEL_INSTALL="False" ;; *) - echo -e "\n${WARN} 输入错误,默认不更换!" + echo -e "\n $WARN 输入错误,默认不更换!" EPEL_INSTALL="False" ;; esac fi ## 选择同步软件源所使用的 WEB 协议( HTTP:80 端口,HTTPS:443 端口) - CHOICE_E=$(echo -e "\n${BOLD}└ 软件源是否使用 HTTP 协议? [Y/n] ${PLAIN}") - read -p "${CHOICE_E}" INPUT - [ -z ${INPUT} ] && INPUT=Y - case $INPUT in - [Yy] | [Yy][Ee][Ss]) + if [[ ${NOT_SUPPORT_HTTPS} == "True" ]]; then WEB_PROTOCOL="http" - ;; - [Nn] | [Nn][Oo]) - WEB_PROTOCOL="https" - ;; - *) - echo -e "\n${WARN} 输入错误,默认使用 HTTPS 协议!" - WEB_PROTOCOL="https" - ;; - esac + else + CHOICE_E=$(echo -e "\n${BOLD}└─ 软件源是否使用 HTTP 协议? [Y/n] ${PLAIN}") + read -p "${CHOICE_E}" INPUT + [ -z ${INPUT} ] && INPUT=Y + case $INPUT in + [Yy] | [Yy][Ee][Ss]) + WEB_PROTOCOL="http" + ;; + [Nn] | [Nn][Oo]) + WEB_PROTOCOL="https" + ;; + *) + echo -e "\n$WARN 输入错误,默认使用 HTTPS 协议!" + WEB_PROTOCOL="https" + ;; + esac + fi ## 关闭 防火墙 和 SELINUX [ ${SYSTEM_FACTIONS} = ${SYSTEM_REDHAT} ] && CloseFirewall diff --git a/DockerInstallation.sh b/DockerInstallation.sh index 0cdf756..cf42286 100644 --- a/DockerInstallation.sh +++ b/DockerInstallation.sh @@ -1,6 +1,6 @@ #!/bin/bash ## Author: SuperManito -## Modified: 2022-02-22 +## Modified: 2022-03-17 ## License: GPL-2.0 ## Github: https://github.com/SuperManito/LinuxMirrors ## Gitee: https://gitee.com/SuperManito/LinuxMirrors @@ -159,7 +159,7 @@ function EnvJudgment() { ## 基础环境判断 function PermissionJudgment() { if [ $UID -ne 0 ]; then - echo -e "\n${ERROR} Permission no enough, please use user ROOT! \n" + echo -e "\n$ERROR Permission no enough, please use user ROOT! \n" exit fi } @@ -202,10 +202,10 @@ function InstallationEnvironment() { esac VERIFICATION_SOURCESYNC=$? if [ ${VERIFICATION_SOURCESYNC} -ne 0 ]; then - echo -e "\n${ERROR} 软件源${SYNC_TXT}出错,请先确保软件包管理工具可用!\n" + echo -e "\n$ERROR 软件源${SYNC_TXT}出错,请先确保软件包管理工具可用!\n" exit fi - echo -e "\n${SUCCESS} 软件源${SYNC_TXT}结束\n" + echo -e "\n$COMPLETE 软件源${SYNC_TXT}结束\n" case ${SYSTEM_FACTIONS} in Debian) apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common @@ -299,7 +299,7 @@ function DockerEngine() { cat $DockerVersionFile echo -e '\n注:以上可供选择的安装版本由官方源提供,若系统过新可能无法安装较旧的版本' while true; do - CHOICE_F=$(echo -e "\n${BOLD}└ 请根据上面的列表,输入你想要安装的具体版本号:${PLAIN}\n") + CHOICE_F=$(echo -e "\n${BOLD}└─ 请根据上面的列表,输入你想要安装的具体版本号:${PLAIN}\n") read -p "${CHOICE_F}" DOCKER_VERSION echo '' cat $DockerVersionFile | grep -Ew "${DOCKER_VERSION}" >/dev/null 2>&1 @@ -309,10 +309,10 @@ function DockerEngine() { rm -rf $DockerVersionFile break else - echo -e "${ERROR} 请输入正确的版本号!" + echo -e "$ERROR 请输入正确的版本号!" fi else - echo -e "${ERROR} 输入错误请重新输入!" + echo -e "$ERROR 输入错误请重新输入!" fi done case ${SYSTEM_FACTIONS} in @@ -348,7 +348,7 @@ function DockerEngine() { if [[ ${REGISTRY_SOURCE_OFFICIAL} == "False" ]]; then if [ -d $DockerDir ] && [ -e $DockerConfig ]; then if [ -e $DockerConfigBackup ]; then - CHOICE_BACKUP=$(echo -e "\n${BOLD}└ 检测到已备份的 Docker 配置文件,是否覆盖备份? [Y/n] ${PLAIN}") + CHOICE_BACKUP=$(echo -e "\n${BOLD}└─ 检测到已备份的 Docker 配置文件,是否覆盖备份? [Y/n] ${PLAIN}") read -p "${CHOICE_BACKUP}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in @@ -357,12 +357,12 @@ function DockerEngine() { ;; [Nn] | [Nn][Oo]) ;; *) - echo -e "\n${WARN} 输入错误,默认不覆盖!" + echo -e "\n$WARN 输入错误,默认不覆盖!" ;; esac else cp -rf $DockerConfig $DockerConfigBackup >/dev/null 2>&1 - echo -e "\n${COMPLETE} 已备份原有 Docker 配置文件至 $DockerConfigBackup\n" + echo -e "\n$COMPLETE 已备份原有 Docker 配置文件至 $DockerConfigBackup\n" fi sleep 2s else @@ -390,7 +390,7 @@ function DockerEngine() { DOCKER_VERSION_LATEST=$(cat $DockerVersionFile | head -n 1) if [[ ${DOCKER_INSTALLED_VERSION} == ${DOCKER_VERSION_LATEST} ]]; then if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then - echo -e "\n${SUCCESS} 检测到已安装最新版本的 Docker Engine,跳过安装" + echo -e "\n$COMPLETE 检测到已安装最新版本的 Docker Engine,跳过安装" ConfigureMirror systemctl status docker | grep running -q if [ $? -eq 0 ]; then @@ -403,13 +403,13 @@ function DockerEngine() { AuthorSignature exit else - CHOICE_E=$(echo -e "\n${BOLD}└ 检测到已安装最新版本的 Docker Engine,是否继续安装其它版本? [Y/n] ${PLAIN}") + CHOICE_E=$(echo -e "\n${BOLD}└─ 检测到已安装最新版本的 Docker Engine,是否继续安装其它版本? [Y/n] ${PLAIN}") fi else if [[ ${DOCKER_VERSION_INSTALL_LATEST} == "True" ]]; then - CHOICE_E=$(echo -e "\n${BOLD}└ 检测到已安装旧版本的 Docker Engine,是否覆盖安装为最新版本? [Y/n] ${PLAIN}") + CHOICE_E=$(echo -e "\n${BOLD}└─ 检测到已安装旧版本的 Docker Engine,是否覆盖安装为最新版本? [Y/n] ${PLAIN}") else - CHOICE_E=$(echo -e "\n${BOLD}└ 检测到已安装旧版本的 Docker Engine,是否继续安装其它版本? [Y/n] ${PLAIN}") + CHOICE_E=$(echo -e "\n${BOLD}└─ 检测到已安装旧版本的 Docker Engine,是否继续安装其它版本? [Y/n] ${PLAIN}") fi fi read -p "${CHOICE_E}" INPUT @@ -418,12 +418,12 @@ function DockerEngine() { [Yy] | [Yy][Ee][Ss]) echo -en "\n${WORKING} 正在卸载之前的版本..." RemoveOldVersion - echo -e "\n\n${SUCCESS} 卸载完毕\n" + echo -e "\n\n$COMPLETE 卸载完毕\n" Install ;; [Nn] | [Nn][Oo]) ;; *) - echo -e "\n${WARN} 输入错误,默认不覆盖安装!\n" + echo -e "\n$WARN 输入错误,默认不覆盖安装!\n" ;; esac rm -rf $DockerVersionFile @@ -461,7 +461,7 @@ function DockerCompose() { else pip3 install docker-compose fi - [ $? -ne 0 ] && echo -e "\n${ERROR} Docker Compose 安装失败\n\n检测到当前处理器架构为 ${ARCH} ,无法绝对保证安装成功,自行查看 pip 报错原因" + [ $? -ne 0 ] && echo -e "\n$ERROR Docker Compose 安装失败\n\n检测到当前处理器架构为 ${ARCH} ,无法绝对保证安装成功,自行查看 pip 报错原因" fi fi echo -e '' @@ -474,9 +474,9 @@ function ShowVersion() { VERIFICATION_DOCKER=$? [[ ${DOCKER_COMPOSE} == "True" ]] && docker-compose -v if [ ${VERIFICATION_DOCKER} -eq 0 ]; then - echo -e "\n${SUCCESS} 安装完成" + echo -e "\n$COMPLETE 安装完成" else - echo -e "\n${ERROR} 安装失败" + echo -e "\n$ERROR 安装失败" case ${SYSTEM_FACTIONS} in Debian) echo -e "\n检查源文件: cat $DockerSourceList" @@ -499,7 +499,7 @@ function ShowVersion() { sleep 2 systemctl status docker | grep running -q if [ $? -ne 0 ]; then - echo -e "\n${ERROR} 检测到 Docker 服务启动异常,可能由于重复安装相同版本导致" + echo -e "\n$ERROR 检测到 Docker 服务启动异常,可能由于重复安装相同版本导致" echo -e "\n请执行 systemctl start docker 或 service docker start 命令尝试启动" echo -e "\n官方安装文档:https://docs.docker.com/engine/install" fi @@ -556,7 +556,7 @@ function ChooseMirrors() { echo -e " 系统时间 $(date "+%Y-%m-%d %H:%M:%S")" echo -e '' echo -e '#####################################################' - CHOICE_A=$(echo -e "\n${BOLD}└ 请选择并输入你想使用的 Docker CE 源 [ 1~8 ]:${PLAIN}") + CHOICE_A=$(echo -e "\n${BOLD}└─ 请选择并输入你想使用的 Docker CE 源 [ 1~8 ]:${PLAIN}") read -p "${CHOICE_A}" INPUT case $INPUT in 1) @@ -585,12 +585,12 @@ function ChooseMirrors() { ;; *) SOURCE="mirrors.aliyun.com/docker-ce" - echo -e "\n${WARN} 输入错误,默认使用阿里云!" + echo -e "\n$WARN 输入错误,默认使用阿里云!" sleep 1s ;; esac ## 是否手动选择安装版本 - CHOICE_C=$(echo -e "\n${BOLD} └ 是否安装最新版本的 Docker Engine? [Y/n] ${PLAIN}") + CHOICE_C=$(echo -e "\n ${BOLD}└─ 是否安装最新版本的 Docker Engine? [Y/n] ${PLAIN}") read -p "${CHOICE_C}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in @@ -600,15 +600,15 @@ function ChooseMirrors() { [Nn] | [Nn][Oo]) DOCKER_VERSION_INSTALL_LATEST="False" if [ ${SOURCE} != "download.docker.com" ]; then - echo -e "\n${WARN} Docker CE 源已替换成官方源!" + echo -e "\n$WARN Docker CE 源已替换成官方源!" fi ;; *) DOCKER_VERSION_INSTALL_LATEST="True" - echo -e "\n${WARN} 输入错误,默认安装最新版本!" + echo -e "\n$WARN 输入错误,默认安装最新版本!" ;; esac - CHOICE_B=$(echo -e "\n${BOLD}└ 请选择并输入你想使用的 Docker Hub 源 [ 1~12 ]:${PLAIN}") + CHOICE_B=$(echo -e "\n${BOLD}└─ 请选择并输入你想使用的 Docker Hub 源 [ 1~12 ]:${PLAIN}") read -p "${CHOICE_B}" INPUT case $INPUT in 1) @@ -662,21 +662,21 @@ function ChooseMirrors() { *) REGISTRY_SOURCE="registry.cn-hangzhou.aliyuncs.com" REGISTRY_SOURCE_OFFICIAL="False" - echo -e "\n${WARN} 输入错误,默认使用 ${BLUE}阿里云(杭州)${PLAIN}!" + echo -e "\n$WARN 输入错误,默认使用 ${BLUE}阿里云(杭州)${PLAIN}!" sleep 1s ;; esac if [ -x $DockerCompose ]; then - CHOICE_D=$(echo -e "\n${BOLD}└ 检测到已安装 Docker Compose ,是否覆盖安装? [Y/n] ${PLAIN}") + CHOICE_D=$(echo -e "\n${BOLD}└─ 检测到已安装 Docker Compose ,是否覆盖安装? [Y/n] ${PLAIN}") else - CHOICE_D=$(echo -e "\n${BOLD}└ 是否安装 Docker Compose? [Y/n] ${PLAIN}") + CHOICE_D=$(echo -e "\n${BOLD}└─ 是否安装 Docker Compose? [Y/n] ${PLAIN}") fi read -p "${CHOICE_D}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in [Yy] | [Yy][Ee][Ss]) DOCKER_COMPOSE="True" - CHOICE_D1=$(echo -e "\n${BOLD} └ 是否使用国内代理进行下载? [Y/n] ${PLAIN}") + CHOICE_D1=$(echo -e "\n ${BOLD}└─ 是否使用国内代理进行下载? [Y/n] ${PLAIN}") read -p "${CHOICE_D1}" INPUT [ -z ${INPUT} ] && INPUT=Y case $INPUT in @@ -688,7 +688,7 @@ function ChooseMirrors() { ;; *) DOCKER_COMPOSE_DOWNLOAD_PROXY="False" - echo -e "\n${WARN} 输入错误,默认不使用!\n" + echo -e "\n$WARN 输入错误,默认不使用!\n" ;; esac ;; @@ -697,7 +697,7 @@ function ChooseMirrors() { ;; *) DOCKER_COMPOSE="False" - echo -e "\n${WARN} 输入错误,默认不安装!\n" + echo -e "\n$WARN 输入错误,默认不安装!\n" ;; esac echo -e '' diff --git a/README.md b/README.md index b721ddb..c92b787 100644 --- a/README.md +++ b/README.md @@ -103,26 +103,27 @@ ``` > `Docker CE`:Docker Community Edition 镜像仓库,用于下载并安装 Docker 相关软件包。\ - > `Docker Hub`:Docker Hub 镜像仓库,默认为官方提供的公共库,用于切换下载镜像时的来源仓库,简称镜像加速器。 + > `Docker Hub`:Docker Hub 镜像仓库,默认为官方提供的公共库,用于切换下载镜像时的来源仓库,又称镜像加速器。 > _注意:脚本集成安装 `Docker Engine`与 `Docker Compose`,可手动选择安装版本和下载源,还可手动选择镜像加速器,支持国内外服务器环境和 `ARM`架构处理器环境使用。_ *** ### 常见问题与帮助 -- 如果提示 `Command 'curl' not found` 则说明当前未安装 `curl` 软件包 + + - 如果提示 `Command 'curl' not found` 则说明当前未安装 `curl` 软件包 ```bash - sudo yum install -y curl || sudo apt install -y curl + sudo yum install -y curl || sudo apt-get install -y curl ``` -- 如果提示 `Command 'wget' not found` 则说明当前未安装 `wget` 软件包 + - 如果提示 `Command 'wget' not found` 则说明当前未安装 `wget` 软件包 ```bash - sudo yum install -y wget || sudo apt install -y wget + sudo yum install -y wget || sudo apt-get install -y wget ``` -- 如果提示 `bash: /proc/self/fd/11: No such file or directory`,请切换至 `Root` 用户执行。 + - 如果提示 `bash: /proc/self/fd/11: No such file or directory`,请切换至 `Root` 用户执行 *** diff --git a/docs/README.md b/docs/README.md index c93f012..0d8e6cc 100644 --- a/docs/README.md +++ b/docs/README.md @@ -84,12 +84,13 @@ bash <(curl -sSL https://cdn.jsdelivr.net/gh/SuperManito/LinuxMirrors@main/Chang - 执行脚本过程中会自动备份原有源无需手动备份,期间会在终端输出多个主观选择交互内容,可按回车键快速确认 - 脚本支持在原有源配置错误或者不存在的情况下使用,并且可以重复使用;脚本变更的软件源默认使用 `HTTP 协议` -> [!ATTENTION|label:未启用的源] +> [!WARNING|label:未启用的源] > **Debian** 系 Linux 默认禁用了**源码仓库**和**预发布软件源**,若需启用请将 `list` 源文件中相关内容的所在行**取消注释**\ > **RedHat** 系 Linux 配置了所有可以配置的仓库,但有一些仓库**默认没有启用**,若需启用请将 `repo` 源文件中的 `enabled=0` 修改成 `enabled=1` ## 其它脚本 -- #### :fa-brands fa-docker:`Docker` 一键安装脚本 + +- ### :fa-brands fa-docker: Docker 一键安装脚本 ```bash bash <(curl -sSL https://cdn.jsdelivr.net/gh/SuperManito/LinuxMirrors@main/DockerInstallation.sh) @@ -97,24 +98,25 @@ bash <(curl -sSL https://cdn.jsdelivr.net/gh/SuperManito/LinuxMirrors@main/Chang > [!NOTE|label:定义] > `Docker CE`:Docker Community Edition 镜像仓库,用于下载并安装 Docker 相关软件包。\ - > `Docker Hub`:Docker Hub 镜像仓库,默认为官方提供的公共库,用于切换下载镜像时的来源仓库,简称镜像加速器。 + > `Docker Hub`:Docker Hub 镜像仓库,默认为官方提供的公共库,用于切换下载镜像时的来源仓库,又称镜像加速器。 > 脚本集成安装 `Docker Engine`与 `Docker Compose`,可手动选择安装版本、下载源、镜像加速器,支持国内外服务器环境和 `ARM`架构处理器环境使用 ## 常见问题 -- #### 如果提示 `Command 'curl' not found` 则说明当前未安装 `curl` 软件包 + + - 如果提示 `Command 'curl' not found` 则说明当前未安装 `curl` 软件包 ```bash - sudo yum install -y curl || sudo apt install -y curl + sudo yum install -y curl || sudo apt-get install -y curl ``` -- #### 如果提示 `Command 'wget' not found` 则说明当前未安装 `wget` 软件包 + - 如果提示 `Command 'wget' not found` 则说明当前未安装 `wget` 软件包 ```bash - sudo yum install -y wget || sudo apt install -y wget + sudo yum install -y wget || sudo apt-get install -y wget ``` -- #### 如果提示 `bash: /proc/self/fd/11: No such file or directory`,请切换至 `Root` 用户执行。 + - 如果提示 `bash: /proc/self/fd/11: No such file or directory`,请切换至 `Root` 用户执行 *** diff --git a/docs/_coverpage.md b/docs/_coverpage.md index b6b5050..68f749a 100644 --- a/docs/_coverpage.md +++ b/docs/_coverpage.md @@ -1,10 +1,10 @@ # ![LinuxMirrors](./img/logo.png) -    ### 脚本一键更换 Linux 软件源 ### 让换源更简单 -[Github](https://github.com/SuperManito/LinuxMirrors)[Gitee](https://gitee.com/SuperManito/LinuxMirrors)\ +  +    + [开始使用](#适配系统) \ No newline at end of file diff --git a/docs/css/vue.css b/docs/css/vue.css index 7492bee..ffe626f 100644 --- a/docs/css/vue.css +++ b/docs/css/vue.css @@ -1 +1 @@ -@import url("https://fonts.googleapis.com/css?family=PT+Sans&Source+Sans+Pro&Roboto+Mono&display=swap");*{-webkit-font-smoothing:antialiased;-webkit-overflow-scrolling:touch;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:none;-webkit-touch-callout:none;box-sizing:border-box}body:not(.ready){overflow:hidden}.search{border-bottom:none !important}.search .input-wrap{margin-top:20px !important}.search input{border:1px solid var(--borderColor) !important;background-color:var(--background) !important;margin:0 auto;color:var(--textColor);width:90% !important;border-radius:15px;text-indent:15px;transition:.2s}body:not(.ready) .app-nav,body:not(.ready)>nav,body:not(.ready) [data-cloak]{display:none}div#app{font-size:30px;font-weight:lighter;margin:40vh auto;text-align:center}div#app:empty:before{content:"Loading..."}.emoji{height:1.2rem;vertical-align:middle}.progress{background-color:var(--themeColor);height:2px;left:0;position:fixed;right:0;top:0;transition:width .2s,opacity .4s;width:0;z-index:999999}.search .search-keyword,.search a:hover{color:var(--themeColor)}.search .search-keyword{font-style:normal;font-weight:700}body,html{height:100%}body{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--textColor);font-family:var(--siteFont),Helvetica Neue,Arial,sans-serif;font-size:var(--bodyFontSize);letter-spacing:0;margin:0;overflow-x:hidden}.markdown-section h2{color:#fff}a[disabled]{cursor:not-allowed;opacity:.6}kbd{border:1px solid #ccc;border-radius:3px;display:inline-block;font-size:12px !important;line-height:12px;margin-bottom:3px;padding:3px 5px;vertical-align:middle}li input[type=checkbox]{margin:0 .2em .25em 0;vertical-align:middle}.app-nav{margin:25px 60px 0 0;position:absolute;right:0;text-align:right;z-index:10}.app-nav.no-badge{margin-right:25px}.app-nav p{margin:0}.app-nav>a{margin:0 1rem;padding:5px 0}.app-nav li,.app-nav ul{display:inline-block;list-style:none;margin:0}.app-nav a{color:inherit;font-size:16px;text-decoration:none;transition:color .3s}.app-nav a.active,.app-nav a:hover{color:var(--themeColor)}.app-nav a.active{border-bottom:2px solid var(--themeColor)}.app-nav li{display:inline-block;margin:0 1rem;padding:5px 0;position:relative;cursor:pointer}.app-nav li ul{background-color:#fff;border:1px solid;border-color:#ddd #ddd #ccc;border-radius:4px;box-sizing:border-box;display:none;max-height:calc(100vh - 61px);overflow-y:auto;padding:10px 0;position:absolute;right:-15px;text-align:left;top:100%;white-space:nowrap}.app-nav li ul li{display:block;font-size:14px;line-height:1rem;margin:8px 14px;white-space:nowrap}.app-nav li ul a{display:block;font-size:inherit;margin:0;padding:0}.app-nav li ul a.active{border-bottom:0}.app-nav li:hover ul{display:block}.github-corner{border-bottom:0;position:fixed;right:0;text-decoration:none;top:0;z-index:1}.github-corner:hover .octo-arm{-webkit-animation:octocat-wave .56s ease-in-out;animation:octocat-wave .56s ease-in-out}.github-corner svg{color:#fff;fill:var(--themeColor);height:70px;width:70px}main{display:block;position:relative;width:100vw;height:100%;z-index:0}main.hidden{display:none}.anchor{display:inline-block;text-decoration:none;transition:all .3s}.anchor span{color:var(--textColor)}.anchor:hover{text-decoration:underline}.sidebar{border-right:1px solid var(--borderColor);overflow-y:auto;padding:40px 0 0;position:absolute;top:0;bottom:0;left:0;transition:transform .25s ease-out;width:300px;z-index:20;transition:.2s}.sidebar>h1{margin:0 auto 1rem;font-size:1.5rem;font-weight:300;text-align:center}.sidebar>h1 a{color:inherit;text-decoration:none}.sidebar>h1 .app-nav{display:block;position:static}.sidebar .sidebar-nav{line-height:2em;padding-bottom:40px}.sidebar li.collapse .app-sub-sidebar{display:none}.sidebar ul{margin:0 0 0 15px;padding:0}.sidebar li>p{font-weight:700;margin:0}.sidebar ul,.sidebar ul li{list-style:none}.sidebar ul li a{border-bottom:0;display:block}.sidebar ul li ul{padding-left:20px}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-thumb{background:transparent;border-radius:4px}.sidebar:hover::-webkit-scrollbar-thumb{background:hsla(0,0%,53.3%,.4)}.sidebar:hover::-webkit-scrollbar-track{background:hsla(0,0%,53.3%,.1)}.sidebar-toggle{background-color:transparent;border:0;outline:0;padding:10px;position:absolute;left:calc(300px + 1.5rem);top:1.5em;text-align:center;transition:left 0.25s ease-out;width:284px;z-index:30;cursor:pointer}.sidebar-toggle:hover .sidebar-toggle-button{opacity:.4;transition:.2s;}.sidebar-toggle span{background-color:var(--themeColor);display:block;margin-bottom:4px;width:16px;height:2px}body .sidebar-toggle span{background-color:var(--themeColor);width:1.5rem;position:absolute;left:0;margin:0;transform-origin:0;border-radius:1px;}body .sidebar-toggle span:nth-child(1){top:0;}body .sidebar-toggle span:nth-child(2){top:0.6em;}body .sidebar-toggle span:nth-child(3){top:1.2em;}body.sticky .sidebar,body.sticky .sidebar-toggle{position:fixed}.content{padding-top:60px;position:absolute;top:0;right:0;bottom:0;left:300px;transition:left .25s ease}.markdown-section{margin:0 auto;max-width:90%;padding:30px 15px 40px;position:relative}.markdown-section>*{box-sizing:border-box;font-size:inherit}.markdown-section>:first-child{margin-top:0 !important}.markdown-section hr{border:0;border-bottom:1px solid var(--hrColor);margin:2em 0;transition:.2s;}.markdown-section iframe{border:1px solid #eee;width:1px;min-width:100%}.markdown-section table{border-collapse:collapse;border-spacing:0;display:block;margin-bottom:1rem;overflow:auto;width:100%;transition:.2s}.markdown-section th{font-weight:700}.markdown-section td,.markdown-section th{border:1px solid #ddd;padding:6px 13px}.markdown-section tr{border-top:1px solid #ccc;transition:.2s}.markdown-section p.tip,.markdown-section tr:nth-child(2n){background-color:var(--codeBackgroundColor)}.markdown-section p.tip{border-bottom-right-radius:2px;border-left:4px solid #f66;border-top-right-radius:2px;margin:2em 0;padding:12px 24px 12px 30px;position:relative;transition:.2s}.markdown-section p.tip:before{background-color:#f66;border-radius:100%;color:#fff;content:"!";font-family:Dosis,Source Sans Pro,Helvetica Neue,Arial,sans-serif;font-size:14px;font-weight:700;left:-12px;line-height:20px;position:absolute;height:20px;width:20px;text-align:center;top:14px}.markdown-section p.tip code{background-color:var(--highlightBackgroundColor)}.markdown-section p.tip em{color:#34495e}.markdown-section p.warn{background:rgba(66,185,131,.1);border-radius:2px;padding:1rem}.markdown-section ul.task-list>li{list-style-type:none}body.close .sidebar{transform:translateX(-300px)}body.close .sidebar-toggle{width:auto;left:1.5em;}body.close .content{left:0}@media print{.app-nav,.github-corner,.sidebar,.sidebar-toggle{display:none}}@media screen and (max-width:768px){.github-corner,.sidebar,.sidebar-toggle{position:fixed}.app-nav{margin-top:16px}.app-nav li ul{top:30px}main{height:auto;overflow-x:hidden}.sidebar{left:-300px;transition:transform .25s ease-out}.content{left:0;max-width:100vw;position:static;padding-top:20px;transition:transform .25s ease}.app-nav,.github-corner{transition:transform .25s ease-out}.sidebar-toggle{background-color:transparent;width:auto;padding:30px 30px 10px 10px;left:0.5rem;top:97%;}body.close .sidebar{transform:translateX(300px)}body.close .sidebar-toggle{transition:background-color 1s;width:284px;padding:10px;left:calc(0.5rem + 300px);transition:.2s;}body.close .content{transform:translateX(300px)}body.close .app-nav,body.close .github-corner{display:none}.github-corner:hover .octo-arm{-webkit-animation:none;animation:none}.github-corner .octo-arm{-webkit-animation:octocat-wave .56s ease-in-out;animation:octocat-wave .56s ease-in-out}#docsify-darklight-theme{position:absolute;top:0;width:25px;height:25px;background-repeat:no-repeat;background-image:var(--toogleImage);background-size:cover;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:.2s}}@-webkit-keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}section.cover{align-items:center;background-position:50%;background-repeat:no-repeat;background-size:cover;height:100vh;display:none}section.cover.show{display:flex;background:var(--coverBackground) !important}section.cover.has-mask .mask{background-color:#fff;opacity:.8;position:absolute;top:0;height:100%;width:100%}section.cover .cover-main{flex:1;margin:-20px 16px 0;text-align:center;z-index:1}section.cover a{color:inherit}section.cover a,section.cover a:hover{text-decoration:none}section.cover p{line-height:1.5rem;margin:1em 0}section.cover h1{color:inherit;font-size:2.5rem;font-weight:300;margin:.625rem 0 2.5rem;position:relative;text-align:center}section.cover h1 a{display:block}section.cover h1 small{bottom:-.4375rem;font-size:1rem;position:absolute}section.cover blockquote{font-size:1.5rem;text-align:center}section.cover ul{line-height:1.8;list-style-type:none;margin:1em auto;max-width:500px;padding:0}section.cover .cover-main>p:last-child a{border-radius:2rem;border:1px solid var(--themeColor);box-sizing:border-box;color:var(--themeColor);display:inline-block;font-size:1.05rem;letter-spacing:.1rem;margin:.5rem 1rem;padding:.75em 2rem;text-decoration:none;transition:all .15s ease}section.cover .cover-main>p:last-child a:last-child{background-color:var(--themeColor);color:#fff}section.cover .cover-main>p:last-child a:last-child:hover{color:inherit;opacity:.8}section.cover .cover-main>p:last-child a:hover{color:inherit}section.cover blockquote>p>a{border-bottom:2px solid var(--themeColor);transition:color .3s}section.cover blockquote>p>a:hover{color:var(--themeColor)}.sidebar,body{background-color:var(--background);transition:.2s}.sidebar{color:var(--textColor)}.sidebar li{margin:6px 0}.sidebar ul li a{color:var(--sidebarSublink);font-size:14px;font-weight:400;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;padding:0 .5em 0 .5em;width:fit-content;}.sidebar ul li a:hover{font-weight:600;color:var(--themeColor);background-color:#a8a8a825;border-radius:5px}.sidebar ul li ul{padding:0}.sidebar ul li.active>a{border-right:2px solid;color:var(--themeColor);font-weight:600}.app-sub-sidebar li:before{padding-right:6px;float:left}.markdown-section h1,.markdown-section h2,.markdown-section h3,.markdown-section h4,.markdown-section strong{color:var(--textColor);font-weight:600}.markdown-section a{color:var(--themeColor);font-weight:600;text-decoration:none;transition:.2s;}.markdown-section h1{font-size:2rem;margin:0 0 1rem}.markdown-section h2{font-size:1.75rem;margin:45px 0 .8rem}.markdown-section h3{font-size:1.5rem;margin:40px 0 .6rem}.markdown-section h4{font-size:1.25rem}.markdown-section h5{font-size:1rem}.markdown-section h6{color:#777;font-size:1rem}.markdown-section figure,.markdown-section p{margin:1.2em 0}.markdown-section ol,.markdown-section p,.markdown-section ul{line-height:1.6rem;word-spacing:.05rem}.markdown-section ol,.markdown-section ul{padding-left:1.5rem}.markdown-section blockquote{border-left:4px solid var(--themeColor);color:var(--blockQuoteColor);margin:2em 0;padding-left:20px;transition:.2s}.markdown-section blockquote p{font-weight:600;margin-left:0}.markdown-section blockquote p a:hover{transition:0.2s;color:var(--herfColor)}.markdown-section iframe{margin:1em 0}.markdown-section em{color:#7f8c8d}.markdown-section code{border-radius:2px;color:var(--highlightColor);font-size:.9rem;margin:0 2px;padding:3px 5px;white-space:pre-wrap;font-weight:700;transition:.2s}.markdown-section code,.markdown-section pre{background-color:var(--codeBackgroundColor);font-family:var(--codeFontFamily)}.markdown-section pre{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;line-height:1.5rem;margin:1.2em 0;overflow:auto;padding:0 1.4rem;position:relative;word-wrap:normal;transition:.2s}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8e908c}.token.namespace{opacity:.7}.token.boolean,.token.number{color:#c76b29}.token.punctuation{color:#525252}.token.property{color:#c08b30}.token.tag{color:#2973b7}.token.string{color:var(--themeColor)}.token.selector{color:#6679cc}.token.attr-name{color:#2973b7}.language-css .token.string,.style .token.string,.token.entity,.token.url{color:#22a2c9}.token.attr-value,.token.control,.token.directive,.token.unit{color:var(--themeColor)}.token.function,.token.keyword{color:#e96900}.token.atrule,.token.regex,.token.statement{color:#22a2c9}.token.placeholder,.token.variable{color:#3d8fd1}.token.deleted{text-decoration:line-through}.token.inserted{border-bottom:1px dotted #202746;text-decoration:none}.token.italic{font-style:italic}.token.bold,.token.important{font-weight:700}.token.important{color:#c94922}.token.entity{cursor:help}.markdown-section pre>code{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;background-color:var(--codeBackgroundColor);border-radius:2px;color:var(--codeTextColor);display:block;font-family:Roboto Mono,Monaco,courier,monospace;font-size:.8rem;line-height:inherit;margin:0 2px;max-width:inherit;overflow:inherit;padding:2.2em 5px;white-space:inherit}.markdown-section code:after,.markdown-section code:before{letter-spacing:.05rem}code .token{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;min-height:1.5rem;position:relative;left:auto}pre:after{color:var(--codeTypeColor);content:attr(data-lang);font-size:.6rem;font-weight:600;height:15px;line-height:15px;padding:5px 10px 0;position:absolute;right:0;text-align:right;top:0}#docsify-darklight-theme{position:absolute;right:10px;top:15px;width:25px;height:25px;background-repeat:no-repeat;background-image:var(--toogleImage);background-size:cover;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:background-image .15s ease-in-out .15s}#docsify-darklight-theme p{visibility:hidden} \ No newline at end of file +@import url("https://fonts.googleapis.com/css?family=PT+Sans&Source+Sans+Pro&Roboto+Mono&display=swap");*{-webkit-font-smoothing:antialiased;-webkit-overflow-scrolling:touch;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:none;-webkit-touch-callout:none;box-sizing:border-box}body:not(.ready){overflow:hidden}.search{border-bottom:none !important}.search .input-wrap{margin-top:20px !important}.search input{border:1px solid var(--borderColor) !important;background-color:var(--background) !important;margin:0 auto;color:var(--textColor);width:90% !important;border-radius:15px;text-indent:15px;transition:.2s}body:not(.ready) .app-nav,body:not(.ready)>nav,body:not(.ready) [data-cloak]{display:none}div#app{font-size:30px;font-weight:lighter;margin:40vh auto;text-align:center}div#app:empty:before{content:"Loading..."}.emoji{height:1.2rem;vertical-align:middle}.progress{background-color:var(--themeColor);height:2px;left:0;position:fixed;right:0;top:0;transition:width .2s,opacity .4s;width:0;z-index:999999}.search .search-keyword,.search a:hover{color:var(--themeColor)}.search .search-keyword{font-style:normal;font-weight:700}body,html{height:100%}body{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--textColor);font-family:var(--siteFont),Helvetica Neue,Arial,sans-serif;font-size:var(--bodyFontSize);letter-spacing:0;margin:0;overflow-x:hidden}.markdown-section h2{color:#fff}a[disabled]{cursor:not-allowed;opacity:.6}kbd{border:1px solid #ccc;border-radius:3px;display:inline-block;font-size:12px !important;line-height:12px;margin-bottom:3px;padding:3px 5px;vertical-align:middle}li input[type=checkbox]{margin:0 .2em .25em 0;vertical-align:middle}.app-nav{margin:25px 60px 0 0;position:absolute;right:0;text-align:right;z-index:10}.app-nav.no-badge{margin-right:25px}.app-nav p{margin:0}.app-nav>a{margin:0 1rem;padding:5px 0}.app-nav li,.app-nav ul{display:inline-block;list-style:none;margin:0}.app-nav a{color:inherit;font-size:16px;text-decoration:none;transition:color .3s}.app-nav a.active,.app-nav a:hover{color:var(--themeColor)}.app-nav a.active{border-bottom:2px solid var(--themeColor)}.app-nav li{display:inline-block;margin:0 1rem;padding:5px 0;position:relative;cursor:pointer}.app-nav li ul{background-color:#fff;border:1px solid;border-color:#ddd #ddd #ccc;border-radius:4px;box-sizing:border-box;display:none;max-height:calc(100vh - 61px);overflow-y:auto;padding:10px 0;position:absolute;right:-15px;text-align:left;top:100%;white-space:nowrap}.app-nav li ul li{display:block;font-size:14px;line-height:1rem;margin:8px 14px;white-space:nowrap}.app-nav li ul a{display:block;font-size:inherit;margin:0;padding:0}.app-nav li ul a.active{border-bottom:0}.app-nav li:hover ul{display:block}.github-corner{border-bottom:0;position:fixed;right:0;text-decoration:none;top:0;z-index:1}.github-corner:hover .octo-arm{-webkit-animation:octocat-wave .56s ease-in-out;animation:octocat-wave .56s ease-in-out}.github-corner svg{color:#fff;fill:var(--themeColor);height:70px;width:70px}main{display:block;position:relative;width:100vw;height:100%;z-index:0}main.hidden{display:none}.anchor{display:inline-block;text-decoration:none;transition:all .3s}.anchor span{color:var(--textColor)}.anchor:hover{text-decoration:underline}.sidebar{border-right:1px solid var(--borderColor);overflow-y:auto;padding:40px 0 0;position:absolute;top:0;bottom:0;left:0;transition:transform .25s ease-out;width:300px;z-index:20;transition:.2s}.sidebar>h1{margin:0 auto 1rem;font-size:1.5rem;font-weight:300;text-align:center}.sidebar>h1 a{color:inherit;text-decoration:none}.sidebar>h1 .app-nav{display:block;position:static}.sidebar .sidebar-nav{line-height:2em;padding-bottom:40px}.sidebar li.collapse .app-sub-sidebar{display:none}.sidebar ul{margin:0 0 0 15px;padding:0}.sidebar li>p{font-weight:700;margin:0}.sidebar ul,.sidebar ul li{list-style:none}.sidebar ul li a{border-bottom:0;display:block}.sidebar ul li ul{padding-left:20px}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-thumb{background:transparent;border-radius:4px}.sidebar:hover::-webkit-scrollbar-thumb{background:hsla(0,0%,53.3%,.4)}.sidebar:hover::-webkit-scrollbar-track{background:hsla(0,0%,53.3%,.1)}.sidebar-toggle{background-color:transparent;border:0;outline:0;padding:10px;position:absolute;left:calc(300px + 1.5rem);top:1.5em;text-align:center;transition:left 0.25s ease-out;width:1.5rem;z-index:30;cursor:pointer}.sidebar-toggle:hover .sidebar-toggle-button{opacity:.4;transition:.2s;}.sidebar-toggle span{background-color:var(--themeColor);display:block;margin-bottom:4px;width:16px;height:2px}body .sidebar-toggle span{background-color:var(--themeColor);width:1.5rem;position:absolute;left:0;margin:0;transform-origin:0;border-radius:1px;}body .sidebar-toggle span:nth-child(1){top:0;}body .sidebar-toggle span:nth-child(2){top:0.6em;}body .sidebar-toggle span:nth-child(3){top:1.2em;}body.sticky .sidebar,body.sticky .sidebar-toggle{position:fixed}.content{padding-top:60px;position:absolute;top:0;right:0;bottom:0;left:300px;transition:left .25s ease}.markdown-section{margin:0 auto;max-width:45%;padding:30px 15px 40px;position:relative}.markdown-section>*{box-sizing:border-box;font-size:inherit}.markdown-section>:first-child{margin-top:0 !important}.markdown-section hr{border:0;border-bottom:1px solid var(--hrColor);margin:2em 0;transition:.2s;}.markdown-section iframe{border:1px solid #eee;width:1px;min-width:100%}.markdown-section table{border-collapse:collapse;border-spacing:0;display:block;margin-bottom:1rem;overflow:auto;width:100%;transition:.2s}.markdown-section th{font-weight:700}.markdown-section td,.markdown-section th{border:1px solid #ddd;padding:6px 13px}.markdown-section tr{border-top:1px solid #ccc;transition:.2s}.markdown-section p.tip,.markdown-section tr:nth-child(2n){background-color:var(--codeBackgroundColor)}.markdown-section p.tip{border-bottom-right-radius:2px;border-left:4px solid #f66;border-top-right-radius:2px;margin:2em 0;padding:12px 24px 12px 30px;position:relative;transition:.2s;border-radius:.5em;}.markdown-section p.tip:before{background-color:#f66;border-radius:100%;color:#fff;content:"!";font-family:Dosis,Source Sans Pro,Helvetica Neue,Arial,sans-serif;font-size:14px;font-weight:700;left:-12px;line-height:20px;position:absolute;height:20px;width:20px;text-align:center;top:14px}.markdown-section p.tip code{background-color:var(--highlightBackgroundColor)}.markdown-section p.tip em{color:#34495e}.markdown-section p.warn{background:rgba(66,185,131,.1);border-radius:2px;padding:1rem;border-radius:.5em;}.markdown-section ul.task-list>li{list-style-type:none}body.close .sidebar{transform:translateX(-300px)}body.close .sidebar-toggle{width:auto;left:1.5em;}body.close .content{left:0}@media print{.app-nav,.github-corner,.sidebar,.sidebar-toggle{display:none}}@media screen and (max-width:768px){.github-corner,.sidebar,.sidebar-toggle{position:fixed}.app-nav{margin-top:16px}.app-nav li ul{top:30px}main{height:auto;overflow-x:hidden}.sidebar{left:-300px;transition:transform .25s ease-out}.content{left:0;max-width:100vw;position:static;padding-top:20px;transition:transform .25s ease}.app-nav,.github-corner{transition:transform .25s ease-out}.sidebar-toggle{background-color:transparent;width:auto;padding:30px 30px 10px 10px;left:1.5em;top:1.5em;}body.close .sidebar{transform:translateX(300px)}body.close .sidebar-toggle{transition:background-color 1s;width:1.5rem;padding:10px;left:calc(0.5rem + 300px);transition:.2s;}body.close .content{transform:translateX(300px)}body.close .app-nav,body.close .github-corner{display:none}.github-corner:hover .octo-arm{-webkit-animation:none;animation:none}.github-corner .octo-arm{-webkit-animation:octocat-wave .56s ease-in-out;animation:octocat-wave .56s ease-in-out}#docsify-darklight-theme{position:absolute;top:0;width:25px;height:25px;background-repeat:no-repeat;background-image:var(--toogleImage);background-size:cover;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:.2s}.markdown-section{max-width:90%;}}@-webkit-keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@keyframes octocat-wave{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}section.cover{align-items:center;background-position:50%;background-repeat:no-repeat;background-size:cover;height:100vh;display:none}section.cover.show{display:flex;background:var(--coverBackground) !important}section.cover.has-mask .mask{background-color:#fff;opacity:.8;position:absolute;top:0;height:100%;width:100%}section.cover .cover-main{flex:1;margin:-20px 16px 0;text-align:center;z-index:1}section.cover a{color:inherit}section.cover a,section.cover a:hover{text-decoration:none}section.cover p{line-height:1.5rem;margin:1em 0}section.cover h1{color:inherit;font-size:2.5rem;font-weight:300;margin:.625rem 0 2.5rem;position:relative;text-align:center}section.cover h1 a{display:block}section.cover h1 small{bottom:-.4375rem;font-size:1rem;position:absolute}section.cover blockquote{font-size:1.5rem;text-align:center}section.cover ul{line-height:1.8;list-style-type:none;margin:1em auto;max-width:500px;padding:0}section.cover .cover-main>p:last-child a{border-radius:2rem;border:1px solid var(--themeColor);box-sizing:border-box;color:var(--themeColor);display:inline-block;font-size:1.05rem;letter-spacing:.1rem;margin:.5rem 1rem;padding:.75em 2rem;text-decoration:none;transition:all .15s ease}section.cover .cover-main>p:last-child a:last-child{background-color:var(--themeColor);color:#fff}section.cover .cover-main>p:last-child a:last-child:hover{color:inherit;opacity:.8}section.cover .cover-main>p:last-child a:hover{color:inherit}section.cover blockquote>p>a{border-bottom:2px solid var(--themeColor);transition:color .3s}section.cover blockquote>p>a:hover{color:var(--themeColor)}.sidebar,body{background-color:var(--background);transition:.2s}.sidebar{color:var(--textColor)}.sidebar li{margin:6px 0}.sidebar ul li a{color:var(--sidebarSublink);font-size:14px;font-weight:400;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;padding:0 .5em 0 .5em;width:fit-content;border-radius:5px}.sidebar ul li a:hover{transition:.2s;font-weight:800;color:var(--themeColor);background-color:var(--buttonBackgroundColor);border-radius:5px}.sidebar ul li a:active{background-color:transparent;}.sidebar ul li ul{padding:0}.sidebar ul li.active>a{border-right:2px solid;color:var(--themeColor);font-weight:600}.app-sub-sidebar li:before{padding-right:6px;float:left}.markdown-section h1,.markdown-section h2,.markdown-section h3,.markdown-section h4,.markdown-section strong{color:var(--textColor);font-weight:600}.markdown-section a{color:var(--themeColor);font-weight:600;text-decoration:none;transition:.2s;}.markdown-section h1{font-size:2rem;margin:0 0 1rem}.markdown-section h2{font-size:1.75rem;margin:45px 0 .8rem}.markdown-section h3{font-size:1.5rem;margin:40px 0 .6rem}.markdown-section h4{font-size:1.25rem}.markdown-section h5{font-size:1rem}.markdown-section h6{color:#777;font-size:1rem}.markdown-section figure,.markdown-section p{margin:1.2em 0}.markdown-section ol,.markdown-section p,.markdown-section ul{line-height:1.6rem;word-spacing:.05rem}.markdown-section ol,.markdown-section ul{padding-left:1.5rem}.markdown-section blockquote{border-left:4px solid var(--themeColor);color:var(--blockQuoteColor);margin:2em 0;padding-left:20px;transition:.2s}.markdown-section blockquote p{font-weight:600;margin-left:0}.markdown-section blockquote p a:hover{transition:0.2s;color:var(--herfColor)}.markdown-section iframe{margin:1em 0}.markdown-section em{color:#7f8c8d}.markdown-section code{border-radius:2px;color:var(--highlightColor);font-size:.9rem;margin:0 2px;padding:3px 5px;white-space:pre-wrap;font-weight:700;transition:.2s}.markdown-section code,.markdown-section pre{background-color:var(--codeBackgroundColor);font-family:var(--codeFontFamily);border-radius:.5em;}.markdown-section pre{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;line-height:1.5rem;margin:1.2em 0;overflow:auto;padding:0 1.4rem;position:relative;word-wrap:normal;transition:.2s}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8e908c}.token.namespace{opacity:.7}.token.boolean,.token.number{color:#c76b29}.token.punctuation{color:#525252}.token.property{color:#c08b30}.token.tag{color:#2973b7}.token.string{color:var(--themeColor)}.token.selector{color:#6679cc}.token.attr-name{color:#2973b7}.language-css .token.string,.style .token.string,.token.entity,.token.url{color:#22a2c9}.token.attr-value,.token.control,.token.directive,.token.unit{color:var(--themeColor)}.token.function,.token.keyword{color:#e96900}.token.atrule,.token.regex,.token.statement{color:#22a2c9}.token.placeholder,.token.variable{color:#3d8fd1}.token.deleted{text-decoration:line-through}.token.inserted{border-bottom:1px dotted #202746;text-decoration:none}.token.italic{font-style:italic}.token.bold,.token.important{font-weight:700}.token.important{color:#c94922}.token.entity{cursor:help}.markdown-section pre>code{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;background-color:var(--codeBackgroundColor);border-radius:2px;color:var(--codeTextColor);display:block;font-family:Roboto Mono,Monaco,courier,monospace;font-size:.8rem;line-height:inherit;margin:0 2px;max-width:inherit;overflow:inherit;padding:2.2em 5px;white-space:inherit}.markdown-section code:after,.markdown-section code:before{letter-spacing:.05rem}code .token{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;min-height:1.5rem;position:relative;left:auto}pre:after{color:var(--codeTypeColor);content:attr(data-lang);font-size:.6rem;font-weight:600;height:15px;line-height:15px;padding:5px 10px 0;position:absolute;right:0;text-align:right;top:0}#docsify-darklight-theme{position:absolute;right:10px;top:15px;width:25px;height:25px;background-repeat:no-repeat;background-image:var(--toogleImage);background-size:cover;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:background-image .15s ease-in-out .15s}#docsify-darklight-theme p{visibility:hidden} \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 64a6781..7d6a338 100644 --- a/docs/index.html +++ b/docs/index.html @@ -93,7 +93,7 @@ // 页脚内容 footer: { - copy: 'Copyright 2022,', + copy: 'Copyright 2021 ~ 2022 ', auth: ' SuperManito . Released under the GPL-2.0', pre: '', style: 'text-align: center;', @@ -124,6 +124,7 @@ blockQuoteColor: '#858585', highlightColor: '#d22778', highlightBackgroundColor: '#efefef', + buttonBackgroundColor: '#f3f3f3ce', sidebarSublink: '#7c7c7c', codeTypeColor: '#091a28', herfColor: '#2973b7', @@ -142,6 +143,7 @@ blockQuoteColor: '#858585', highlightColor: '#a6bb06', highlightBackgroundColor: '#122d44', + buttonBackgroundColor: '#a8a8a825', sidebarSublink: '#b4b4b4', codeTypeColor: '#ffffff', herfColor: '#16995e', diff --git a/docs/js/docsify-copy-code.min.js b/docs/js/docsify-copy-code.min.js index 6c8517f..f0c5a24 100644 --- a/docs/js/docsify-copy-code.min.js +++ b/docs/js/docsify-copy-code.min.js @@ -5,5 +5,5 @@ * (c) 2017-2020 JP Erasmus * MIT license */ -!function(){function s(o){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o})(o)}!function(o,e){void 0===e&&(e={});var t=e.insertAt;if(o&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],c=document.createElement("style");c.type="text/css","top"===t&&n.firstChild?n.insertBefore(c,n.firstChild):n.appendChild(c),c.styleSheet?c.styleSheet.cssText=o:c.appendChild(document.createTextNode(o))}}(".docsify-copy-code-button,.docsify-copy-code-button span{cursor:pointer;transition:all .25s ease}.docsify-copy-code-button{position:absolute;z-index:1;top:1.2em;right:.5em;overflow:visible;padding:.3em .4em;border:0;border-radius:6px;outline:0;font-size:1.2em;background:#a8a8a825;color:var(--themeColor);opacity:0}.docsify-copy-code-button span{border-radius:7px;pointer-events:none}.docsify-copy-code-button .error,.docsify-copy-code-button .success{position:absolute;z-index:-100;top:50%;right:0;padding:.5em .65em;font-size:.825em;opacity:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.docsify-copy-code-button.error .error{right:60%;opacity:1;-webkit-transform:translate(-115%,-50%);color:red;background-color:#a8a8a825;transform:translate(-115%,-50%)}.docsify-copy-code-button.success .success{right:-25%;opacity:1;-webkit-transform:translate(-115%,-50%);color:#00a300;background-color:transparent;transform:translate(-115%,-50%)}.docsify-copy-code-button:focus,pre:hover .docsify-copy-code-button{opacity:1}"),document.querySelector('link[href*="docsify-copy-code"]')&&console.warn("[Deprecation] Link to external docsify-copy-code stylesheet is no longer necessary."),window.DocsifyCopyCodePlugin={init:function(){return function(o,e){o.ready(function(){console.warn("[Deprecation] Manually initializing docsify-copy-code using window.DocsifyCopyCodePlugin.init() is no longer necessary.")})}}},window.$docsify=window.$docsify||{},window.$docsify.plugins=[function(o,r){o.doneEach(function(){var o=Array.apply(null,document.querySelectorAll("pre[data-lang]")),c={buttonText:'',errorText:'',successText:''};r.config.copyCode&&Object.keys(c).forEach(function(t){var n=r.config.copyCode[t];"string"==typeof n?c[t]=n:"object"===s(n)&&Object.keys(n).some(function(o){var e=-1',''.concat(c.buttonText,""),''.concat(c.errorText,""),''.concat(c.successText,""),""].join("");o.forEach(function(o){o.insertAdjacentHTML("beforeend",e)})}),o.mounted(function(){document.querySelector(".content").addEventListener("click",function(o){if(o.target.classList.contains("docsify-copy-code-button")){var e="BUTTON"===o.target.tagName?o.target:o.target.parentNode,t=document.createRange(),n=e.parentNode.querySelector("code"),c=window.getSelection();t.selectNode(n),c.removeAllRanges(),c.addRange(t);try{document.execCommand("copy")&&(e.classList.add("success"),setTimeout(function(){e.classList.remove("success")},1000))}catch(o){console.error("docsify-copy-code: ".concat(o)),e.classList.add("error"),setTimeout(function(){e.classList.remove("error")},1000)}"function"==typeof(c=window.getSelection()).removeRange?c.removeRange(t):"function"==typeof c.removeAllRanges&&c.removeAllRanges()}})})}].concat(window.$docsify.plugins||[])}(); +!function(){function s(o){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o})(o)}!function(o,e){void 0===e&&(e={});var t=e.insertAt;if(o&&"undefined"!=typeof document){var n=document.head||document.getElementsByTagName("head")[0],c=document.createElement("style");c.type="text/css","top"===t&&n.firstChild?n.insertBefore(c,n.firstChild):n.appendChild(c),c.styleSheet?c.styleSheet.cssText=o:c.appendChild(document.createTextNode(o))}}(".docsify-copy-code-button,.docsify-copy-code-button span{cursor:pointer;transition:all .25s ease}.docsify-copy-code-button{position:absolute;z-index:1;top:1.5em;right:.5em;overflow:visible;padding:.3em .4em;border:0;border-radius:6px;outline:0;font-size:1em;background:#a8a8a825;color:var(--themeColor);opacity:0;box-sizing:border-box;border:1px solid transparent}.docsify-copy-code-button:hover{border-color:var(--themeColor)}.docsify-copy-code-button:active{border-color:transparent}.docsify-copy-code-button span{border-radius:7px;pointer-events:none}.docsify-copy-code-button .error,.docsify-copy-code-button .success{position:absolute;z-index:-100;top:50%;right:0;padding:.5em .65em;font-size:.825em;opacity:0;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.docsify-copy-code-button.error .error{right:60%;opacity:1;-webkit-transform:translate(-115%,-50%);color:red;background-color:#a8a8a825;transform:translate(-115%,-50%)}.docsify-copy-code-button.success .success{right:-25%;opacity:1;-webkit-transform:translate(-115%,-50%);color:#00a300;background-color:transparent;transform:translate(-115%,-50%)}.docsify-copy-code-button:focus,pre:hover .docsify-copy-code-button{opacity:1}"),document.querySelector('link[href*="docsify-copy-code"]')&&console.warn("[Deprecation] Link to external docsify-copy-code stylesheet is no longer necessary."),window.DocsifyCopyCodePlugin={init:function(){return function(o,e){o.ready(function(){console.warn("[Deprecation] Manually initializing docsify-copy-code using window.DocsifyCopyCodePlugin.init() is no longer necessary.")})}}},window.$docsify=window.$docsify||{},window.$docsify.plugins=[function(o,r){o.doneEach(function(){var o=Array.apply(null,document.querySelectorAll("pre[data-lang]")),c={buttonText:'',errorText:'',successText:''};r.config.copyCode&&Object.keys(c).forEach(function(t){var n=r.config.copyCode[t];"string"==typeof n?c[t]=n:"object"===s(n)&&Object.keys(n).some(function(o){var e=-1',''.concat(c.buttonText,""),''.concat(c.errorText,""),''.concat(c.successText,""),""].join("");o.forEach(function(o){o.insertAdjacentHTML("beforeend",e)})}),o.mounted(function(){document.querySelector(".content").addEventListener("click",function(o){if(o.target.classList.contains("docsify-copy-code-button")){var e="BUTTON"===o.target.tagName?o.target:o.target.parentNode,t=document.createRange(),n=e.parentNode.querySelector("code"),c=window.getSelection();t.selectNode(n),c.removeAllRanges(),c.addRange(t);try{document.execCommand("copy")&&(e.classList.add("success"),setTimeout(function(){e.classList.remove("success")},1000))}catch(o){console.error("docsify-copy-code: ".concat(o)),e.classList.add("error"),setTimeout(function(){e.classList.remove("error")},1000)}"function"==typeof(c=window.getSelection()).removeRange?c.removeRange(t):"function"==typeof c.removeAllRanges&&c.removeAllRanges()}})})}].concat(window.$docsify.plugins||[])}(); //# sourceMappingURL=docsify-copy-code.min.js.map \ No newline at end of file