diff --git a/pkg/config/defaults.go b/pkg/config/defaults.go index 895d667..d509562 100644 --- a/pkg/config/defaults.go +++ b/pkg/config/defaults.go @@ -37,7 +37,9 @@ func newDefaults(project Project) Config { ApplyForkFiles: ":open_file_folder: Apply fork specific files", ImagesGenerated: ":vhs: Images generated", }, - SyncLabels: []string{"kind/sync-fork-to-upstream"}, - DockerfileGen: dockerfilegen.DefaultParams(project.Path), + SyncLabels: []string{"kind/sync-fork-to-upstream"}, + DockerfileGen: DockerfileGen{ + Params: dockerfilegen.DefaultParams(project.Path), + }, } } diff --git a/pkg/config/example_config.yaml b/pkg/config/example_config.yaml new file mode 100644 index 0000000..12e352a --- /dev/null +++ b/pkg/config/example_config.yaml @@ -0,0 +1,5 @@ +upstream: https://github.com/example/project.git +dockerfileGen: + skip: true + images-from: + - eventing diff --git a/pkg/config/new_test.go b/pkg/config/new_test.go new file mode 100644 index 0000000..18829ac --- /dev/null +++ b/pkg/config/new_test.go @@ -0,0 +1,38 @@ +package config_test + +import ( + _ "embed" + "os" + "path" + "testing" + + "github.com/openshift-knative/deviate/pkg/config" + "github.com/openshift-knative/deviate/pkg/log" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +//go:embed example_config.yaml +var configYaml string + +func TestNew(t *testing.T) { + tmp := t.TempDir() + configPath := path.Join(tmp, ".deviate.yaml") + if err := os.WriteFile(configPath, []byte(configYaml), 0o600); err != nil { + require.NoError(t, err) + } + project := config.Project{ + Path: tmp, + ConfigPath: configPath, + } + cfg, err := config.New(project, log.TestingLogger{T: t}, noopInformer{}) + require.NoError(t, err) + assert.True(t, cfg.DockerfileGen.Skip) + assert.Equal(t, []string{"eventing"}, cfg.DockerfileGen.ImagesFromRepositories) +} + +type noopInformer struct{} + +func (n noopInformer) Remote(name string) (string, error) { + return name, nil +} diff --git a/pkg/config/structure.go b/pkg/config/structure.go index 6d4a4bd..1f8e763 100644 --- a/pkg/config/structure.go +++ b/pkg/config/structure.go @@ -4,12 +4,12 @@ import "github.com/openshift-knative/hack/pkg/dockerfilegen" // Config for a deviate to operate. type Config struct { - Upstream string `json:"upstream" valid:"required"` - Downstream string `json:"downstream" valid:"required"` - DryRun bool `json:"dryRun"` - GithubWorkflowsRemovalGlob string `json:"githubWorkflowsRemovalGlob" valid:"required"` - SyncLabels []string `json:"syncLabels" valid:"required"` - DockerfileGen dockerfilegen.Params `json:"dockerfileGen"` + Upstream string `json:"upstream" valid:"required"` + Downstream string `json:"downstream" valid:"required"` + DryRun bool `json:"dryRun"` + GithubWorkflowsRemovalGlob string `json:"githubWorkflowsRemovalGlob" valid:"required"` + SyncLabels []string `json:"syncLabels" valid:"required"` + DockerfileGen DockerfileGen `json:"dockerfileGen"` ResyncReleases `json:"resyncReleases"` Branches `json:"branches"` Tags `json:"tags"` @@ -56,3 +56,9 @@ type Searches struct { UpstreamReleases string `json:"upstreamReleases" valid:"required"` DownstreamReleases string `json:"downstreamReleases" valid:"required"` } + +// DockerfileGen wraps dockerfilegen.Params adding a skip param. +type DockerfileGen struct { + dockerfilegen.Params + Skip bool `json:"skip"` +} diff --git a/pkg/log/testing.go b/pkg/log/testing.go new file mode 100644 index 0000000..557694d --- /dev/null +++ b/pkg/log/testing.go @@ -0,0 +1,18 @@ +package log + +import "testing" + +// TestingLogger implements a testing logger. +type TestingLogger struct { + T testing.TB +} + +func (t TestingLogger) Println(v ...interface{}) { + t.T.Log(v...) +} + +func (t TestingLogger) Printf(format string, v ...interface{}) { + t.T.Logf(format, v...) +} + +var _ Logger = TestingLogger{} diff --git a/pkg/sync/generate_images.go b/pkg/sync/generate_images.go index 999274b..8021bef 100644 --- a/pkg/sync/generate_images.go +++ b/pkg/sync/generate_images.go @@ -12,8 +12,12 @@ import ( func (o Operation) generateImages(rel release) step { return func() error { - o.Println("- Generating images") params := o.Config.DockerfileGen + if params.Skip { + o.Println("- Skipping image generation") + return nil + } + o.Println("- Generating images") var closer func() var err error params.ProjectFilePath, closer, err = tempProjectFile(o, rel) @@ -21,7 +25,7 @@ func (o Operation) generateImages(rel release) step { if err != nil { return err } - return dockerfilegen.GenerateDockerfiles(params) + return dockerfilegen.GenerateDockerfiles(params.Params) } }