chore: update command help desc
This commit is contained in:
@@ -1,7 +1,8 @@
|
|||||||
package builtininstall
|
package builtininstall
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
@@ -13,6 +14,19 @@ import (
|
|||||||
|
|
||||||
// Run 执行内建包安装逻辑
|
// Run 执行内建包安装逻辑
|
||||||
func Run(args []string) {
|
func Run(args []string) {
|
||||||
|
fs := flag.NewFlagSet("builtininstall", flag.ExitOnError)
|
||||||
|
fs.Usage = func() {
|
||||||
|
fmt.Fprintf(os.Stderr, "\n白虎面板内建依赖安装工具\n\n")
|
||||||
|
fmt.Fprintf(os.Stderr, "用法:\n")
|
||||||
|
fmt.Fprintf(os.Stderr, " baihu builtininstall\n\n")
|
||||||
|
fmt.Fprintf(os.Stderr, "说明:\n")
|
||||||
|
fmt.Fprintf(os.Stderr, " 此命令将为系统中已安装的 Node.js 和 Python 环境安装白虎面板所需的内建依赖包。\n\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := fs.Parse(args); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
logger.Infof("[Builtin] 开始为 mise 环境安装内建包...")
|
logger.Infof("[Builtin] 开始为 mise 环境安装内建包...")
|
||||||
|
|
||||||
// 1. 确定内建包路径
|
// 1. 确定内建包路径
|
||||||
@@ -30,15 +44,15 @@ func Run(args []string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 2. 安装 Node.js 包
|
// 2. 安装 Node.js 包
|
||||||
installForLanguage("node", filepath.Join(builtinPath, "nodejs"), "npm install")
|
installForLanguage("node", filepath.Join(builtinPath, "nodejs"))
|
||||||
|
|
||||||
// 3. 安装 Python 包
|
// 3. 安装 Python 包
|
||||||
installForLanguage("python", filepath.Join(builtinPath, "python"), "pip install -e")
|
installForLanguage("python", filepath.Join(builtinPath, "python"))
|
||||||
|
|
||||||
logger.Infof("[Builtin] 内建包安装流程完成")
|
logger.Infof("[Builtin] 内建包安装流程完成")
|
||||||
}
|
}
|
||||||
|
|
||||||
func installForLanguage(lang, pkgPath, installBaseCmd string) {
|
func installForLanguage(lang, pkgPath string) {
|
||||||
if _, err := os.Stat(pkgPath); os.IsNotExist(err) {
|
if _, err := os.Stat(pkgPath); os.IsNotExist(err) {
|
||||||
logger.Warnf("[Builtin] %s 的内建包目录不存在: %s", lang, pkgPath)
|
logger.Warnf("[Builtin] %s 的内建包目录不存在: %s", lang, pkgPath)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ type Config struct {
|
|||||||
Dependence string // Script dependence file keywords, vertical line separated
|
Dependence string // Script dependence file keywords, vertical line separated
|
||||||
Extensions string // Script file extensions, vertical line separated
|
Extensions string // Script file extensions, vertical line separated
|
||||||
TaskID string
|
TaskID string
|
||||||
|
RepoTaskID string
|
||||||
TaskLanguages string
|
TaskLanguages string
|
||||||
TaskTimeout int
|
TaskTimeout int
|
||||||
CommentToTask string
|
CommentToTask string
|
||||||
@@ -62,13 +63,31 @@ func Run(args []string) {
|
|||||||
fs.StringVar(&cfg.Extensions, "extensions", "", "Script extensions (| separated)")
|
fs.StringVar(&cfg.Extensions, "extensions", "", "Script extensions (| separated)")
|
||||||
fs.StringVar(&cfg.TaskID, "task-id", "", "Task ID for metadata")
|
fs.StringVar(&cfg.TaskID, "task-id", "", "Task ID for metadata")
|
||||||
fs.StringVar(&cfg.TaskLanguages, "task-langs", "", "Configured languages (JSON)")
|
fs.StringVar(&cfg.TaskLanguages, "task-langs", "", "Configured languages (JSON)")
|
||||||
fs.StringVar(&cfg.TaskID, "repo-task-id", "", "Original Task ID")
|
fs.StringVar(&cfg.RepoTaskID, "repo-task-id", "", "Original Task ID")
|
||||||
fs.IntVar(&cfg.TaskTimeout, "task-timeout", 30, "Task timeout (minutes)")
|
fs.IntVar(&cfg.TaskTimeout, "task-timeout", 30, "Task timeout (minutes)")
|
||||||
fs.StringVar(&cfg.CommentToTask, "commenttotask", "false", "Compatible with QL format script comment parsing (true/false)")
|
fs.StringVar(&cfg.CommentToTask, "commenttotask", "false", "Compatible with QL format script comment parsing (true/false)")
|
||||||
fs.StringVar(&cfg.PreCommand, "pre-command", "", "Default pre-command for discovered tasks")
|
fs.StringVar(&cfg.PreCommand, "pre-command", "", "Default pre-command for discovered tasks")
|
||||||
fs.StringVar(&cfg.PostCommand, "post-command", "", "Default post-command for discovered tasks")
|
fs.StringVar(&cfg.PostCommand, "post-command", "", "Default post-command for discovered tasks")
|
||||||
|
|
||||||
fs.Parse(args)
|
fs.Usage = func() {
|
||||||
|
fmt.Fprintf(os.Stderr, "\n白虎面板仓库同步工具 (Reposync)\n\n")
|
||||||
|
fmt.Fprintf(os.Stderr, "用法:\n")
|
||||||
|
fmt.Fprintf(os.Stderr, " baihu reposync [参数]\n\n")
|
||||||
|
fmt.Fprintf(os.Stderr, "参数详情:\n")
|
||||||
|
fs.PrintDefaults()
|
||||||
|
fmt.Fprintf(os.Stderr, "\n示例:\n")
|
||||||
|
fmt.Fprintf(os.Stderr, " baihu reposync --source-url https://github.com/xxx/repo.git --target-path $SCRIPTS_DIR$/repo1\n\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := fs.Parse(args); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if cfg.SourceURL == "" {
|
||||||
|
fmt.Fprintf(os.Stderr, "错误: 必须提供 --source-url 参数\n")
|
||||||
|
fs.Usage()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// 处理 $SCRIPTS_DIR$ 代号替换
|
// 处理 $SCRIPTS_DIR$ 代号替换
|
||||||
if strings.Contains(cfg.TargetPath, constant.ScriptsDirPlaceholder) {
|
if strings.Contains(cfg.TargetPath, constant.ScriptsDirPlaceholder) {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package resetpwd
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -12,6 +13,19 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func Run(args []string) {
|
func Run(args []string) {
|
||||||
|
fs := flag.NewFlagSet("resetpwd", flag.ExitOnError)
|
||||||
|
fs.Usage = func() {
|
||||||
|
fmt.Fprintf(os.Stderr, "\n白虎面板用户密码重置工具\n\n")
|
||||||
|
fmt.Fprintf(os.Stderr, "用法:\n")
|
||||||
|
fmt.Fprintf(os.Stderr, " baihu resetpwd [用户名]\n\n")
|
||||||
|
fmt.Fprintf(os.Stderr, "示例:\n")
|
||||||
|
fmt.Fprintf(os.Stderr, " baihu resetpwd admin\n\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := fs.Parse(args); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// 基础环境初始化
|
// 基础环境初始化
|
||||||
bootstrap.InitBasic()
|
bootstrap.InitBasic()
|
||||||
settingsService := services.NewSettingsService()
|
settingsService := services.NewSettingsService()
|
||||||
@@ -22,9 +36,9 @@ func Run(args []string) {
|
|||||||
userService := services.NewUserService()
|
userService := services.NewUserService()
|
||||||
|
|
||||||
var username string
|
var username string
|
||||||
|
parsedArgs := fs.Args()
|
||||||
if len(args) >= 1 {
|
if len(parsedArgs) >= 1 {
|
||||||
username = args[0]
|
username = parsedArgs[0]
|
||||||
} else {
|
} else {
|
||||||
username = "admin"
|
username = "admin"
|
||||||
}
|
}
|
||||||
|
|||||||
+20
-4
@@ -1,6 +1,7 @@
|
|||||||
package restore
|
package restore
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
@@ -10,12 +11,27 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func Run(args []string) {
|
func Run(args []string) {
|
||||||
if len(args) < 1 {
|
fs := flag.NewFlagSet("restore", flag.ExitOnError)
|
||||||
fmt.Println("用法: baihu restore <backup_file.zip>")
|
fs.Usage = func() {
|
||||||
os.Exit(1)
|
fmt.Fprintf(os.Stderr, "\n白虎面板系统数据恢复工具\n\n")
|
||||||
|
fmt.Fprintf(os.Stderr, "用法:\n")
|
||||||
|
fmt.Fprintf(os.Stderr, " baihu restore <备份文件.zip>\n\n")
|
||||||
|
fmt.Fprintf(os.Stderr, "示例:\n")
|
||||||
|
fmt.Fprintf(os.Stderr, " baihu restore backup_20231027.zip\n\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
backupFile := args[0]
|
if err := fs.Parse(args); err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
parsedArgs := fs.Args()
|
||||||
|
if len(parsedArgs) < 1 {
|
||||||
|
fmt.Fprintf(os.Stderr, "错误: 必须提供备份文件路径\n")
|
||||||
|
fs.Usage()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
backupFile := parsedArgs[0]
|
||||||
absPath, err := filepath.Abs(backupFile)
|
absPath, err := filepath.Abs(backupFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("文件路径解析失败: %v\n", err)
|
fmt.Printf("文件路径解析失败: %v\n", err)
|
||||||
|
|||||||
@@ -13,29 +13,29 @@ import (
|
|||||||
// @version 1.0
|
// @version 1.0
|
||||||
// @description Baihu Panel OpenAPI Server documentation.
|
// @description Baihu Panel OpenAPI Server documentation.
|
||||||
// @termsOfService http://swagger.io/terms/
|
// @termsOfService http://swagger.io/terms/
|
||||||
|
|
||||||
// @contact.name API Support
|
// @contact.name API Support
|
||||||
// @contact.url http://www.swagger.io/support
|
// @contact.url http://www.swagger.io/support
|
||||||
// @contact.email support@swagger.io
|
// @contact.email support@swagger.io
|
||||||
|
|
||||||
// @license.name Apache 2.0
|
// @license.name Apache 2.0
|
||||||
// @license.url http://www.apache.org/licenses/LICENSE-2.0.html
|
// @license.url http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
|
||||||
// @host localhost:8052
|
// @host localhost:8052
|
||||||
// @BasePath /open2api/v1
|
// @BasePath /open2api/v1
|
||||||
// @query.collection.format multi
|
// @query.collection.format multi
|
||||||
|
|
||||||
// @securityDefinitions.apikey BearerAuth
|
// @securityDefinitions.apikey BearerAuth
|
||||||
// @in header
|
// @in header
|
||||||
// @name Authorization
|
// @name Authorization
|
||||||
// @description Type "Bearer" followed by a space and the API token.
|
// @description Type "Bearer" followed by a space and the API token.
|
||||||
|
|
||||||
func printHelp() {
|
func printHelp() {
|
||||||
fmt.Println("Usage: baihu <command> [arguments]")
|
fmt.Println("\n白虎面板 (Baihu Panel) - 现代化的服务器管理面板")
|
||||||
fmt.Println("Available commands:")
|
fmt.Println("用法:")
|
||||||
|
fmt.Println(" baihu <命令> [参数]")
|
||||||
|
fmt.Println("可用命令:")
|
||||||
for _, info := range constant.Commands {
|
for _, info := range constant.Commands {
|
||||||
fmt.Printf(" %-12s %s\n", info.Name, info.Description)
|
fmt.Printf(" %-15s %s\n", info.Name, info.Description)
|
||||||
}
|
}
|
||||||
|
fmt.Println("\n使用 'baihu <命令> --help' 查看具体命令的参数说明。")
|
||||||
|
fmt.Println()
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|||||||
Reference in New Issue
Block a user