Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var OCICmd = &cobra.Command{ Use: "oci", Short: "Builds an OCI image", Long: ` bsf oci <environment name> bsf oci <environment name> --platform <platform> bsf oci <environment name> --platform <platform> --output <output directory> `, Run: func(cmd *cobra.Command, args []string) { if len(args) < 1 { fmt.Println(styles.HintStyle.Render("hint:", "run `bsf oci <environment name>` to build an OCI image")) os.Exit(1) } env, p, err := ProcessPlatformAndConfig(platform, args[0]) if err != nil { fmt.Println(styles.ErrorStyle.Render("error: ", err.Error())) os.Exit(1) } platform = p sc, fh, err := binit.GetBSFInitializers() if err != nil { fmt.Println(styles.ErrorStyle.Render("error: ", err.Error())) os.Exit(1) } err = generate.Generate(fh, sc) if err != nil { fmt.Println(styles.ErrorStyle.Render("error: ", err.Error())) os.Exit(1) } if output == "" { output = "bsf-result" } err = bgit.Add("bsf/") if err != nil { fmt.Println(styles.ErrorStyle.Render("error: ", err.Error())) os.Exit(1) } err = bgit.Ignore(output + "/") if err != nil { fmt.Println(styles.ErrorStyle.Render("error: ", err.Error())) os.Exit(1) } symlink := "/result" err = nixcmd.Build(output+symlink, genOCIAttrName(env.Environment, platform)) if err != nil { fmt.Println(styles.ErrorStyle.Render("error: ", err.Error())) os.Exit(1) } fmt.Println(styles.HighlightStyle.Render("Generating artifacts...")) lockData, err := os.ReadFile("bsf.lock") if err != nil { fmt.Println(styles.ErrorStyle.Render("error:", err.Error())) os.Exit(1) } lockFile := &hcl2nix.LockFile{} err = json.Unmarshal(lockData, lockFile) if err != nil { fmt.Println(styles.ErrorStyle.Render("error:", err.Error())) os.Exit(1) } appDetails, graph, err := nixcmd.GetRuntimeClosureGraph(lockFile.App.Name, output, symlink) if err != nil { fmt.Println(styles.ErrorStyle.Render("error:", err.Error())) os.Exit(1) } appDetails.Name = env.Name tos, tarch := findPlatform(platform) err = build.GenerateArtifcats(output, symlink, lockFile, appDetails, graph, tos, tarch) if err != nil { fmt.Println(styles.ErrorStyle.Render("error:", err.Error())) os.Exit(1) } fmt.Println(styles.SucessStyle.Render(fmt.Sprintf("Build completed successfully, please check the %s directory", output))) if loadDocker { fmt.Println(styles.HighlightStyle.Render("Loading image to docker daemon...")) expectedInstall := true currentContext, err := builddocker.GetCurrentContext() if err != nil { expectedInstall = false } contextEP, err := builddocker.ReadContextEndpoints() if err != nil { expectedInstall = false } if currentContext == "" { currentContext = "default" } if contextEP == nil { contextEP = make(map[string]string) } if _, ok := contextEP[currentContext]; !ok { contextEP[currentContext] = "unix:///var/run/docker.sock" } err = oci.LoadDocker(contextEP[currentContext], output+"/result", env.Name) if err != nil { fmt.Println(styles.ErrorStyle.Render("error:", err.Error())) if !expectedInstall { fmt.Println(styles.ErrorStyle.Render("error:", "Is Docker installed?")) } os.Exit(1) } fmt.Println(styles.SucessStyle.Render(fmt.Sprintf("Image %s loaded to docker daemon", env.Name))) } if push { fmt.Println(styles.HighlightStyle.Render("Pushing image to registry...")) err = oci.Push(output+"/result", env.Name) if err != nil { fmt.Println(styles.ErrorStyle.Render("error:", err.Error())) os.Exit(1) } fmt.Println(styles.SucessStyle.Render(fmt.Sprintf("Image %s pushed to registry", env.Name))) } }, }
OCICmd represents the export command
Functions ¶
func ProcessPlatformAndConfig ¶
ProcessPlatformAndConfig processes the platform and config file
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.