Skip to content

Commit d12baa3

Browse files
authored
Merge pull request #61 from paynejacob/fix/issue-55
2 parents 6049967 + ae4d75a commit d12baa3

File tree

2 files changed

+28
-47
lines changed

2 files changed

+28
-47
lines changed

cmd/package/template.go

Lines changed: 28 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package cmd_package
22

33
import (
4+
"github.com/sirupsen/logrus"
45
"os"
56
"path/filepath"
67

78
_package "github.com/rancherlabs/corral/pkg/package"
8-
"github.com/sirupsen/logrus"
99
"github.com/spf13/cobra"
1010
"gopkg.in/yaml.v3"
1111
)
@@ -15,80 +15,66 @@ Create a package from existing package(s).
1515
1616
Examples:
1717
corral package template a b c OUT
18-
corral package template -f config.yaml
18+
corral package template --description "my description" a b c OUT
1919
`
2020

2121
func NewCommandTemplate() *cobra.Command {
22+
var description string
23+
2224
cmd := &cobra.Command{
2325
Use: "template",
2426
Short: "Create a package from a template",
2527
Long: templateDescription,
2628
Run: func(cmd *cobra.Command, args []string) {
27-
err := template(cmd, args)
28-
if err != nil {
29-
logrus.Fatalf("Error rendering package template: %v", err)
30-
}
29+
template(args[len(args)-1], description, args[:len(args)-1]...)
3130
},
32-
Args: cobra.MinimumNArgs(1),
31+
Args: cobra.MinimumNArgs(2),
3332
}
3433

35-
cmd.Flags().StringP("file", "f", "", "yaml file to define template values")
34+
cmd.Flags().StringVar(&description, "description", "", "description of the rendered package")
3635

3736
return cmd
3837
}
3938

4039
// embed a template
41-
func template(cmd *cobra.Command, args []string) error {
42-
file, err := cmd.Flags().GetString("file")
43-
if err != nil {
44-
return err
45-
}
46-
47-
body, err := os.ReadFile(file)
48-
if err != nil {
49-
return err
50-
}
51-
52-
var t _package.TemplateSpec
53-
54-
if err = yaml.Unmarshal(body, &t); err != nil {
55-
return err
56-
}
40+
func template(name, description string, packages ...string) {
41+
pkgs := make([]_package.Package, len(packages))
5742

58-
srcs := append(t.Packages, args[:len(args)-1]...)
59-
pkgs := make([]_package.Package, len(srcs))
60-
61-
for i, p := range srcs {
43+
for i, p := range packages {
6244
pkg, err := _package.LoadPackage(p) // ensures pkg is in cache
6345
if err != nil {
64-
return err
46+
logrus.Fatalf("failed to load [%s] package", p)
6547
}
6648
pkgs[i] = pkg
6749
}
6850

69-
name := args[len(args)-1]
70-
7151
manifest, err := _package.MergePackages(name, pkgs)
7252
if err != nil {
73-
return err
53+
logrus.Fatal(err)
7454
}
7555

76-
manifest.Description = t.Description
56+
if description == "" {
57+
for i := range pkgs {
58+
if i > 0 {
59+
description += "\n"
60+
}
7761

78-
buf, err := yaml.Marshal(manifest)
79-
if err != nil {
80-
return err
62+
if pkgs[i].Description != "" {
63+
description += pkgs[i].Description
64+
}
65+
}
8166
}
67+
manifest.Description = description
8268

83-
err = _package.ValidateManifest(buf)
84-
if err != nil {
85-
return err
86-
}
69+
buf, _ := yaml.Marshal(manifest)
8770

8871
err = os.WriteFile(filepath.Join(name, "manifest.yaml"), buf, 0664)
8972
if err != nil {
90-
return err
73+
logrus.Fatal("failed to write manifest: ", err)
9174
}
9275

93-
return nil
76+
err = _package.ValidateManifest(buf)
77+
if err != nil {
78+
logrus.Fatal("rendered package is not a valid package: ", err)
79+
}
9480
}

pkg/package/template.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,6 @@ import (
1313
"gopkg.in/yaml.v3"
1414
)
1515

16-
type TemplateSpec struct {
17-
Description string `yaml:"description"`
18-
Packages []string `yaml:"packages"`
19-
}
20-
2116
type TemplateManifest struct {
2217
Name string `yaml:"name"`
2318
Annotations map[string]string `yaml:"annotations,omitempty"`

0 commit comments

Comments
 (0)