From cfff45967379be9f875f8d747ae6d046851d5b12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Fri, 25 Oct 2024 17:06:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=A7=BB=E9=99=A4color=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 2 - go.sum | 4 - internal/bootstrap/cli.go | 3 +- internal/data/backup.go | 35 ++++---- internal/data/setting.go | 49 ++++++----- internal/service/cli.go | 165 +++++++++++++++++++------------------- 6 files changed, 124 insertions(+), 134 deletions(-) diff --git a/go.mod b/go.mod index 1954f3ee..31a00bdc 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,6 @@ require ( github.com/go-resty/resty/v2 v2.15.3 github.com/go-sql-driver/mysql v1.8.1 github.com/goccy/go-yaml v1.12.0 - github.com/gookit/color v1.5.4 github.com/gorilla/websocket v1.5.3 github.com/hashicorp/go-version v1.7.0 github.com/klauspost/compress v1.17.11 @@ -109,7 +108,6 @@ require ( github.com/tklauser/go-sysconf v0.3.14 // indirect github.com/tklauser/numcpus v0.8.0 // indirect github.com/ulikunitz/xz v0.5.12 // indirect - github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0 // indirect go.opentelemetry.io/otel v1.30.0 // indirect diff --git a/go.sum b/go.sum index 9eeeffcb..e4ec7164 100644 --- a/go.sum +++ b/go.sum @@ -164,8 +164,6 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0= -github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys= @@ -310,8 +308,6 @@ github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc= github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli/v3 v3.0.0-alpha9.1 h1:1fJU+bltkwN8lF4Sni/X0i1d8XwPIrS82ivZ8qsp/q4= github.com/urfave/cli/v3 v3.0.0-alpha9.1/go.mod h1:FnIeEMYu+ko8zP1F9Ypr3xkZMIDqW3DR92yUtY39q1Y= -github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 h1:QldyIu/L63oPpyvQmHgvgickp1Yw510KJOqX7H24mg8= -github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= diff --git a/internal/bootstrap/cli.go b/internal/bootstrap/cli.go index 1b9ab5ef..3343a2e7 100644 --- a/internal/bootstrap/cli.go +++ b/internal/bootstrap/cli.go @@ -6,7 +6,6 @@ import ( "os" "strings" - "github.com/gookit/color" "github.com/urfave/cli/v3" "github.com/TheTNB/panel/internal/app" @@ -46,6 +45,6 @@ func initCli() { Commands: route.Cli(), } if err := cmd.Run(context.Background(), os.Args); err != nil { - color.Redln(fmt.Sprintf("|-%v", err)) + fmt.Println(fmt.Sprintf("|-%v", err)) } } diff --git a/internal/data/backup.go b/internal/data/backup.go index 045c531e..f91a8975 100644 --- a/internal/data/backup.go +++ b/internal/data/backup.go @@ -9,7 +9,6 @@ import ( "strings" "time" - "github.com/gookit/color" "github.com/shirou/gopsutil/disk" "github.com/TheTNB/panel/internal/app" @@ -182,11 +181,11 @@ func (r *backupRepo) ClearExpired(path, prefix string, save int) error { for _, file := range toDelete { filePath := filepath.Join(path, file.Name()) if app.IsCli { - color.Greenln(fmt.Sprintf("|-清理过期文件:%s", filePath)) + fmt.Println(fmt.Sprintf("|-清理过期文件:%s", filePath)) } if err = os.Remove(filePath); err != nil { if app.IsCli { - color.Redln(fmt.Sprintf("|-清理失败:%v", err)) + fmt.Println(fmt.Sprintf("|-清理失败:%v", err)) } else { return fmt.Errorf("清理失败:%v", err) } @@ -243,8 +242,8 @@ func (r *backupRepo) createWebsite(to string, name string) error { } if app.IsCli { - color.Greenln(fmt.Sprintf("|-备份耗时:%s", time.Since(start).String())) - color.Greenln(fmt.Sprintf("|-已备份至文件:%s", filepath.Base(backup))) + fmt.Println(fmt.Sprintf("|-备份耗时:%s", time.Since(start).String())) + fmt.Println(fmt.Sprintf("|-已备份至文件:%s", filepath.Base(backup))) } return nil } @@ -290,8 +289,8 @@ func (r *backupRepo) createMySQL(to string, name string) error { } if app.IsCli { - color.Greenln(fmt.Sprintf("|-备份耗时:%s", time.Since(start).String())) - color.Greenln(fmt.Sprintf("|-已备份至文件:%s", filepath.Base(backup+".zip"))) + fmt.Println(fmt.Sprintf("|-备份耗时:%s", time.Since(start).String())) + fmt.Println(fmt.Sprintf("|-已备份至文件:%s", filepath.Base(backup+".zip"))) } return nil } @@ -327,8 +326,8 @@ func (r *backupRepo) createPostgres(to string, name string) error { } if app.IsCli { - color.Greenln(fmt.Sprintf("|-备份耗时:%s", time.Since(start).String())) - color.Greenln(fmt.Sprintf("|-已备份至文件:%s", filepath.Base(backup+".zip"))) + fmt.Println(fmt.Sprintf("|-备份耗时:%s", time.Since(start).String())) + fmt.Println(fmt.Sprintf("|-已备份至文件:%s", filepath.Base(backup+".zip"))) } return nil } @@ -354,8 +353,8 @@ func (r *backupRepo) createPanel(to string) error { } if app.IsCli { - color.Greenln(fmt.Sprintf("|-备份耗时:%s", time.Since(start).String())) - color.Greenln(fmt.Sprintf("|-已备份至文件:%s", filepath.Base(backup))) + fmt.Println(fmt.Sprintf("|-备份耗时:%s", time.Since(start).String())) + fmt.Println(fmt.Sprintf("|-已备份至文件:%s", filepath.Base(backup))) } return nil } @@ -478,10 +477,10 @@ func (r *backupRepo) preCheckPath(to, path string) error { } if app.IsCli { - color.Greenln(fmt.Sprintf("|-目标大小:%s", str.FormatBytes(float64(size)))) - color.Greenln(fmt.Sprintf("|-目标文件数:%d", files)) - color.Greenln(fmt.Sprintf("|-备份目录可用空间:%s", str.FormatBytes(float64(usage.Free)))) - color.Greenln(fmt.Sprintf("|-备份目录可用Inode:%d", usage.InodesFree)) + fmt.Println(fmt.Sprintf("|-目标大小:%s", str.FormatBytes(float64(size)))) + fmt.Println(fmt.Sprintf("|-目标文件数:%d", files)) + fmt.Println(fmt.Sprintf("|-备份目录可用空间:%s", str.FormatBytes(float64(usage.Free)))) + fmt.Println(fmt.Sprintf("|-备份目录可用Inode:%d", usage.InodesFree)) } if uint64(size) > usage.Free { @@ -504,9 +503,9 @@ func (r *backupRepo) preCheckDB(to string, size int64) error { } if app.IsCli { - color.Greenln(fmt.Sprintf("|-目标大小:%s", str.FormatBytes(float64(size)))) - color.Greenln(fmt.Sprintf("|-备份目录可用空间:%s", str.FormatBytes(float64(usage.Free)))) - color.Greenln(fmt.Sprintf("|-备份目录可用Inode:%d", usage.InodesFree)) + fmt.Println(fmt.Sprintf("|-目标大小:%s", str.FormatBytes(float64(size)))) + fmt.Println(fmt.Sprintf("|-备份目录可用空间:%s", str.FormatBytes(float64(usage.Free)))) + fmt.Println(fmt.Sprintf("|-备份目录可用Inode:%d", usage.InodesFree)) } if uint64(size) > usage.Free { diff --git a/internal/data/setting.go b/internal/data/setting.go index 5268b5ba..28a209bf 100644 --- a/internal/data/setting.go +++ b/internal/data/setting.go @@ -9,7 +9,6 @@ import ( "github.com/go-rat/utils/hash" "github.com/goccy/go-yaml" - "github.com/gookit/color" "github.com/spf13/cast" "gorm.io/gorm" @@ -243,13 +242,13 @@ func (r *settingRepo) UpdatePanel(version, url, checksum string) error { name := filepath.Base(url) if app.IsCli { - color.Greenln(fmt.Sprintf("|-目标版本:%s", version)) - color.Greenln(fmt.Sprintf("|-下载链接:%s", url)) - color.Greenln(fmt.Sprintf("|-文件名:%s", name)) + fmt.Println(fmt.Sprintf("|-目标版本:%s", version)) + fmt.Println(fmt.Sprintf("|-下载链接:%s", url)) + fmt.Println(fmt.Sprintf("|-文件名:%s", name)) } if app.IsCli { - color.Greenln("|-正在下载...") + fmt.Println("|-正在下载...") } if _, err := shell.Execf("wget -T 120 -t 3 -O /tmp/%s %s", name, url); err != nil { return fmt.Errorf("下载失败:%w", err) @@ -262,39 +261,39 @@ func (r *settingRepo) UpdatePanel(version, url, checksum string) error { } if app.IsCli { - color.Greenln("|-校验下载文件...") + fmt.Println("|-校验下载文件...") } if check, err := shell.Execf("cd /tmp && sha256sum -c %s --ignore-missing", name+".sha256"); check != name+": OK" || err != nil { return errors.New("下载文件校验失败") } if err := io.Remove(filepath.Join("/tmp", name+".sha256")); err != nil { if app.IsCli { - color.Redln("|-清理校验文件失败:", err) + fmt.Println("|-清理校验文件失败:", err) } return fmt.Errorf("清理校验文件失败:%w", err) } if app.IsCli { - color.Greenln("|-前置检查...") + fmt.Println("|-前置检查...") } if io.Exists("/tmp/panel-storage.zip") { return errors.New("检测到 /tmp 存在临时文件,可能是上次更新失败所致,请运行 panel-cli fix 修复后重试") } if app.IsCli { - color.Greenln("|-备份面板数据...") + fmt.Println("|-备份面板数据...") } // 备份面板 backup := NewBackupRepo() if err := backup.Create(biz.BackupTypePanel, ""); err != nil { if app.IsCli { - color.Redln("|-备份面板失败:", err) + fmt.Println("|-备份面板失败:", err) } return fmt.Errorf("备份面板失败:%w", err) } if err := io.Compress([]string{filepath.Join(app.Root, "panel/storage")}, "/tmp/panel-storage.zip", io.Zip); err != nil { if app.IsCli { - color.Redln("|-备份面板数据失败:", err) + fmt.Println("|-备份面板数据失败:", err) } return fmt.Errorf("备份面板数据失败:%w", err) } @@ -303,14 +302,14 @@ func (r *settingRepo) UpdatePanel(version, url, checksum string) error { } if app.IsCli { - color.Greenln("|-清理旧版本...") + fmt.Println("|-清理旧版本...") } if _, err := shell.Execf("rm -rf %s/panel/*", app.Root); err != nil { return fmt.Errorf("清理旧版本失败:%w", err) } if app.IsCli { - color.Greenln("|-解压新版本...") + fmt.Println("|-解压新版本...") } if err := io.UnCompress(filepath.Join("/tmp", name), filepath.Join(app.Root, "panel"), io.Zip); err != nil { return fmt.Errorf("解压失败:%w", err) @@ -320,7 +319,7 @@ func (r *settingRepo) UpdatePanel(version, url, checksum string) error { } if app.IsCli { - color.Greenln("|-恢复面板数据...") + fmt.Println("|-恢复面板数据...") } if err := io.UnCompress("/tmp/panel-storage.zip", filepath.Join(app.Root, "panel"), io.Zip); err != nil { return fmt.Errorf("恢复面板数据失败:%w", err) @@ -330,7 +329,7 @@ func (r *settingRepo) UpdatePanel(version, url, checksum string) error { } if app.IsCli { - color.Greenln("|-运行更新后脚本...") + fmt.Println("|-运行更新后脚本...") } if _, err := shell.Execf("curl -fsLm 10 https://dl.cdn.haozi.net/panel/auto_update.sh | bash"); err != nil { return fmt.Errorf("运行面板更新后脚本失败:%w", err) @@ -346,14 +345,14 @@ func (r *settingRepo) UpdatePanel(version, url, checksum string) error { } if app.IsCli { - color.Greenln("|-设置关键文件权限...") + fmt.Println("|-设置关键文件权限...") } _ = io.Chmod("/usr/local/sbin/panel-cli", 0700) _ = io.Chmod("/etc/systemd/system/panel.service", 0700) _ = io.Chmod(filepath.Join(app.Root, "panel"), 0700) if app.IsCli { - color.Greenln("|-更新完成") + fmt.Println("|-更新完成") } _, _ = shell.Execf("systemctl daemon-reload") @@ -366,7 +365,7 @@ func (r *settingRepo) UpdatePanel(version, url, checksum string) error { func (r *settingRepo) FixPanel() error { if app.IsCli { - color.Greenln("|-开始修复面板...") + fmt.Println("|-开始修复面板...") } // 检查关键文件是否正常 flag := false @@ -393,7 +392,7 @@ func (r *settingRepo) FixPanel() error { return fmt.Errorf("清理临时文件失败:%w", err) } if app.IsCli { - color.Greenln("已清理临时文件,请运行 panel-cli update 更新面板") + fmt.Println("已清理临时文件,请运行 panel-cli update 更新面板") } return nil } @@ -413,12 +412,12 @@ func (r *settingRepo) FixPanel() error { } latest := list[0] if app.IsCli { - color.Greenln(fmt.Sprintf("|-使用备份文件:%s", latest.Name)) + fmt.Println(fmt.Sprintf("|-使用备份文件:%s", latest.Name)) } // 解压备份文件 if app.IsCli { - color.Greenln("|-解压备份文件...") + fmt.Println("|-解压备份文件...") } if err = io.Remove("/tmp/panel-fix"); err != nil { return fmt.Errorf("清理临时目录失败:%w", err) @@ -429,7 +428,7 @@ func (r *settingRepo) FixPanel() error { // 移动文件到对应位置 if app.IsCli { - color.Greenln("|-移动备份文件...") + fmt.Println("|-移动备份文件...") } if io.Exists(filepath.Join("/tmp/panel-fix", "panel")) && io.IsDir(filepath.Join("/tmp/panel-fix", "panel")) { if err = io.Remove(filepath.Join(app.Root, "panel")); err != nil { @@ -452,7 +451,7 @@ func (r *settingRepo) FixPanel() error { // tmp目录下如果有storage备份,则解压回去 if app.IsCli { - color.Greenln("|-恢复面板数据...") + fmt.Println("|-恢复面板数据...") } if io.Exists("/tmp/panel-storage.zip") { if err = io.UnCompress("/tmp/panel-storage.zip", filepath.Join(app.Root, "panel"), io.Zip); err != nil { @@ -472,7 +471,7 @@ func (r *settingRepo) FixPanel() error { // 处理权限 if app.IsCli { - color.Greenln("|-设置关键文件权限...") + fmt.Println("|-设置关键文件权限...") } if err = io.Chmod("/usr/local/etc/panel/config.yml", 0600); err != nil { return err @@ -488,7 +487,7 @@ func (r *settingRepo) FixPanel() error { } if app.IsCli { - color.Greenln("|-修复完成") + fmt.Println("|-修复完成") } tools.RestartPanel() diff --git a/internal/service/cli.go b/internal/service/cli.go index 281228c6..764d56c3 100644 --- a/internal/service/cli.go +++ b/internal/service/cli.go @@ -9,7 +9,6 @@ import ( "github.com/go-rat/utils/hash" "github.com/goccy/go-yaml" - "github.com/gookit/color" "github.com/spf13/cast" "github.com/urfave/cli/v3" "gorm.io/gorm" @@ -56,7 +55,7 @@ func (s *CliService) Restart(ctx context.Context, cmd *cli.Command) error { return err } - color.Greenln("面板服务已重启") + fmt.Println("面板服务已重启") return nil } @@ -65,7 +64,7 @@ func (s *CliService) Stop(ctx context.Context, cmd *cli.Command) error { return err } - color.Greenln("面板服务已停止") + fmt.Println("面板服务已停止") return nil } @@ -74,7 +73,7 @@ func (s *CliService) Start(ctx context.Context, cmd *cli.Command) error { return err } - color.Greenln("面板服务已启动") + fmt.Println("面板服务已启动") return nil } @@ -132,32 +131,32 @@ func (s *CliService) Info(ctx context.Context, cmd *cli.Command) error { return fmt.Errorf("入口获取失败") } - color.Greenln(fmt.Sprintf("用户名: %s", user.Username)) - color.Greenln(fmt.Sprintf("密码: %s", password)) - color.Greenln(fmt.Sprintf("端口: %s", port)) - color.Greenln(fmt.Sprintf("入口: %s", entrance)) + fmt.Println(fmt.Sprintf("用户名: %s", user.Username)) + fmt.Println(fmt.Sprintf("密码: %s", password)) + fmt.Println(fmt.Sprintf("端口: %s", port)) + fmt.Println(fmt.Sprintf("入口: %s", entrance)) lv4, err := tools.GetLocalIPv4() if err == nil { - color.Greenln(fmt.Sprintf("本地IPv4地址: %s://%s:%s%s", protocol, lv4, port, entrance)) + fmt.Println(fmt.Sprintf("本地IPv4地址: %s://%s:%s%s", protocol, lv4, port, entrance)) } lv6, err := tools.GetLocalIPv6() if err == nil { - color.Greenln(fmt.Sprintf("本地IPv6地址: %s://[%s]:%s%s", protocol, lv6, port, entrance)) + fmt.Println(fmt.Sprintf("本地IPv6地址: %s://[%s]:%s%s", protocol, lv6, port, entrance)) } rv4, err := tools.GetPublicIPv4() if err == nil { - color.Greenln(fmt.Sprintf("公网IPv4地址: %s://%s:%s%s", protocol, rv4, port, entrance)) + fmt.Println(fmt.Sprintf("公网IPv4地址: %s://%s:%s%s", protocol, rv4, port, entrance)) } rv6, err := tools.GetPublicIPv6() if err == nil { - color.Greenln(fmt.Sprintf("公网IPv6地址: %s://[%s]:%s%s", protocol, rv6, port, entrance)) + fmt.Println(fmt.Sprintf("公网IPv6地址: %s://[%s]:%s%s", protocol, rv6, port, entrance)) } - color.Infoln("请根据自身网络情况自行选择合适的地址访问面板") - color.Infoln(fmt.Sprintf("如无法访问,请检查服务器运营商安全组和防火墙是否放行%s端口", port)) - color.Infoln("若仍无法访问,可尝试运行 panel-cli https off 关闭面板HTTPS") - color.Warnln("警告:关闭面板HTTPS后,面板安全性将大大降低,请谨慎操作") + fmt.Println("请根据自身网络情况自行选择合适的地址访问面板") + fmt.Println(fmt.Sprintf("如无法访问,请检查服务器运营商安全组和防火墙是否放行%s端口", port)) + fmt.Println("若仍无法访问,可尝试运行 panel-cli https off 关闭面板HTTPS") + fmt.Println("警告:关闭面板HTTPS后,面板安全性将大大降低,请谨慎操作") return nil } @@ -169,7 +168,7 @@ func (s *CliService) UserList(ctx context.Context, cmd *cli.Command) error { } for _, user := range users { - color.Greenln(fmt.Sprintf("ID: %d, 用户名: %s, 邮箱: %s, 创建日期: %s", user.ID, user.Username, user.Email, user.CreatedAt.Format("2006-01-02 15:04:05"))) + fmt.Println(fmt.Sprintf("ID: %d, 用户名: %s, 邮箱: %s, 创建日期: %s", user.ID, user.Username, user.Email, user.CreatedAt.Format("2006-01-02 15:04:05"))) } return nil @@ -199,7 +198,7 @@ func (s *CliService) UserName(ctx context.Context, cmd *cli.Command) error { return fmt.Errorf("用户名修改失败:%v", err) } - color.Greenln(fmt.Sprintf("用户 %s 修改为 %s 成功", oldUsername, newUsername)) + fmt.Println(fmt.Sprintf("用户 %s 修改为 %s 成功", oldUsername, newUsername)) return nil } @@ -231,7 +230,7 @@ func (s *CliService) UserPassword(ctx context.Context, cmd *cli.Command) error { return fmt.Errorf("密码修改失败:%v", err) } - color.Greenln(fmt.Sprintf("用户 %s 密码修改成功", username)) + fmt.Println(fmt.Sprintf("用户 %s 密码修改成功", username)) return nil } @@ -257,7 +256,7 @@ func (s *CliService) HTTPSOn(ctx context.Context, cmd *cli.Command) error { return err } - color.Greenln("已开启HTTPS") + fmt.Println("已开启HTTPS") return s.Restart(ctx, cmd) } @@ -283,7 +282,7 @@ func (s *CliService) HTTPSOff(ctx context.Context, cmd *cli.Command) error { return err } - color.Greenln("已关闭HTTPS") + fmt.Println("已关闭HTTPS") return s.Restart(ctx, cmd) } @@ -309,8 +308,8 @@ func (s *CliService) EntranceOn(ctx context.Context, cmd *cli.Command) error { return err } - color.Greenln("已开启访问入口") - color.Greenln(fmt.Sprintf("访问入口:%s", config.HTTP.Entrance)) + fmt.Println("已开启访问入口") + fmt.Println(fmt.Sprintf("访问入口:%s", config.HTTP.Entrance)) return s.Restart(ctx, cmd) } @@ -336,7 +335,7 @@ func (s *CliService) EntranceOff(ctx context.Context, cmd *cli.Command) error { return err } - color.Greenln("已关闭访问入口") + fmt.Println("已关闭访问入口") return s.Restart(ctx, cmd) } @@ -367,7 +366,7 @@ func (s *CliService) Port(ctx context.Context, cmd *cli.Command) error { return err } - color.Greenln(fmt.Sprintf("已修改端口为 %d", port)) + fmt.Println(fmt.Sprintf("已修改端口为 %d", port)) return s.Restart(ctx, cmd) } @@ -386,7 +385,7 @@ func (s *CliService) WebsiteCreate(ctx context.Context, cmd *cli.Command) error return err } - color.Greenln(fmt.Sprintf("网站 %s 创建成功", website.Name)) + fmt.Println(fmt.Sprintf("网站 %s 创建成功", website.Name)) return nil } @@ -403,7 +402,7 @@ func (s *CliService) WebsiteRemove(ctx context.Context, cmd *cli.Command) error return err } - color.Greenln(fmt.Sprintf("网站 %s 移除成功", website.Name)) + fmt.Println(fmt.Sprintf("网站 %s 移除成功", website.Name)) return nil } @@ -422,7 +421,7 @@ func (s *CliService) WebsiteDelete(ctx context.Context, cmd *cli.Command) error return err } - color.Greenln(fmt.Sprintf("网站 %s 删除成功", website.Name)) + fmt.Println(fmt.Sprintf("网站 %s 删除成功", website.Name)) return nil } @@ -432,47 +431,47 @@ func (s *CliService) WebsiteWrite(ctx context.Context, cmd *cli.Command) error { } func (s *CliService) BackupWebsite(ctx context.Context, cmd *cli.Command) error { - color.Greenln(s.hr) - color.Greenln(fmt.Sprintf("★ 开始备份 [%s]", time.Now().Format(time.DateTime))) - color.Greenln(s.hr) - color.Greenln("|-备份类型:网站") - color.Greenln(fmt.Sprintf("|-备份目标:%s", cmd.String("name"))) + fmt.Println(s.hr) + fmt.Println(fmt.Sprintf("★ 开始备份 [%s]", time.Now().Format(time.DateTime))) + fmt.Println(s.hr) + fmt.Println("|-备份类型:网站") + fmt.Println(fmt.Sprintf("|-备份目标:%s", cmd.String("name"))) if err := s.backupRepo.Create(biz.BackupTypeWebsite, cmd.String("name"), cmd.String("path")); err != nil { return fmt.Errorf("|-备份失败:%v", err) } - color.Greenln(s.hr) - color.Greenln(fmt.Sprintf("☆ 备份成功 [%s]", time.Now().Format(time.DateTime))) - color.Greenln(s.hr) + fmt.Println(s.hr) + fmt.Println(fmt.Sprintf("☆ 备份成功 [%s]", time.Now().Format(time.DateTime))) + fmt.Println(s.hr) return nil } func (s *CliService) BackupDatabase(ctx context.Context, cmd *cli.Command) error { - color.Greenln(s.hr) - color.Greenln(fmt.Sprintf("★ 开始备份 [%s]", time.Now().Format(time.DateTime))) - color.Greenln(s.hr) - color.Greenln("|-备份类型:数据库") - color.Greenln(fmt.Sprintf("|-数据库:%s", cmd.String("type"))) - color.Greenln(fmt.Sprintf("|-备份目标:%s", cmd.String("name"))) + fmt.Println(s.hr) + fmt.Println(fmt.Sprintf("★ 开始备份 [%s]", time.Now().Format(time.DateTime))) + fmt.Println(s.hr) + fmt.Println("|-备份类型:数据库") + fmt.Println(fmt.Sprintf("|-数据库:%s", cmd.String("type"))) + fmt.Println(fmt.Sprintf("|-备份目标:%s", cmd.String("name"))) if err := s.backupRepo.Create(biz.BackupType(cmd.String("type")), cmd.String("name"), cmd.String("path")); err != nil { return fmt.Errorf("|-备份失败:%v", err) } - color.Greenln(s.hr) - color.Greenln(fmt.Sprintf("☆ 备份成功 [%s]", time.Now().Format(time.DateTime))) - color.Greenln(s.hr) + fmt.Println(s.hr) + fmt.Println(fmt.Sprintf("☆ 备份成功 [%s]", time.Now().Format(time.DateTime))) + fmt.Println(s.hr) return nil } func (s *CliService) BackupPanel(ctx context.Context, cmd *cli.Command) error { - color.Greenln(s.hr) - color.Greenln(fmt.Sprintf("★ 开始备份 [%s]", time.Now().Format(time.DateTime))) - color.Greenln(s.hr) - color.Greenln("|-备份类型:面板") + fmt.Println(s.hr) + fmt.Println(fmt.Sprintf("★ 开始备份 [%s]", time.Now().Format(time.DateTime))) + fmt.Println(s.hr) + fmt.Println("|-备份类型:面板") if err := s.backupRepo.Create(biz.BackupTypePanel, "", cmd.String("path")); err != nil { return fmt.Errorf("|-备份失败:%v", err) } - color.Greenln(s.hr) - color.Greenln(fmt.Sprintf("☆ 备份成功 [%s]", time.Now().Format(time.DateTime))) - color.Greenln(s.hr) + fmt.Println(s.hr) + fmt.Println(fmt.Sprintf("☆ 备份成功 [%s]", time.Now().Format(time.DateTime))) + fmt.Println(s.hr) return nil } @@ -485,18 +484,18 @@ func (s *CliService) BackupClear(ctx context.Context, cmd *cli.Command) error { path = cmd.String("path") } - color.Greenln(s.hr) - color.Greenln(fmt.Sprintf("★ 开始清理 [%s]", time.Now().Format(time.DateTime))) - color.Greenln(s.hr) - color.Greenln(fmt.Sprintf("|-清理类型:%s", cmd.String("type"))) - color.Greenln(fmt.Sprintf("|-清理目标:%s", cmd.String("file"))) - color.Greenln(fmt.Sprintf("|-保留份数:%d", cmd.Int("save"))) + fmt.Println(s.hr) + fmt.Println(fmt.Sprintf("★ 开始清理 [%s]", time.Now().Format(time.DateTime))) + fmt.Println(s.hr) + fmt.Println(fmt.Sprintf("|-清理类型:%s", cmd.String("type"))) + fmt.Println(fmt.Sprintf("|-清理目标:%s", cmd.String("file"))) + fmt.Println(fmt.Sprintf("|-保留份数:%d", cmd.Int("save"))) if err = s.backupRepo.ClearExpired(path, cmd.String("file"), int(cmd.Int("save"))); err != nil { return fmt.Errorf("|-清理失败:%v", err) } - color.Greenln(s.hr) - color.Greenln(fmt.Sprintf("☆ 清理成功 [%s]", time.Now().Format(time.DateTime))) - color.Greenln(s.hr) + fmt.Println(s.hr) + fmt.Println(fmt.Sprintf("☆ 清理成功 [%s]", time.Now().Format(time.DateTime))) + fmt.Println(s.hr) return nil } @@ -510,17 +509,17 @@ func (s *CliService) CutoffWebsite(ctx context.Context, cmd *cli.Command) error path = cmd.String("path") } - color.Greenln(s.hr) - color.Greenln(fmt.Sprintf("★ 开始切割日志 [%s]", time.Now().Format(time.DateTime))) - color.Greenln(s.hr) - color.Greenln("|-切割类型:网站") - color.Greenln(fmt.Sprintf("|-切割目标:%s", website.Name)) + fmt.Println(s.hr) + fmt.Println(fmt.Sprintf("★ 开始切割日志 [%s]", time.Now().Format(time.DateTime))) + fmt.Println(s.hr) + fmt.Println("|-切割类型:网站") + fmt.Println(fmt.Sprintf("|-切割目标:%s", website.Name)) if err = s.backupRepo.CutoffLog(path, filepath.Join(app.Root, "wwwlogs", website.Name+".log")); err != nil { return err } - color.Greenln(s.hr) - color.Greenln(fmt.Sprintf("☆ 切割成功 [%s]", time.Now().Format(time.DateTime))) - color.Greenln(s.hr) + fmt.Println(s.hr) + fmt.Println(fmt.Sprintf("☆ 切割成功 [%s]", time.Now().Format(time.DateTime))) + fmt.Println(s.hr) return nil } @@ -533,18 +532,18 @@ func (s *CliService) CutoffClear(ctx context.Context, cmd *cli.Command) error { path = cmd.String("path") } - color.Greenln(s.hr) - color.Greenln(fmt.Sprintf("★ 开始清理切割日志 [%s]", time.Now().Format(time.DateTime))) - color.Greenln(s.hr) - color.Greenln(fmt.Sprintf("|-清理类型:%s", cmd.String("type"))) - color.Greenln(fmt.Sprintf("|-清理目标:%s", cmd.String("file"))) - color.Greenln(fmt.Sprintf("|-保留份数:%d", cmd.Int("save"))) + fmt.Println(s.hr) + fmt.Println(fmt.Sprintf("★ 开始清理切割日志 [%s]", time.Now().Format(time.DateTime))) + fmt.Println(s.hr) + fmt.Println(fmt.Sprintf("|-清理类型:%s", cmd.String("type"))) + fmt.Println(fmt.Sprintf("|-清理目标:%s", cmd.String("file"))) + fmt.Println(fmt.Sprintf("|-保留份数:%d", cmd.Int("save"))) if err := s.backupRepo.ClearExpired(path, cmd.String("file"), int(cmd.Int("save"))); err != nil { return err } - color.Greenln(s.hr) - color.Greenln(fmt.Sprintf("☆ 清理成功 [%s]", time.Now().Format(time.DateTime))) - color.Greenln(s.hr) + fmt.Println(s.hr) + fmt.Println(fmt.Sprintf("☆ 清理成功 [%s]", time.Now().Format(time.DateTime))) + fmt.Println(s.hr) return nil } @@ -559,7 +558,7 @@ func (s *CliService) AppInstall(ctx context.Context, cmd *cli.Command) error { return fmt.Errorf("应用安装失败:%v", err) } - color.Greenln(fmt.Sprintf("应用 %s 安装完成", slug)) + fmt.Println(fmt.Sprintf("应用 %s 安装完成", slug)) return nil } @@ -574,7 +573,7 @@ func (s *CliService) AppUnInstall(ctx context.Context, cmd *cli.Command) error { return fmt.Errorf("应用卸载失败:%v", err) } - color.Greenln(fmt.Sprintf("应用 %s 卸载完成", slug)) + fmt.Println(fmt.Sprintf("应用 %s 卸载完成", slug)) return nil } @@ -589,7 +588,7 @@ func (s *CliService) AppUpdate(ctx context.Context, cmd *cli.Command) error { return fmt.Errorf("应用更新失败:%v", err) } - color.Greenln(fmt.Sprintf("应用 %s 更新完成", slug)) + fmt.Println(fmt.Sprintf("应用 %s 更新完成", slug)) return nil } @@ -641,7 +640,7 @@ func (s *CliService) SyncTime(ctx context.Context, cmd *cli.Command) error { return err } - color.Greenln("时间同步成功") + fmt.Println("时间同步成功") return nil } @@ -653,7 +652,7 @@ func (s *CliService) ClearTask(ctx context.Context, cmd *cli.Command) error { return fmt.Errorf("任务清理失败:%v", err) } - color.Greenln("任务清理成功") + fmt.Println("任务清理成功") return nil }