jl-iot/proto/main.go
walker 120fb4c5fb 数据包移动到dto包下
定时任务接口名称调整
新建Modbus驱采服务接口调整
添加iot驱采服务定义和启动,初步实现
2023-12-20 14:05:07 +08:00

70 lines
1.6 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
import (
"fmt"
"io/fs"
"log"
"os"
"os/exec"
"path/filepath"
"strings"
)
var (
basePath, _ = os.Getwd()
protoFolder = filepath.Join(basePath, "proto", "src")
protocPath = filepath.Join(basePath, "proto", "protoc-23.1", "bin", "win64", "protoc")
)
var goOutDir string = "./"
func main() {
//先安装以下插件
//go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
args := os.Args
if len(args) >= 2 {
switch {
case args[1] == "component": //go run . component 编译组件proto
{
protocPath = filepath.Join(basePath, "protoc-23.1", "bin", "win64", "protoc")
protoFolder = filepath.Join(basePath, "src", args[1])
goOutDir = "../"
}
}
}
//
protoFiles := getProtoFiles()
// 编译proto文件为Go文件
if err := compileProto(protoFiles); err != nil {
log.Fatalf("编译proto文件失败%v", err)
}
}
// 获取指定文件夹下的所有proto文件的绝对路径
func getProtoFiles() []string {
var protoFiles []string
err := filepath.WalkDir(protoFolder, func(path string, d fs.DirEntry, err error) error {
if !d.IsDir() && strings.HasSuffix(path, ".proto") {
protoFiles = append(protoFiles, path)
}
return err
})
if err != nil {
log.Fatal("获取proto文件列表失败:", err)
}
return protoFiles
}
// 编译proto文件为Go文件
func compileProto(protoFiles []string) error {
for _, fileName := range protoFiles {
cmd := exec.Command(protocPath, "-I="+basePath, fmt.Sprintf("--go_out=%s", goOutDir), fileName)
fmt.Println(cmd.String())
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
return err
}
}
return nil
}