Skip to content

Commit 4cce2f1

Browse files
authored
Merge pull request #1348 from Adirio/scaffold-enhancement/move-templates
Group templates under a internal subpackage
2 parents 48ea4cb + 63fc6f8 commit 4cce2f1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+368
-98
lines changed

pkg/scaffold/api.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ import (
2525
"sigs.k8s.io/kubebuilder/pkg/model"
2626
"sigs.k8s.io/kubebuilder/pkg/model/resource"
2727
"sigs.k8s.io/kubebuilder/pkg/scaffold/internal/machinery"
28-
controllerv1 "sigs.k8s.io/kubebuilder/pkg/scaffold/v1/controller"
29-
crdv1 "sigs.k8s.io/kubebuilder/pkg/scaffold/v1/crd"
30-
scaffoldv2 "sigs.k8s.io/kubebuilder/pkg/scaffold/v2"
31-
controllerv2 "sigs.k8s.io/kubebuilder/pkg/scaffold/v2/controller"
32-
crdv2 "sigs.k8s.io/kubebuilder/pkg/scaffold/v2/crd"
28+
controllerv1 "sigs.k8s.io/kubebuilder/pkg/scaffold/internal/templates/v1/controller"
29+
crdv1 "sigs.k8s.io/kubebuilder/pkg/scaffold/internal/templates/v1/crd"
30+
templatesv2 "sigs.k8s.io/kubebuilder/pkg/scaffold/internal/templates/v2"
31+
controllerv2 "sigs.k8s.io/kubebuilder/pkg/scaffold/internal/templates/v2/controller"
32+
crdv2 "sigs.k8s.io/kubebuilder/pkg/scaffold/internal/templates/v2/crd"
3333
)
3434

