Skip to content

Commit 892ac3b

Browse files
committed
LoaderOpts
1 parent a7a71f6 commit 892ac3b

File tree

6 files changed

+37
-26
lines changed

6 files changed

+37
-26
lines changed

cmd/tk/env.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ func envSetCmd() *cli.Command {
7777
tmp.Spec.APIServer = server
7878
}
7979

80-
cfg, err := tanka.Peek(path, tanka.JsonnetOpts{})
80+
cfg, err := tanka.Peek(path, tanka.Opts{})
8181
if err != nil {
8282
return err
8383
}

cmd/tk/export.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ func exportCmd() *cli.Command {
8484
}
8585

8686
// validate environment
87-
if _, err := tanka.LoadEnvironment(path, opts.Opts); err != nil {
87+
if _, err := tanka.Peek(path, opts.Opts); err != nil {
8888
switch err.(type) {
8989
case tanka.ErrMultipleEnvs:
9090
fmt.Println("Please use --name to export a single environment or --recursive to export multiple environments.")

pkg/tanka/find.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"os"
66
"path/filepath"
77

8-
"github.com/grafana/tanka/pkg/jsonnet"
98
"github.com/grafana/tanka/pkg/spec/v1alpha1"
109
"k8s.io/apimachinery/pkg/labels"
1110
)
@@ -45,7 +44,7 @@ func FindEnvs(path string, opts FindOpts) ([]*v1alpha1.Environment, error) {
4544
// find implements the actual functionality described at 'FindEnvs'
4645
func find(path string) ([]*v1alpha1.Environment, error) {
4746
// try if this has envs
48-
list, err := List(path, jsonnet.Opts{})
47+
list, err := List(path, Opts{})
4948
if len(list) != 0 && err == nil {
5049
// it has. don't search deeper
5150
return list, nil

pkg/tanka/inline.go

+17-7
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,12 @@ import (
1717
// Kubernetes resources are expected at the `data` key of this very type
1818
type InlineLoader struct{}
1919

20-
func (i *InlineLoader) Load(path string, opts JsonnetOpts) (*v1alpha1.Environment, error) {
21-
envs, err := inlineEval(path, opts)
20+
func (i *InlineLoader) Load(path string, opts LoaderOpts) (*v1alpha1.Environment, error) {
21+
if opts.Name != "" {
22+
opts.JsonnetOpts.EvalScript = fmt.Sprintf(SingleEnvEvalScript, opts.Name)
23+
}
24+
25+
envs, err := inlineEval(path, opts.JsonnetOpts)
2226
if err != nil {
2327
return nil, err
2428
}
@@ -49,14 +53,20 @@ func (i *InlineLoader) Load(path string, opts JsonnetOpts) (*v1alpha1.Environmen
4953
return env, nil
5054
}
5155

52-
func (i *InlineLoader) Peek(path string, opts JsonnetOpts) (*v1alpha1.Environment, error) {
53-
opts.EvalScript = EnvsOnlyEvalScript
56+
func (i *InlineLoader) Peek(path string, opts LoaderOpts) (*v1alpha1.Environment, error) {
57+
opts.JsonnetOpts.EvalScript = EnvsOnlyEvalScript
58+
if opts.Name != "" {
59+
opts.JsonnetOpts.EvalScript = fmt.Sprintf(SingleEnvEvalScript, opts.Name)
60+
}
5461
return i.Load(path, opts)
5562
}
5663

57-
func (i *InlineLoader) List(path string, opts JsonnetOpts) ([]*v1alpha1.Environment, error) {
58-
opts.EvalScript = EnvsOnlyEvalScript
59-
list, err := inlineEval(path, opts)
64+
func (i *InlineLoader) List(path string, opts LoaderOpts) ([]*v1alpha1.Environment, error) {
65+
opts.JsonnetOpts.EvalScript = EnvsOnlyEvalScript
66+
if opts.Name != "" {
67+
opts.JsonnetOpts.EvalScript = fmt.Sprintf(SingleEnvEvalScript, opts.Name)
68+
}
69+
list, err := inlineEval(path, opts.JsonnetOpts)
6070
if err != nil {
6171
return nil, err
6272
}

pkg/tanka/load.go

+13-11
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,7 @@ func LoadEnvironment(path string, opts Opts) (*v1alpha1.Environment, error) {
3636
return nil, err
3737
}
3838

39-
if opts.Name != "" {
40-
opts.JsonnetOpts.EvalScript = fmt.Sprintf(SingleEnvEvalScript, opts.Name)
41-
}
42-
env, err := loader.Load(path, opts.JsonnetOpts)
39+
env, err := loader.Load(path, LoaderOpts{opts.JsonnetOpts, opts.Name})
4340
if err != nil {
4441
return nil, err
4542
}
@@ -62,25 +59,25 @@ func LoadManifests(env *v1alpha1.Environment, filters process.Matchers) (*LoadRe
6259

6360
// Peek loads the metadata of the environment at path. To get resources as well,
6461
// use Load
65-
func Peek(path string, opts JsonnetOpts) (*v1alpha1.Environment, error) {
62+
func Peek(path string, opts Opts) (*v1alpha1.Environment, error) {
6663
loader, err := DetectLoader(path)
6764
if err != nil {
6865
return nil, err
6966
}
7067

71-
return loader.Peek(path, opts)
68+
return loader.Peek(path, LoaderOpts{opts.JsonnetOpts, opts.Name})
7269
}
7370

7471
// List finds metadata of all environments at path that could possibly be
7572
// loaded. List can be used to deal with multiple inline environments, by first
7673
// listing them, choosing the right one and then only loading that one
77-
func List(path string, opts JsonnetOpts) ([]*v1alpha1.Environment, error) {
74+
func List(path string, opts Opts) ([]*v1alpha1.Environment, error) {
7875
loader, err := DetectLoader(path)
7976
if err != nil {
8077
return nil, err
8178
}
8279

83-
return loader.List(path, opts)
80+
return loader.List(path, LoaderOpts{opts.JsonnetOpts, opts.Name})
8481
}
8582

8683
// DetectLoader detects whether the environment is inline or static and picks
@@ -105,14 +102,19 @@ func DetectLoader(path string) (Loader, error) {
105102
// Loader is an abstraction over the process of loading Environments
106103
type Loader interface {
107104
// Load a single environment at path
108-
Load(path string, opts JsonnetOpts) (*v1alpha1.Environment, error)
105+
Load(path string, opts LoaderOpts) (*v1alpha1.Environment, error)
109106

110107
// Peek only loads metadata and omits the actual resources
111-
Peek(path string, opts JsonnetOpts) (*v1alpha1.Environment, error)
108+
Peek(path string, opts LoaderOpts) (*v1alpha1.Environment, error)
112109

113110
// List returns metadata of all possible environments at path that can be
114111
// loaded
115-
List(path string, opts JsonnetOpts) ([]*v1alpha1.Environment, error)
112+
List(path string, opts LoaderOpts) ([]*v1alpha1.Environment, error)
113+
}
114+
115+
type LoaderOpts struct {
116+
JsonnetOpts
117+
Name string
116118
}
117119

118120
type LoadResult struct {

pkg/tanka/static.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ import (
1212
// Jsonnet is evaluated as normal
1313
type StaticLoader struct{}
1414

15-
func (s StaticLoader) Load(path string, opts JsonnetOpts) (*v1alpha1.Environment, error) {
15+
func (s StaticLoader) Load(path string, opts LoaderOpts) (*v1alpha1.Environment, error) {
1616
config, err := s.Peek(path, opts)
1717
if err != nil {
1818
return nil, err
1919
}
2020

21-
data, err := EvalJsonnet(path, opts)
21+
data, err := EvalJsonnet(path, opts.JsonnetOpts)
2222
if err != nil {
2323
return nil, err
2424
}
@@ -30,7 +30,7 @@ func (s StaticLoader) Load(path string, opts JsonnetOpts) (*v1alpha1.Environment
3030
return config, nil
3131
}
3232

33-
func (s StaticLoader) Peek(path string, opts JsonnetOpts) (*v1alpha1.Environment, error) {
33+
func (s StaticLoader) Peek(path string, opts LoaderOpts) (*v1alpha1.Environment, error) {
3434
config, err := parseStaticSpec(path)
3535
if err != nil {
3636
return nil, err
@@ -39,7 +39,7 @@ func (s StaticLoader) Peek(path string, opts JsonnetOpts) (*v1alpha1.Environment
3939
return config, nil
4040
}
4141

42-
func (s StaticLoader) List(path string, opts JsonnetOpts) ([]*v1alpha1.Environment, error) {
42+
func (s StaticLoader) List(path string, opts LoaderOpts) ([]*v1alpha1.Environment, error) {
4343
env, err := s.Peek(path, opts)
4444
if err != nil {
4545
return nil, err

0 commit comments

Comments
 (0)