Skip to content

Commit

Permalink
Add magefile
Browse files Browse the repository at this point in the history
  • Loading branch information
Sean-Der committed Nov 16, 2023
1 parent 5272ab7 commit fa7db89
Showing 1 changed file with 117 additions and 0 deletions.
117 changes: 117 additions & 0 deletions magefile.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
// Copyright 2023 LiveKit, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

//go:build mage
// +build mage

package main

import (
"context"
"fmt"
"go/build"
"os"
"os/exec"
"strings"

"github.com/livekit/mageutil"
)

var Default = Build

const (
imageName = "livekit/sip"
goVersion = "1.21.4"
)

var packages = []string{"pkg-config", "opus", "opusfile"}

type packageInfo struct {
Dir string
}

func Bootstrap() error {
brewPrefix, err := getBrewPrefix()
if err != nil {
return err
}

for _, plugin := range packages {
if _, err := os.Stat(fmt.Sprintf("%s%s", brewPrefix, plugin)); err != nil {
if err = run(fmt.Sprintf("brew install %s", plugin)); err != nil {
return err
}
}
}

return nil
}

func Build() error {
gopath := os.Getenv("GOPATH")
if gopath == "" {
gopath = build.Default.GOPATH
}

return run(fmt.Sprintf("go build -a -o %s/bin/sip ./cmd/server", gopath))
}

func Test() error {
return run("go test -v ./pkg/...")
}

func BuildDocker() error {
return mageutil.Run(context.Background(),
fmt.Sprintf("docker pull golang:%s", goVersion),
fmt.Sprintf("docker build --no-cache -t %s:latest -f build/sip/Dockerfile --build-arg GOVERSION=%s .", imageName, goVersion),
)
}

func BuildDockerLinux() error {
return mageutil.Run(context.Background(),
fmt.Sprintf("docker pull golang:%s", goVersion),
fmt.Sprintf("docker build --no-cache --platform linux/amd64 -t %s:latest -f build/sip/Dockerfile --build-arg GOVERSION=%s .", imageName, goVersion),
)
}

func SipClient() error {
return run("go build -C ./test/sip-client/ ./...")
}

// helpers

func getBrewPrefix() (string, error) {
out, err := exec.Command("brew", "--prefix").Output()
if err != nil {
return "", err
}
return fmt.Sprintf("%s/Cellar/", strings.TrimSpace(string(out))), nil
}

func run(commands ...string) error {
for _, command := range commands {
args := strings.Split(command, " ")
if err := runArgs(args...); err != nil {
return err
}
}
return nil
}

func runArgs(args ...string) error {
cmd := exec.Command(args[0], args[1:]...)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
return cmd.Run()
}

0 comments on commit fa7db89

Please sign in to comment.