//go:build mage package main import ( "fmt" "os" "github.com/magefile/mage/sh" ) const ( configFile string = "./config/services.json" rootBuildDir string = "./build" templateExtension string = ".gotmpl" rootTemplatesDir string = "./templates" ) // Clean cleans the workspace. func Clean() error { buildDir := "./build" objects, err := os.ReadDir(buildDir) if err != nil { return err } for i := range objects { name := objects[i].Name() if name != ".gitkeep" { if err := sh.Rm(buildDir + "/" + name); err != nil { return err } } } return nil } // Render renders the template files. func Render(name string) error { cfg, err := newConfig(configFile) if err != nil { return fmt.Errorf("unable to load the configuration; %v", err) } if err := render(cfg, name); err != nil { return fmt.Errorf("an error occurred whilst rendering the templates; %v", err) } return nil } // Deploy deploys the services to the Flow Platform. func Deploy(name string) error { cfg, err := newConfig(configFile) if err != nil { return fmt.Errorf("unable to load the configuration; %v", err) } os.Setenv("DOCKER_HOST", cfg.DockerHost) return sh.Run( "docker", "compose", "--project-directory", rootBuildDir+"/compose", "up", "-d", "--build", name, ) } // DownloadForgejo downloads the Forgejo binary from Codeberg. func DownloadForgejo() error { cfg, err := newConfig(configFile) if err != nil { return fmt.Errorf("unable to load the configuration; %v", err) } version := cfg.Forgejo.Version if err := downloadForgejo(version); err != nil { return fmt.Errorf("unable to download Forgejo %s; %w", version, err) } return nil }