3535
// apiScaffolder contains configuration for generating scaffolding for Go type
@@ -151,11 +151,11 @@ func (s *apiScaffolder) scaffoldV2() error {
151151

152152
if err := machinery.NewScaffold(s.plugins...).Execute(
153153
s.newUniverse(),
154-
&scaffoldv2.Types{Resource: s.resource},
155-
&scaffoldv2.Group{Resource: s.resource},
156-
&scaffoldv2.CRDSample{Resource: s.resource},
157-
&scaffoldv2.CRDEditorRole{Resource: s.resource},
158-
&scaffoldv2.CRDViewerRole{Resource: s.resource},
154+
&templatesv2.Types{Resource: s.resource},
155+
&templatesv2.Group{Resource: s.resource},
156+
&templatesv2.CRDSample{Resource: s.resource},
157+
&templatesv2.CRDEditorRole{Resource: s.resource},
158+
&templatesv2.CRDViewerRole{Resource: s.resource},
159159
&crdv2.EnableWebhookPatch{Resource: s.resource},
160160
&crdv2.EnableCAInjectionPatch{Resource: s.resource},
161161
); err != nil {
@@ -206,8 +206,8 @@ func (s *apiScaffolder) scaffoldV2() error {
206206
}
207207
}
208208

209-
if err := (&scaffoldv2.Main{}).Update(
210-
&scaffoldv2.MainUpdateOptions{
209+
if err := (&templatesv2.Main{}).Update(
210+
&templatesv2.MainUpdateOptions{
211211
Config: &s.config.Config,
212212
WireResource: s.doResource,
213213
WireController: s.doController,

pkg/scaffold/init.go

Lines changed: 66 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,15 @@ import (
2525
"sigs.k8s.io/kubebuilder/pkg/model"
2626
"sigs.k8s.io/kubebuilder/pkg/model/file"
2727
"sigs.k8s.io/kubebuilder/pkg/scaffold/internal/machinery"
28-
"sigs.k8s.io/kubebuilder/pkg/scaffold/project"
29-
scaffoldv1 "sigs.k8s.io/kubebuilder/pkg/scaffold/v1"
30-
managerv1 "sigs.k8s.io/kubebuilder/pkg/scaffold/v1/manager"
31-
metricsauthv1 "sigs.k8s.io/kubebuilder/pkg/scaffold/v1/metricsauth"
32-
scaffoldv2 "sigs.k8s.io/kubebuilder/pkg/scaffold/v2"
33-
certmanagerv2 "sigs.k8s.io/kubebuilder/pkg/scaffold/v2/certmanager"
34-
managerv2 "sigs.k8s.io/kubebuilder/pkg/scaffold/v2/manager"
35-
metricsauthv2 "sigs.k8s.io/kubebuilder/pkg/scaffold/v2/metricsauth"
36-
prometheusv2 "sigs.k8s.io/kubebuilder/pkg/scaffold/v2/prometheus"
37-
webhookv2 "sigs.k8s.io/kubebuilder/pkg/scaffold/v2/webhook"
28+
templatesv1 "sigs.k8s.io/kubebuilder/pkg/scaffold/internal/templates/v1"
29+
managerv1 "sigs.k8s.io/kubebuilder/pkg/scaffold/internal/templates/v1/manager"
30+
metricsauthv1 "sigs.k8s.io/kubebuilder/pkg/scaffold/internal/templates/v1/metricsauth"
31+
templatesv2 "sigs.k8s.io/kubebuilder/pkg/scaffold/internal/templates/v2"
32+
certmanagerv2 "sigs.k8s.io/kubebuilder/pkg/scaffold/internal/templates/v2/certmanager"
33+
managerv2 "sigs.k8s.io/kubebuilder/pkg/scaffold/internal/templates/v2/manager"
34+
metricsauthv2 "sigs.k8s.io/kubebuilder/pkg/scaffold/internal/templates/v2/metricsauth"
35+
prometheusv2 "sigs.k8s.io/kubebuilder/pkg/scaffold/internal/templates/v2/prometheus"
36+
webhookv2 "sigs.k8s.io/kubebuilder/pkg/scaffold/internal/templates/v2/webhook"
3837
)
3938

4039
const (
@@ -49,7 +48,6 @@ const (
4948
type initScaffolder struct {
5049
config *config.Config
5150
boilerplatePath string
52-
boilerplate string
5351
license string
5452
owner string
5553
}
@@ -63,10 +61,10 @@ func NewInitScaffolder(config *config.Config, license, owner string) Scaffolder
6361
}
6462
}
6563

66-
func (s *initScaffolder) newUniverse() *model.Universe {
64+
func (s *initScaffolder) newUniverse(boilerplate string) *model.Universe {
6765
return model.NewUniverse(
6866
model.WithConfig(&s.config.Config),
69-
model.WithBoilerplate(s.boilerplate),
67+
model.WithBoilerplate(boilerplate),
7068
)
7169
}
7270

@@ -77,9 +75,20 @@ func (s *initScaffolder) Scaffold() error {
7775
return err
7876
}
7977

78+
switch {
79+
case s.config.IsV1():
80+
return s.scaffoldV1()
81+
case s.config.IsV2():
82+
return s.scaffoldV2()
83+
default:
84+
return fmt.Errorf("unknown project version %v", s.config.Version)
85+
}
86+
}
87+
88+
func (s *initScaffolder) scaffoldV1() error {
8089
if err := machinery.NewScaffold().Execute(
81-
s.newUniverse(), // Boilerplate is still empty by this call as desired
82-
&project.Boilerplate{
90+
s.newUniverse(""),
91+
&templatesv1.Boilerplate{
8392
Input: file.Input{Path: s.boilerplatePath},
8493
License: s.license,
8594
Owner: s.owner,
@@ -88,45 +97,27 @@ func (s *initScaffolder) Scaffold() error {
8897
return err
8998
}
9099

91-
boilerplateBytes, err := ioutil.ReadFile(s.boilerplatePath) // nolint:gosec
100+
boilerplate, err := ioutil.ReadFile(s.boilerplatePath) // nolint:gosec
92101
if err != nil {
93102
return err
94103
}
95-
s.boilerplate = string(boilerplateBytes)
96-
97-
if err := machinery.NewScaffold().Execute(
98-
s.newUniverse(),
99-
&project.GitIgnore{},
100-
&project.AuthProxyRole{},
101-
&project.AuthProxyRoleBinding{},
102-
); err != nil {
103-
return err
104-
}
105-
106-
switch {
107-
case s.config.IsV1():
108-
return s.scaffoldV1()
109-
case s.config.IsV2():
110-
return s.scaffoldV2()
111-
default:
112-
return fmt.Errorf("unknown project version %v", s.config.Version)
113-
}
114-
}
115104

116-
func (s *initScaffolder) scaffoldV1() error {
117105
return machinery.NewScaffold().Execute(
118-
s.newUniverse(),
119-
&project.KustomizeRBAC{},
120-
&scaffoldv1.KustomizeImagePatch{},
106+
s.newUniverse(string(boilerplate)),
107+
&templatesv1.GitIgnore{},
108+
&templatesv1.AuthProxyRole{},
109+
&templatesv1.AuthProxyRoleBinding{},
110+
&templatesv1.KustomizeRBAC{},
111+
&templatesv1.KustomizeImagePatch{},
121112
&metricsauthv1.KustomizePrometheusMetricsPatch{},
122113
&metricsauthv1.KustomizeAuthProxyPatch{},
123-
&scaffoldv1.AuthProxyService{},
114+
&templatesv1.AuthProxyService{},
124115
&managerv1.Config{Image: ImageName},
125-
&project.Makefile{Image: ImageName},
126-
&project.GopkgToml{},
116+
&templatesv1.Makefile{Image: ImageName},
117+
&templatesv1.GopkgToml{},
127118
&managerv1.Dockerfile{},
128-
&project.Kustomize{},
129-
&project.KustomizeManager{},
119+
&templatesv1.Kustomize{},
120+
&templatesv1.KustomizeManager{},
130121
&managerv1.APIs{BoilerplatePath: s.boilerplatePath},
131122
&managerv1.Controller{},
132123
&managerv1.Webhook{},
@@ -135,26 +126,45 @@ func (s *initScaffolder) scaffoldV1() error {
135126
}
136127

137128
func (s *initScaffolder) scaffoldV2() error {
129+
if err := machinery.NewScaffold().Execute(
130+
s.newUniverse(""),
131+
&templatesv2.Boilerplate{
132+
Input: file.Input{Path: s.boilerplatePath},
133+
License: s.license,
134+
Owner: s.owner,
135+
},
136+
); err != nil {
137+
return err
138+
}
139+
140+
boilerplate, err := ioutil.ReadFile(s.boilerplatePath) // nolint:gosec
141+
if err != nil {
142+
return err
143+
}
144+
138145
return machinery.NewScaffold().Execute(
139-
s.newUniverse(),
146+
s.newUniverse(string(boilerplate)),
147+
&templatesv2.GitIgnore{},
148+
&templatesv2.AuthProxyRole{},
149+
&templatesv2.AuthProxyRoleBinding{},
140150
&metricsauthv2.AuthProxyPatch{},
141151
&metricsauthv2.AuthProxyService{},
142152
&metricsauthv2.ClientClusterRole{},
143153
&managerv2.Config{Image: ImageName},
144-
&scaffoldv2.Main{},
145-
&scaffoldv2.GoMod{ControllerRuntimeVersion: ControllerRuntimeVersion},
146-
&scaffoldv2.Makefile{
154+
&templatesv2.Main{},
155+
&templatesv2.GoMod{ControllerRuntimeVersion: ControllerRuntimeVersion},
156+
&templatesv2.Makefile{
147157
Image: ImageName,
148158
BoilerplatePath: s.boilerplatePath,
149159
ControllerToolsVersion: ControllerToolsVersion,
150160
},
151-
&scaffoldv2.Dockerfile{},
152-
&scaffoldv2.Kustomize{},
153-
&scaffoldv2.ManagerWebhookPatch{},
154-
&scaffoldv2.ManagerRoleBinding{},
155-
&scaffoldv2.LeaderElectionRole{},
156-
&scaffoldv2.LeaderElectionRoleBinding{},
157-
&scaffoldv2.KustomizeRBAC{},
161+
&templatesv2.Dockerfile{},
162+
&templatesv2.Kustomize{},
163+
&templatesv2.ManagerWebhookPatch{},
164+
&templatesv2.ManagerRoleBinding{},
165+
&templatesv2.LeaderElectionRole{},
166+
&templatesv2.LeaderElectionRoleBinding{},
167+
&templatesv2.KustomizeRBAC{},
158168
&managerv2.Kustomization{},
159169
&webhookv2.Kustomization{},
160170
&webhookv2.KustomizeConfigWebhook{},

pkg/scaffold/v2/internal/string_utils.go renamed to pkg/scaffold/internal/machinery/string_utils.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1313
See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
16-
package internal
16+
package machinery
1717

1818
import (
1919
"bufio"

pkg/scaffold/v2/internal/string_utils_test.go renamed to pkg/scaffold/internal/machinery/string_utils_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1313
See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
16-
package internal
16+
package machinery
1717

1818
import (
1919
"bytes"

pkg/scaffold/project/authproxyrole.go renamed to pkg/scaffold/internal/templates/v1/authproxyrole.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
package project
17+
package v1
1818

1919
import (
2020
"path/filepath"

pkg/scaffold/project/authproxyrolebinding.go renamed to pkg/scaffold/internal/templates/v1/authproxyrolebinding.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
package project
17+
package v1
1818

1919
import (
2020
"path/filepath"
File renamed without changes.

pkg/scaffold/project/boilerplate.go renamed to pkg/scaffold/internal/templates/v1/boilerplate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
package project
17+
package v1
1818

1919
import (
2020
"fmt"
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)