//go:build mage // +build mage package main import ( "context" "runtime" "github.com/magefile/mage/mg" "github.com/magefile/mage/sh" ) // Default target to run when none is specified // If not set, running mage will list available targets var Default = Run // Run the Identity Provider func Idp() error { env := map[string]string{ "SCHEME": "http", "PORT": "8282", "HOST": "idp.example.com:8080", } return sh.RunWithV(env, "ruby", "./bin/idp") } // Run the UI (a.k.a Service Provider) func UI() error { env := map[string]string{ "SCHEME": "http", "PORT": "8283", "HOST": "ui.example.com:8080", "IDP_HOST": "idp.example.com:8080", } return sh.RunWithV(env, "ruby", "./bin/ui") } // Run the API Gateway func Gateway() error { env := map[string]string{ "BIND_ADDR": ":8080", } return sh.RunWithV(env, "go", "run", "./cmd/gtwy/main.go") } // Run the REST API func Api() error { env := map[string]string{ "SCHEME": "http", "PORT": "8284", "HOST": "localhost:8284", } return sh.RunWithV(env, "ruby", "./bin/api") } // Open a web browser to the login page func Browser() error { url := "http://localhost:8080/ui/sessions/new" if runtime.GOOS == "linux" { return sh.RunV("xdg-open", url) } else { return sh.RunV("open", url) } } // Run All the servers func Run(ctx context.Context) { mg.CtxDeps(ctx, Idp, UI, Api, Gateway) }