Files
protocol/magefile.go
David Colburn f03f3734be Ingress updates (#143)
* ingress updates

* generated protobuf

* undo refactor

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2022-07-06 11:10:06 -07:00

116 lines
2.3 KiB
Go

//go:build mage
// +build mage
package main
import (
"fmt"
"go/build"
"os"
"os/exec"
"path/filepath"
)
var Default = Proto
// regenerate protobuf
func Proto() error {
twirpProtoFiles := []string{
"livekit_egress.proto",
"livekit_ingress.proto",
"livekit_room.proto",
}
grpcProtoFiles := []string{
"livekit_analytics.proto",
"livekit_internal.proto",
"livekit_models.proto",
"livekit_rpc_internal.proto",
"livekit_rtc.proto",
"livekit_webhook.proto",
}
fmt.Println("generating protobuf")
target := "livekit"
if err := os.MkdirAll(target, 0755); err != nil {
return err
}
protoc, err := getToolPath("protoc")
if err != nil {
return err
}
protocGoPath, err := getToolPath("protoc-gen-go")
if err != nil {
return err
}
twirpPath, err := getToolPath("protoc-gen-twirp")
if err != nil {
return err
}
protocGrpcGoPath, err := getToolPath("protoc-gen-go-grpc")
if err != nil {
return err
}
fmt.Println("generating twirp protobuf")
args := append([]string{
"--go_out", target,
"--twirp_out", target,
"--go_opt=paths=source_relative",
"--twirp_opt=paths=source_relative",
"--plugin=go=" + protocGoPath,
"--plugin=twirp=" + twirpPath,
"-I=.",
}, twirpProtoFiles...)
cmd := exec.Command(protoc, args...)
connectStd(cmd)
if err := cmd.Run(); err != nil {
return err
}
fmt.Println("generating grpc protobuf")
args = append([]string{
"--go_out", target,
"--go-grpc_out", target,
"--go_opt=paths=source_relative",
"--go-grpc_opt=paths=source_relative",
"--plugin=go=" + protocGoPath,
"--plugin=go-grpc=" + protocGrpcGoPath,
"-I=.",
}, grpcProtoFiles...)
cmd = exec.Command(protoc, args...)
connectStd(cmd)
if err := cmd.Run(); err != nil {
return err
}
return nil
}
// run tests
func Test() error {
cmd := exec.Command("go", "test", "./...")
connectStd(cmd)
return cmd.Run()
}
// helpers
func getToolPath(name string) (string, error) {
if p, err := exec.LookPath(name); err == nil {
return p, nil
}
// check under gopath
gopath := os.Getenv("GOPATH")
if gopath == "" {
gopath = build.Default.GOPATH
}
p := filepath.Join(gopath, "bin", name)
if _, err := os.Stat(p); err != nil {
return "", err
}
return p, nil
}
func connectStd(cmd *exec.Cmd) {
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
}