Skip to content

Commit 4bee54f

Browse files
author
Eric Stroczynski
authored
generate: respect project version when getting package name (#4431) (#4443)
1 parent 7f7cc9a commit 4bee54f

File tree

4 files changed

+46
-31
lines changed

4 files changed

+46
-31
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
entries:
2+
- description: >
3+
Project version now determines how package name is retrieved for a project
4+
kind: bugfix

internal/cmd/operator-sdk/generate/bundle/bundle.go

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -105,21 +105,9 @@ https://github.com/operator-framework/operator-registry/#manifest-format
105105
const defaultRootDir = "bundle"
106106

107107
// setDefaults sets defaults useful to all modes of this subcommand.
108-
func (c *bundleCmd) setDefaults() error {
109-
if projutil.HasProjectFile() {
110-
cfg, err := projutil.ReadConfig()
111-
if err != nil {
112-
return err
113-
}
114-
if c.packageName == "" {
115-
c.packageName = cfg.ProjectName
116-
}
117-
c.layout = projutil.GetProjectLayout(cfg)
118-
} else {
119-
if c.packageName == "" {
120-
return fmt.Errorf("package name is required if PROJECT config file is not present")
121-
}
122-
c.layout = "unknown"
108+
func (c *bundleCmd) setDefaults() (err error) {
109+
if c.packageName, c.layout, err = genutil.GetPackageNameAndLayout(c.packageName); err != nil {
110+
return err
123111
}
124112
return nil
125113
}

internal/cmd/operator-sdk/generate/internal/genutil.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"strings"
2525

2626
"github.com/blang/semver"
27+
"github.com/operator-framework/operator-sdk/internal/util/projutil"
2728
apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
2829
apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
2930
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -158,3 +159,37 @@ func IsExist(path string) bool {
158159
_, err := os.Stat(path)
159160
return err == nil || errors.Is(err, os.ErrExist)
160161
}
162+
163+
// GetPackageNameAndLayout returns packageName and layout, if any, for a project.
164+
// These values are determined by project version and whether a PROJECT file exists.
165+
func GetPackageNameAndLayout(defaultPackageName string) (packageName string, layout string, _ error) {
166+
packageName = defaultPackageName
167+
if projutil.HasProjectFile() {
168+
cfg, err := projutil.ReadConfig()
169+
if err != nil {
170+
return "", "", err
171+
}
172+
if packageName == "" {
173+
switch {
174+
case cfg.IsV2():
175+
wd, err := os.Getwd()
176+
if err != nil {
177+
return "", "", err
178+
}
179+
packageName = strings.ToLower(filepath.Base(wd))
180+
default:
181+
if cfg.ProjectName == "" {
182+
return "", "", errors.New("--package-name must be set if \"projectName\" is not set in the PROJECT config file")
183+
}
184+
packageName = cfg.ProjectName
185+
}
186+
}
187+
layout = projutil.GetProjectLayout(cfg)
188+
} else {
189+
if packageName == "" {
190+
return "", "", errors.New("--package-name must be set if PROJECT config file is not present")
191+
}
192+
layout = "unknown"
193+
}
194+
return packageName, layout, nil
195+
}

internal/cmd/operator-sdk/generate/packagemanifests/packagemanifests.go

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import (
2626
"github.com/operator-framework/operator-sdk/internal/generate/clusterserviceversion/bases"
2727
"github.com/operator-framework/operator-sdk/internal/generate/collector"
2828
genpkg "github.com/operator-framework/operator-sdk/internal/generate/packagemanifest"
29-
"github.com/operator-framework/operator-sdk/internal/util/projutil"
3029
)
3130

3231
const (
@@ -78,21 +77,9 @@ https://github.com/operator-framework/operator-registry/#manifest-format
7877
const defaultRootDir = "packagemanifests"
7978

8079
// setDefaults sets command defaults.
81-
func (c *packagemanifestsCmd) setDefaults() error {
82-
if projutil.HasProjectFile() {
83-
cfg, err := projutil.ReadConfig()
84-
if err != nil {
85-
return err
86-
}
87-
if c.packageName == "" {
88-
c.packageName = cfg.ProjectName
89-
}
90-
c.layout = projutil.GetProjectLayout(cfg)
91-
} else {
92-
if c.packageName == "" {
93-
return fmt.Errorf("package name is required if PROJECT config file is not present")
94-
}
95-
c.layout = "unknown"
80+
func (c *packagemanifestsCmd) setDefaults() (err error) {
81+
if c.packageName, c.layout, err = genutil.GetPackageNameAndLayout(c.packageName); err != nil {
82+
return err
9683
}
9784

9885
if c.inputDir == "" {
@@ -103,6 +90,7 @@ func (c *packagemanifestsCmd) setDefaults() error {
10390
c.outputDir = defaultRootDir
10491
}
10592
}
93+
10694
return nil
10795
}
10896

0 commit comments

Comments
 (0)