From 06d0f1cec5b6968d0ef21d8e2140b6386625aaff Mon Sep 17 00:00:00 2001 From: xuthus5 Date: Wed, 20 Mar 2024 23:35:52 +0800 Subject: [PATCH] feat: new function for create file --- gobuf.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/gobuf.go b/gobuf.go index cc909ef..db2d5b7 100644 --- a/gobuf.go +++ b/gobuf.go @@ -5,6 +5,7 @@ import ( "fmt" "io" "os" + "path/filepath" "github.com/emicklei/proto" "gitter.top/sync/proto-contrib/pkg/protofmt" @@ -35,6 +36,31 @@ func NewParser(file string) (*Parser, error) { }, nil } +func (parser *Parser) CreateFile(filename string) error { + // 检查文件是否存在 + if _, err := os.Stat(filename); err == nil { + return nil + } else if !os.IsNotExist(err) { + return err + } + + // 确保文件所在的目录存在 + baseDir := filepath.Dir(filename) + if baseDir != "." && baseDir != ".." { + if err := os.MkdirAll(baseDir, os.ModePerm); err != nil { + return err + } + } + + // 写入基础的protobuf内容,此步骤会创建文件 + baseContent := []byte("syntax = \"proto3\";\npackage proto.v1;\noption go_package = \"projects/gen;genv1\";\n") + if err := os.WriteFile(filename, baseContent, os.ModePerm); err != nil { + return err + } + + return nil +} + func (parser *Parser) ExistService(serviceName string) bool { var result bool proto.Walk(parser.proto, proto.WithService(func(service *proto.Service) {