Categorygithub.com/livekit/mageutil
repositorypackage
0.0.0-20230125210925-54e8a70427c1
Repository: https://github.com/livekit/mageutil.git
Documentation: pkg.go.dev

# README

Mageutil

A collection of common helpers meant for use in magefiles.

Examples:

Single command

func Build() error {
    ctx := context.Background()
    return mageutil.RunDir(ctx, "cmd/server", "go build -o ../../bin/livekit-server")
}

Multiple commands

const gstVersion = 1.20.3

func BuildDocker(version string) error {
    return mageutil.Run(context.Background(),
        fmt.Sprintf("docker pull livekit/gstreamer:%s-dev", gstVersion),
        fmt.Sprintf("docker pull livekit/gstreamer:%s-prod", gstVersion),
        fmt.Sprintf("docker build -t livekit/egress:v%s -f build/Dockerfile .", version),
    )
}

Updating repos

func BuildLivekit() error {
    ctx := context.Background()
	
    dir, err := filepath.Abs("..")
    if err != nil {
        return err
    }

    if err = mageutil.CloneRepo("livekit", "livekit", dir); err != nil {
        return err
    }
    
    dir, err = filepath.Abs("../livekit")
    if err != nil {
        return err
    }
	
    return mageutil.RunDir(ctx, dir, "mage build")
}

Tools

func Generate() error {
    ctx := context.Background()
    err := mageutil.InstallTool("github.com/google/wire/cmd/wire", "latest", false)
    if err != nil {
        return err
    }
    return mageutil.Run(ctx, "go generate ./...")
}

Group

func RunLivekitWithEgress() error {
    ctx := context.Background()
    group := mageutil.NewGroup(ctx)
    group.Go(func () error {
        return RunDir(ctx, "../livekit", "bin/livekit-server --dev")
    })
    group.Go(func () error {
        return Run(ctx, "docker run --rm -e EGRESS_CONFIG_FILE=/out/local.yaml -v ~/livekit/egress/test:/out livekit/egress")
    })
    group.Wait()
}