feat: 加 Patchbay 安装入口
Patchbay 是网页编辑 mihomo 配置的工具,独立仓库、独立发布链路。这里只做 入口:拉它的 install.sh 下来执行,装、更新、卸载的逻辑都在那边,不复制过来。 - 菜单 p 项和 patchbay 子命令,二级菜单为安装/更新、检查更新、服务控制、卸载 - 不直接 bash <(curl ...):先下到临时文件过一遍 bash -n 再以 root 执行。 上游推坏了、或者中间设备塞回来一个门户登录页,那条写法会直接跑掉 - MIHOMO_MIRROR / MIHOMO_BIN / MIHOMO_CONF_DIR 原样透传(名字本来就相同), -y 跟 ASSUME_YES 走,--purge 跟 PURGE 走,check 的退出码按 0/10/1 解读 - 状态显示只读 version.txt 和 systemd 单元状态,版本和服务定义归它自己管 - 卸载 mihomo 不连带删除它,和 Sub-Store 同样处理 顺手把 Sub-Store 的服务控制菜单抽成通用的 unit_ctl_menu,两边共用,行为没变。
This commit is contained in:
@@ -15,7 +15,7 @@
|
|||||||
| 脚本缓存 | `/var/lib/mihomo-up/` |
|
| 脚本缓存 | `/var/lib/mihomo-up/` |
|
||||||
| 内核备份 | `/var/backups/mihomo/` |
|
| 内核备份 | `/var/backups/mihomo/` |
|
||||||
|
|
||||||
(可选装的 Sub-Store 另在 `/opt/sub-store`,卸载 mihomo 不会动它)
|
(可选装的 Sub-Store 在 `/opt/sub-store`、Patchbay 在 `/opt/patchbay`,卸载 mihomo 都不会动它们)
|
||||||
|
|
||||||
除此之外它不碰你系统里的任何东西。
|
除此之外它不碰你系统里的任何东西。
|
||||||
|
|
||||||
@@ -24,6 +24,7 @@
|
|||||||
- Linux + bash 4 以上
|
- Linux + bash 4 以上
|
||||||
- 依赖命令:`curl`、`gzip`、`install`、`awk`、`sed`(一般发行版自带)
|
- 依赖命令:`curl`、`gzip`、`install`、`awk`、`sed`(一般发行版自带)
|
||||||
- 只有选装 Sub-Store 时才额外需要 `node` 和 `unzip`;脚本会检测并给出安装命令,不替你装
|
- 只有选装 Sub-Store 时才额外需要 `node` 和 `unzip`;脚本会检测并给出安装命令,不替你装
|
||||||
|
- 选装 Patchbay 需要 `tar` 和 `unzip`;它的运行时(bun)由它自己的安装脚本装一份私有副本,不碰系统
|
||||||
- 安装、升级、修改配置、卸载都需要 **root**。非 root 也能进菜单,会先提醒一句
|
- 安装、升级、修改配置、卸载都需要 **root**。非 root 也能进菜单,会先提醒一句
|
||||||
- 没有 systemd 的机器(容器等)也能用:脚本跳过服务相关步骤,只管内核和配置,你自己 `mihomo -d /etc/mihomo` 启动起来
|
- 没有 systemd 的机器(容器等)也能用:脚本跳过服务相关步骤,只管内核和配置,你自己 `mihomo -d /etc/mihomo` 启动起来
|
||||||
|
|
||||||
@@ -54,6 +55,7 @@ sudo ./mihomo-up.sh rollback # 内核回滚到上一个备份
|
|||||||
sudo ./mihomo-up.sh uninstall # 卸载,会逐项问你配置和备份要不要删除
|
sudo ./mihomo-up.sh uninstall # 卸载,会逐项问你配置和备份要不要删除
|
||||||
sudo ./mihomo-up.sh shortcut # 只安装 / 刷新 mihomo-up 快捷命令
|
sudo ./mihomo-up.sh shortcut # 只安装 / 刷新 mihomo-up 快捷命令
|
||||||
sudo ./mihomo-up.sh substore # 安装 / 更新 Sub-Store(订阅聚合,可选)
|
sudo ./mihomo-up.sh substore # 安装 / 更新 Sub-Store(订阅聚合,可选)
|
||||||
|
sudo ./mihomo-up.sh patchbay # 安装 / 更新 Patchbay(网页编辑配置,可选)
|
||||||
```
|
```
|
||||||
|
|
||||||
## 菜单里有什么
|
## 菜单里有什么
|
||||||
@@ -65,6 +67,7 @@ sudo ./mihomo-up.sh substore # 安装 / 更新 Sub-Store(订阅聚合,
|
|||||||
7. 配置管理 生成配置 / 改端口 / 看面板密钥 / 校验 / 手动编辑
|
7. 配置管理 生成配置 / 改端口 / 看面板密钥 / 校验 / 手动编辑
|
||||||
8. 服务控制 启动 / 停止 / 重启 / 状态 / 日志 / 开机自启
|
8. 服务控制 启动 / 停止 / 重启 / 状态 / 日志 / 开机自启
|
||||||
9. Sub-Store 订阅聚合,可选,见下
|
9. Sub-Store 订阅聚合,可选,见下
|
||||||
|
p. Patchbay 网页编辑配置,可选,见下
|
||||||
u. 卸载 mihomo
|
u. 卸载 mihomo
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -173,6 +176,23 @@ ssh -L 3001:127.0.0.1:3001 用户名@你的服务器
|
|||||||
|
|
||||||
卸载 mihomo **不会**连带删除 Sub-Store——你的订阅数据在里面。要删就走菜单第 9 项里的卸载。
|
卸载 mihomo **不会**连带删除 Sub-Store——你的订阅数据在里面。要删就走菜单第 9 项里的卸载。
|
||||||
|
|
||||||
|
## Patchbay(可选)
|
||||||
|
|
||||||
|
[Patchbay](https://git.im0o.top/im0o/mihomo-patchbay) 是编辑 mihomo 配置的网页工具:在浏览器里改配置、校验、直接重载内核,省得 SSH 上去用 vi。菜单 `p` 项安装,它同样是独立服务,**不进一键安装**。
|
||||||
|
|
||||||
|
**这里只是个入口**:装、更新、卸载全由 Patchbay 自己的 `install.sh` 完成,本脚本只负责把它拉下来执行(先过一遍 `bash -n`,语法不过就不以 root 运行),并把 `--mirror`、`-y` 和 `MIHOMO_BIN` / `MIHOMO_CONF_DIR` 原样传过去。所以 Patchbay 的版本、服务定义、环境变量都归它自己管,出问题去它的仓库反馈。
|
||||||
|
|
||||||
|
**前提**是 mihomo 已经装好、且配置里开了管理接口(`external-controller`)——Patchbay 靠管理接口读线路和触发重载。没开的话它会拒绝安装并告诉你先跑一遍配置向导。
|
||||||
|
|
||||||
|
装完只监听 `127.0.0.1:7580`,访问方式和访问令牌在安装结束时打印出来,用法和 Sub-Store 一样是 SSH 隧道:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh -N -L 7580:127.0.0.1:7580 用户名@你的服务器
|
||||||
|
# 然后本机浏览器打开 http://127.0.0.1:7580,填脚本给你的访问令牌
|
||||||
|
```
|
||||||
|
|
||||||
|
卸载 mihomo 同样**不会**连带删除 Patchbay,要删走菜单 `p` → 卸载。
|
||||||
|
|
||||||
## 升级和回滚
|
## 升级和回滚
|
||||||
|
|
||||||
`update` 只更换内核二进制,不动你的配置和服务定义。替换前有两道闸门,任一不过就中止:
|
`update` 只更换内核二进制,不动你的配置和服务定义。替换前有两道闸门,任一不过就中止:
|
||||||
@@ -269,6 +289,9 @@ sudo ./mihomo-up.sh install --mirror https://ghfast.top/
|
|||||||
| 仓库 raw 地址(快捷命令拉取源) | `MIHOMO_UP_URL` |
|
| 仓库 raw 地址(快捷命令拉取源) | `MIHOMO_UP_URL` |
|
||||||
| `/opt/sub-store`(Sub-Store 目录) | `SUBSTORE_DIR` |
|
| `/opt/sub-store`(Sub-Store 目录) | `SUBSTORE_DIR` |
|
||||||
| `sub-store`(Sub-Store 服务名) | `SUBSTORE_SERVICE` |
|
| `sub-store`(Sub-Store 服务名) | `SUBSTORE_SERVICE` |
|
||||||
|
| `/opt/patchbay`(Patchbay 目录) | `PATCHBAY_PREFIX` |
|
||||||
|
| `patchbay`(Patchbay 服务名) | `PATCHBAY_SERVICE` |
|
||||||
|
| Patchbay 仓库 raw 地址(安装脚本拉取源) | `PATCHBAY_INSTALL_URL` |
|
||||||
|
|
||||||
内核备份最多保留 3 份(脚本内常量 `KEEP=3`)。配置备份不自动清理,积累多了自己删除 `config.yaml.bak-*`。
|
内核备份最多保留 3 份(脚本内常量 `KEEP=3`)。配置备份不自动清理,积累多了自己删除 `config.yaml.bak-*`。
|
||||||
|
|
||||||
|
|||||||
+131
-7
@@ -75,6 +75,7 @@ mihomo-up.sh — 安装 / 配置 / 升级 / 卸载 mihomo 内核
|
|||||||
mihomo-up.sh service 只写入 / 刷新 systemd 服务文件
|
mihomo-up.sh service 只写入 / 刷新 systemd 服务文件
|
||||||
mihomo-up.sh shortcut 只安装 / 刷新 mihomo-up 快捷命令
|
mihomo-up.sh shortcut 只安装 / 刷新 mihomo-up 快捷命令
|
||||||
mihomo-up.sh substore 安装 / 更新 Sub-Store(订阅聚合,可选)
|
mihomo-up.sh substore 安装 / 更新 Sub-Store(订阅聚合,可选)
|
||||||
|
mihomo-up.sh patchbay 安装 / 更新 Patchbay(网页编辑配置,可选)
|
||||||
mihomo-up.sh rollback 回滚到上一个备份的内核
|
mihomo-up.sh rollback 回滚到上一个备份的内核
|
||||||
mihomo-up.sh list 列出本地内核备份
|
mihomo-up.sh list 列出本地内核备份
|
||||||
mihomo-up.sh uninstall [--purge] 卸载内核和服务;--purge 连配置和备份一起删除
|
mihomo-up.sh uninstall [--purge] 卸载内核和服务;--purge 连配置和备份一起删除
|
||||||
@@ -1122,7 +1123,11 @@ EOF
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
ss_svc_menu() {
|
ss_svc_menu() { unit_ctl_menu "$SS_SERVICE"; }
|
||||||
|
|
||||||
|
# 启动/停止/日志这套操作对哪个 systemd 单元都一样,Sub-Store 和 Patchbay 共用
|
||||||
|
unit_ctl_menu() { # unit_ctl_menu <服务名>
|
||||||
|
local u="$1"
|
||||||
cat >&2 <<EOF
|
cat >&2 <<EOF
|
||||||
|
|
||||||
${C}1.${N} ▶️ 启动 ${C}2.${N} ⏹️ 停止 ${C}3.${N} 🔄 重启
|
${C}1.${N} ▶️ 启动 ${C}2.${N} ⏹️ 停止 ${C}3.${N} 🔄 重启
|
||||||
@@ -1130,16 +1135,125 @@ ss_svc_menu() {
|
|||||||
EOF
|
EOF
|
||||||
local c; ask "$(printf '\n %s>%s ' "$W" "$N")" c
|
local c; ask "$(printf '\n %s>%s ' "$W" "$N")" c
|
||||||
case "$c" in
|
case "$c" in
|
||||||
1) require_root "控制 $SS_SERVICE"; systemctl start "$SS_SERVICE" && ok "已启动" || warn "启动失败: journalctl -u $SS_SERVICE -n 50" ;;
|
1) require_root "控制 $u"; systemctl start "$u" && ok "已启动" || warn "启动失败: journalctl -u $u -n 50" ;;
|
||||||
2) require_root "控制 $SS_SERVICE"; systemctl stop "$SS_SERVICE" && ok "已停止" ;;
|
2) require_root "控制 $u"; systemctl stop "$u" && ok "已停止" ;;
|
||||||
3) require_root "控制 $SS_SERVICE"; systemctl restart "$SS_SERVICE" && ok "已重启" || warn "重启失败: journalctl -u $SS_SERVICE -n 50" ;;
|
3) require_root "控制 $u"; systemctl restart "$u" && ok "已重启" || warn "重启失败: journalctl -u $u -n 50" ;;
|
||||||
4) systemctl status "$SS_SERVICE" --no-pager || true ;;
|
4) systemctl status "$u" --no-pager || true ;;
|
||||||
5) journalctl -u "$SS_SERVICE" -n 40 --no-pager || true ;;
|
5) journalctl -u "$u" -n 40 --no-pager || true ;;
|
||||||
*) return 0 ;;
|
*) return 0 ;;
|
||||||
esac
|
esac
|
||||||
pause
|
pause
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ───────────────────────── Patchbay ─────────────────────────
|
||||||
|
# 在网页上编辑 mihomo 配置的工具,独立仓库、独立发布,安装/更新/卸载全在它自己的
|
||||||
|
# install.sh 里。这里只做入口:把那个脚本拉下来执行,参数原样传过去。
|
||||||
|
# 它出了问题去 https://git.im0o.top/im0o/mihomo-patchbay 改,本脚本不复制它的逻辑。
|
||||||
|
#
|
||||||
|
# 前提是 mihomo 已经装好、并且配置里开了管理接口(external-controller),
|
||||||
|
# Patchbay 靠管理接口读线路和重载;这两样缺一样它自己会报错退出。
|
||||||
|
PB_INSTALL_URL="${PATCHBAY_INSTALL_URL:-https://git.im0o.top/im0o/mihomo-patchbay/raw/branch/main/install.sh}"
|
||||||
|
PB_SERVICE="${PATCHBAY_SERVICE:-patchbay}"
|
||||||
|
PB_PREFIX="${PATCHBAY_PREFIX:-/opt/patchbay}"
|
||||||
|
|
||||||
|
pb_installed() { [[ -d "$PB_PREFIX/app" ]]; }
|
||||||
|
|
||||||
|
pb_version() {
|
||||||
|
[[ -f "$PB_PREFIX/app/version.txt" ]] && tr -d '[:space:]' < "$PB_PREFIX/app/version.txt" || printf ''
|
||||||
|
}
|
||||||
|
|
||||||
|
pb_run() { # pb_run <install.sh 的子命令和参数…>;退出码原样返回
|
||||||
|
local tmp; tmp="$(mktemp)"
|
||||||
|
if ! curl -fsSL --retry 2 --connect-timeout 10 --max-time 60 "$PB_INSTALL_URL" -o "$tmp" \
|
||||||
|
|| [[ ! -s "$tmp" ]]; then
|
||||||
|
rm -f "$tmp"
|
||||||
|
warn "拉取 Patchbay 安装脚本失败: $PB_INSTALL_URL"
|
||||||
|
warn "网络不通,或者仓库那边还没有这个文件"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
# 拿到了不等于能运行: 上游推坏了、或者中间设备塞回来一个门户登录页,
|
||||||
|
# 都不该以 root 执行。和快捷命令启动器同一套防线。
|
||||||
|
if ! bash -n "$tmp" 2>/dev/null; then
|
||||||
|
rm -f "$tmp"
|
||||||
|
warn "拉到的内容没通过语法检查,已丢弃(上游坏了? 返回的根本不是脚本?)"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local args=("$@")
|
||||||
|
(( ASSUME_YES )) && args+=(-y)
|
||||||
|
# 镜像和路径覆盖用的是同一组变量名,原样传下去就行
|
||||||
|
local rc=0
|
||||||
|
MIHOMO_MIRROR="$MIRROR" MIHOMO_BIN="$BIN" MIHOMO_CONF_DIR="$CONF_DIR" \
|
||||||
|
bash "$tmp" "${args[@]}" || rc=$?
|
||||||
|
rm -f "$tmp"
|
||||||
|
return $rc
|
||||||
|
}
|
||||||
|
|
||||||
|
pb_install() {
|
||||||
|
require_root "安装 Patchbay"
|
||||||
|
info "从 $PB_INSTALL_URL 取安装脚本"
|
||||||
|
pb_run install || { warn "Patchbay 安装/更新没走完,看上面 install.sh 的报错"; return 1; }
|
||||||
|
}
|
||||||
|
|
||||||
|
pb_check() {
|
||||||
|
local rc=0
|
||||||
|
pb_run check || rc=$?
|
||||||
|
case "$rc" in
|
||||||
|
0) ;; # 已是最新,install.sh 自己打印过了
|
||||||
|
10) info "选 1 就能装上 / 更新到最新版" ;;
|
||||||
|
*) warn "查询失败" ;;
|
||||||
|
esac
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
pb_uninstall() {
|
||||||
|
require_root "卸载 Patchbay"
|
||||||
|
log ""
|
||||||
|
log " ${D}会删掉: 服务 ${PB_SERVICE}、程序目录 ${PB_PREFIX}${N}"
|
||||||
|
log " ${D}mihomo 本身和它的配置不受影响。${N}"
|
||||||
|
(( PURGE )) || confirm " 确认卸载 Patchbay?" || { info "已取消"; return 0; }
|
||||||
|
local args=(uninstall)
|
||||||
|
if (( PURGE )) || confirm " 连 Patchbay 的环境变量文件和访问令牌一起删?(重装会重新生成)"; then
|
||||||
|
args+=(--purge)
|
||||||
|
fi
|
||||||
|
pb_run "${args[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
pb_menu() {
|
||||||
|
while true; do
|
||||||
|
local st="${D}未安装${N}"
|
||||||
|
if pb_installed; then
|
||||||
|
if systemctl is-active --quiet "$PB_SERVICE" 2>/dev/null; then st="${G}● 运行中${N}"
|
||||||
|
else st="${Y}○ 已停止${N}"; fi
|
||||||
|
local ver; ver="$(pb_version)"
|
||||||
|
[[ -n "$ver" ]] && st="$st ${D}${ver}${N}"
|
||||||
|
fi
|
||||||
|
cat >&2 <<EOF
|
||||||
|
|
||||||
|
${W} Patchbay${N} ${D}— 在网页上编辑 mihomo 配置,改完直接重载${N}
|
||||||
|
${D}状态 ${N}${st} ${D}目录 ${N}${PB_PREFIX}
|
||||||
|
${D}装、更新、卸载都由 Patchbay 自己的 install.sh 做,这里只是个入口。${N}
|
||||||
|
${D}访问地址和令牌在安装完成时会打印出来。${N}
|
||||||
|
|
||||||
|
${C}1.${N} 📦 安装 / 更新到最新版
|
||||||
|
${C}2.${N} 🔍 检查更新
|
||||||
|
${C}3.${N} 🎛️ 启动 / 停止 / 日志
|
||||||
|
${C}4.${N} 🗑️ 卸载
|
||||||
|
${C}0.${N} ↩️ 返回
|
||||||
|
EOF
|
||||||
|
local c; ask "$(printf '\n %s>%s ' "$W" "$N")" c
|
||||||
|
echo >&2
|
||||||
|
case "$c" in
|
||||||
|
1) pb_install || true; pause ;;
|
||||||
|
2) pb_check || true; pause ;;
|
||||||
|
3) unit_ctl_menu "$PB_SERVICE" ;;
|
||||||
|
4) pb_uninstall || true; pause ;;
|
||||||
|
0|q|"") return 0 ;;
|
||||||
|
*) warn "没有「$c」这个选项,输入上面列出的数字,或 0 返回"; sleep 1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
# ───────────────────────── 一键安装 ─────────────────────────
|
# ───────────────────────── 一键安装 ─────────────────────────
|
||||||
do_install() {
|
do_install() {
|
||||||
(( DRY_RUN )) || require_root "安装 mihomo"
|
(( DRY_RUN )) || require_root "安装 mihomo"
|
||||||
@@ -1302,6 +1416,13 @@ do_uninstall() {
|
|||||||
info "Sub-Store 还装着($SS_DIR),它是独立服务,没有跟着删"
|
info "Sub-Store 还装着($SS_DIR),它是独立服务,没有跟着删"
|
||||||
info "要一起卸载的话: 菜单第 9 项 → 卸载,或 $0 substore"
|
info "要一起卸载的话: 菜单第 9 项 → 卸载,或 $0 substore"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Patchbay 同理,也是独立服务
|
||||||
|
if pb_installed; then
|
||||||
|
log ""
|
||||||
|
info "Patchbay 还装着($PB_PREFIX),它是独立服务,没有跟着删"
|
||||||
|
info "要一起卸载的话: 菜单 p → 卸载,或 $0 patchbay"
|
||||||
|
fi
|
||||||
ok "卸载完成"
|
ok "卸载完成"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1375,6 +1496,7 @@ ${W} 选个操作吧:${N}
|
|||||||
${C}7.${N} ⚙️ 配置管理 ${D}(订阅 / 端口 / 面板密钥 / 校验)${N}
|
${C}7.${N} ⚙️ 配置管理 ${D}(订阅 / 端口 / 面板密钥 / 校验)${N}
|
||||||
${C}8.${N} 🎛️ 服务控制 ${D}(启动 / 停止 / 日志 / 开机自启)${N}
|
${C}8.${N} 🎛️ 服务控制 ${D}(启动 / 停止 / 日志 / 开机自启)${N}
|
||||||
${C}9.${N} 🧩 Sub-Store ${D}(订阅聚合, 可选)${N}
|
${C}9.${N} 🧩 Sub-Store ${D}(订阅聚合, 可选)${N}
|
||||||
|
${C}p.${N} 🌐 Patchbay ${D}(网页编辑配置, 可选)${N}
|
||||||
${C}u.${N} 🗑️ 卸载 mihomo
|
${C}u.${N} 🗑️ 卸载 mihomo
|
||||||
${C}0.${N} 👋 退出
|
${C}0.${N} 👋 退出
|
||||||
EOF
|
EOF
|
||||||
@@ -1402,6 +1524,7 @@ EOF
|
|||||||
7) conf_menu ;;
|
7) conf_menu ;;
|
||||||
8) svc_menu ;;
|
8) svc_menu ;;
|
||||||
9) ss_menu ;;
|
9) ss_menu ;;
|
||||||
|
p|P) pb_menu ;;
|
||||||
u|U) do_uninstall || true; pause ;;
|
u|U) do_uninstall || true; pause ;;
|
||||||
0|q|"") log " ${D}bye~${N}"; exit 0 ;;
|
0|q|"") log " ${D}bye~${N}"; exit 0 ;;
|
||||||
*) warn "没有「$c」这个选项,输入上面列出的数字,或 0 退出/返回"; sleep 1 ;;
|
*) warn "没有「$c」这个选项,输入上面列出的数字,或 0 退出/返回"; sleep 1 ;;
|
||||||
@@ -1479,7 +1602,7 @@ if [[ $# -eq 0 ]]; then
|
|||||||
if [[ -t 0 ]] || { [[ -t 1 ]] && [[ -r /dev/tty ]]; }; then CMD="menu"; else CMD="check"; fi
|
if [[ -t 0 ]] || { [[ -t 1 ]] && [[ -r /dev/tty ]]; }; then CMD="menu"; else CMD="check"; fi
|
||||||
else
|
else
|
||||||
case "$1" in
|
case "$1" in
|
||||||
check|update|install|uninstall|config|service|shortcut|substore|rollback|list|menu) CMD="$1"; shift ;;
|
check|update|install|uninstall|config|service|shortcut|substore|patchbay|rollback|list|menu) CMD="$1"; shift ;;
|
||||||
-h|--help|help) usage 0 ;;
|
-h|--help|help) usage 0 ;;
|
||||||
-v|--version-self) echo "mihomo-up.sh v${SELF_VERSION}"; exit 0 ;;
|
-v|--version-self) echo "mihomo-up.sh v${SELF_VERSION}"; exit 0 ;;
|
||||||
-*) CMD="check" ;;
|
-*) CMD="check" ;;
|
||||||
@@ -1524,6 +1647,7 @@ case "$CMD" in
|
|||||||
service) install_unit || exit 1 ;;
|
service) install_unit || exit 1 ;;
|
||||||
shortcut) install_launcher || exit 1 ;;
|
shortcut) install_launcher || exit 1 ;;
|
||||||
substore) ss_menu ;;
|
substore) ss_menu ;;
|
||||||
|
patchbay) pb_menu ;;
|
||||||
list) do_list ;;
|
list) do_list ;;
|
||||||
rollback) do_rollback || exit 1 ;;
|
rollback) do_rollback || exit 1 ;;
|
||||||
check)
|
check)
|
||||||
|
|||||||
Reference in New Issue
Block a user