package maker import ( "context" "fmt" "os" "path/filepath" "gitea.loveuer.com/yizhisec/pkg3/logger" "yizhisec.com/hsv2/forge/pkg/model" "yizhisec.com/hsv2/forge/pkg/resource" ) func (m *maker) AppFront(ctx context.Context, vendor string, replica int) error { var ( err error location = filepath.Join(m.workdir, "app", "front") bs []byte _vendor = model.GetVendor(vendor) ) logger.Info("☑️ maker.Front: 开始构建 front app..., workdir = %s", location) if _vendor == nil { logger.Debug("❌ maker.Front: vendor not supported, vendor = %s", vendor) return fmt.Errorf("vendor not supported: %s", vendor) } if err = os.MkdirAll(location, 0755); err != nil { logger.Debug("❌ maker.Front: 创建目录失败: path = %s, err = %v", location, err) return err } path := filepath.Join(location, "front.user.yaml") logger.Debug("☑️ maker.Front: writing front.user.yaml, path = %s", path) bs = []byte(fmt.Sprintf(resource.YAMLAppFrontUser, replica)) if err = os.WriteFile(path, bs, 0644); err != nil { logger.Debug("❌ maker.Front: 写入 front.user.yaml 失败: path = %s, err = %v", path, err) return err } logger.Debug("✅ maker.Front: write front.user.yaml success, path = %s", path) path = filepath.Join(location, "front.admin.yaml") logger.Debug("☑️ maker.Front: writing front.admin.yaml, path = %s", path) bs = []byte(fmt.Sprintf(resource.YAMLAppFrontAdmin, replica)) if err = os.WriteFile(path, bs, 0644); err != nil { logger.Debug("❌ maker.Front: 写入 front.admin.yaml 失败: path = %s, err = %v", path, err) return err } logger.Debug("✅ maker.Front: write front.admin.yaml success, path = %s", path) // todo, pull front images // 1. make image dir imgDir := filepath.Join(m.workdir, "dependency", "image") if err = os.MkdirAll(imgDir, 0755); err != nil { logger.Debug("❌ maker.Front: 创建目录失败: path = %s, err = %v", imgDir, err) return err } logger.Debug("☑️ maker.Front: pulling front images, vendor = %s", vendor) if err = m.Image(ctx, _vendor.AppFrontUserImageName, WithImageSave(filepath.Join(imgDir, "app.front.user.tar")), WithImageForcePull(true)); err != nil { logger.Debug("❌ maker.Front: 拉取 front 用户镜像失败: %s, err = %v", _vendor.AppFrontUserImageName, err) return err } if err = m.Image(ctx, _vendor.AppFrontAdminImageName, WithImageSave(filepath.Join(imgDir, "app.front.admin.tar")), WithImageForcePull(true)); err != nil { logger.Debug("❌ maker.Front: 拉取 front 管理镜像失败: %s, err = %v", _vendor.AppFrontAdminImageName, err) return err } logger.Info("✅ maker.Front: 构建 front app 完成") return nil }