# hsv2/forge

一个用于构建与安装 HybridScope v2 相关依赖与资源的命令行工具。基于 Go 与 Cobra 构建，提供统一的 `make` 流程与简单的 `install` 占位命令。

## 环境要求
- Go `1.25.2`
- Linux 环境，能够访问外部下载源（如 `artifactory.yizhisec.com`、`docker.io` 等）

## 快速开始
```bash
# 构建
go build ./...

# 查看帮助
./forge --help

# 进入 make 子命令的帮助
./forge make --help

# 示例：准备 Redis 资源
./forge make redis --replica-count 2 --password ******
```

默认构建目录为 `/root/hsv2-installation`，可通过 `--dir` 修改。

## 常用命令
- `forge`：根命令，支持全局调试开关 `--debug`（参考 `internal/cmd/root.go:12`）。
- `forge make`：构建依赖与资源（参考 `internal/cmd/make.go:13`）。
  - 全局选项：
    - `--dir`：输出基础目录（默认 `/root/hsv2-installation`，参考 `internal/cmd/make.go:40`）
    - `--disable-dependency-check`：禁用依赖检查（参考 `internal/cmd/make.go:38`）
  - 子命令（节选）：
    - `images`：准备镜像相关资源
    - `binaries`：下载并解压 K8s 相关二进制
    - `debs`：下载并解压 Debian 包（Docker）
    - `flannel`：生成 Flannel YAML（参考 `internal/cmd/make.flannel.go`）
    - `longhorn`：下载 Longhorn chart 并生成 `values.yaml`
    - `mysql`：下载 MySQL operator 并生成 `cluster.yaml`，支持 `--replica-count` 与 `--storage-size`
    - `redis`：下载 Redis chart 并生成 `values.yaml`，支持 `--replica-count` 与 `--password`
    - `emqx`：生成 EMQX 配置
    - `es`：准备 Elasticsearch/Kibana 相关资源
    - `yosguard`：生成 YOSGuard 配置与服务文件
    - `less-dns`：生成 DNS 相关资源
    - `hs-net`：占位命令，当前仅创建目录（参考 `internal/cmd/make.hsnet.go:23`）
- `forge install`：安装占位命令（参考 `internal/cmd/install.go`）。

## 目录结构（简要）
- `internal/cmd`：命令行入口与各 `make` 子命令实现
- `internal/controller/maker`：构建流程控制
- `pkg/resource`：内置 YAML/SQL/bash 等资源模板
- `pkg/downloader`、`pkg/archiver`：下载与解压工具

## 开发与维护
- 构建：`go build ./...`
- 测试：`go test ./...`
- 代码检查：`go vet ./...`
- 格式化：`go fmt ./...`
- 依赖清理：`go mod tidy`

## 注意事项
- 部分子命令会从公司内网仓库下载资源，请确保网络可达。
- 如果仅试运行流程，可使用 `--disable-dependency-check` 快速跳过依赖检查。
