package cmdline

import (
	"fmt"

	"gitlink.org.cn/cloudream/storage/client/internal/http"
)

// ServeHTTP 启动HTTP服务。
// ctx: 命令行上下文，包含服务配置等信息。
// args: 命令行参数，第一个参数可选地指定HTTP服务器监听地址。
// 返回值: 如果启动过程中遇到错误，返回错误信息；否则返回nil。
func ServeHTTP(ctx CommandContext, args []string) error {
	// 默认监听地址为":7890"，如果提供了命令行参数，则使用参数指定的地址。
	listenAddr := ":7890"
	if len(args) > 0 {
		listenAddr = args[0]
	}

	// 创建一个新的HTTP服务器实例。
	httpSvr, err := http.NewServer(listenAddr, ctx.Cmdline.Svc)
	if err != nil {
		return fmt.Errorf("new http server: %w", err)
	}

	// 启动HTTP服务。
	err = httpSvr.Serve()
	if err != nil {
		return fmt.Errorf("serving http: %w", err)
	}

	return nil
}

// 初始化函数，将ServeHTTP命令注册到命令列表中。
func init() {
	commands.MustAdd(ServeHTTP, "serve", "http")
}
