mirror of
https://github.com/mudler/luet.git
synced 2025-09-14 14:22:38 +00:00
Parse packages in build cmd
This commit is contained in:
55
cmd/build.go
55
cmd/build.go
@@ -15,23 +15,23 @@
|
|||||||
package cmd
|
package cmd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
|
||||||
"runtime"
|
|
||||||
|
|
||||||
"github.com/mudler/luet/pkg/compiler"
|
"github.com/mudler/luet/pkg/compiler"
|
||||||
"github.com/mudler/luet/pkg/compiler/backend"
|
"github.com/mudler/luet/pkg/compiler/backend"
|
||||||
. "github.com/mudler/luet/pkg/logger"
|
. "github.com/mudler/luet/pkg/logger"
|
||||||
pkg "github.com/mudler/luet/pkg/package"
|
pkg "github.com/mudler/luet/pkg/package"
|
||||||
tree "github.com/mudler/luet/pkg/tree"
|
tree "github.com/mudler/luet/pkg/tree"
|
||||||
|
"os"
|
||||||
|
"regexp"
|
||||||
|
"runtime"
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
)
|
)
|
||||||
|
|
||||||
var buildCmd = &cobra.Command{
|
var buildCmd = &cobra.Command{
|
||||||
Use: "build <cat> <name> <version>",
|
Use: "build <package name> <package name> <package name> ...",
|
||||||
Short: "build a package or a tree",
|
Short: "build a package or a tree",
|
||||||
Long: `build packages or trees from luet tree definitions`,
|
Long: `build packages or trees from luet tree definitions. Packages are in [category]/[name]-[version] form`,
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
|
|
||||||
src := viper.GetString("tree")
|
src := viper.GetString("tree")
|
||||||
@@ -40,14 +40,7 @@ var buildCmd = &cobra.Command{
|
|||||||
backendType := viper.GetString("backend")
|
backendType := viper.GetString("backend")
|
||||||
privileged := viper.GetBool("privileged")
|
privileged := viper.GetBool("privileged")
|
||||||
|
|
||||||
if len(args) != 3 {
|
var compilerSpecs []compiler.CompilationSpec
|
||||||
Fatal("Incorrect number of arguments")
|
|
||||||
}
|
|
||||||
|
|
||||||
category := args[0]
|
|
||||||
name := args[1]
|
|
||||||
version := args[2]
|
|
||||||
|
|
||||||
var compilerBackend compiler.CompilerBackend
|
var compilerBackend compiler.CompilerBackend
|
||||||
|
|
||||||
switch backendType {
|
switch backendType {
|
||||||
@@ -65,18 +58,36 @@ var buildCmd = &cobra.Command{
|
|||||||
Fatal("Error: " + err.Error())
|
Fatal("Error: " + err.Error())
|
||||||
}
|
}
|
||||||
compiler := compiler.NewLuetCompiler(compilerBackend, generalRecipe.Tree())
|
compiler := compiler.NewLuetCompiler(compilerBackend, generalRecipe.Tree())
|
||||||
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: name, Category: category, Version: version})
|
|
||||||
if err != nil {
|
for _, a := range args {
|
||||||
Fatal("Error: " + err.Error())
|
decodepackage, err := regexp.Compile(`^([<>]?\~?=?)((([^\/]+)\/)?(?U)(\S+))(-(\d+(\.\d+)*[a-z]?(_(alpha|beta|pre|rc|p)\d*)*(-r\d+)?))?$`)
|
||||||
|
if err != nil {
|
||||||
|
Fatal("Error: " + err.Error())
|
||||||
|
}
|
||||||
|
packageInfo := decodepackage.FindAllStringSubmatch(a, -1)
|
||||||
|
|
||||||
|
category := packageInfo[0][4]
|
||||||
|
name := packageInfo[0][5]
|
||||||
|
version := packageInfo[0][7]
|
||||||
|
spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: name, Category: category, Version: version})
|
||||||
|
if err != nil {
|
||||||
|
Fatal("Error: " + err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
spec.SetOutputPath(dst)
|
||||||
|
compilerSpecs = append(compilerSpecs, spec)
|
||||||
}
|
}
|
||||||
|
|
||||||
spec.SetOutputPath(dst)
|
artifact, errs := compiler.CompileParallel(concurrency, privileged, compilerSpecs)
|
||||||
artifact, err := compiler.Compile(concurrency, privileged, spec)
|
if len(errs) != 0 {
|
||||||
if err != nil {
|
for _, e := range errs {
|
||||||
Fatal("Error: " + err.Error())
|
Error("Error: " + e.Error())
|
||||||
|
}
|
||||||
|
Fatal("Bailing out")
|
||||||
|
}
|
||||||
|
for _, a := range artifact {
|
||||||
|
Info("Artifact generated:", a.GetPath())
|
||||||
}
|
}
|
||||||
|
|
||||||
Info("Artifact generated:", artifact.GetPath())
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user