...
1
2
3
4 package manifestreader
5
6 import (
7 "io"
8
9 "k8s.io/kubectl/pkg/cmd/util"
10 )
11
12
13
14 type ManifestLoader interface {
15 ManifestReader(reader io.Reader, path string) (ManifestReader, error)
16 }
17
18
19 type manifestLoader struct {
20 factory util.Factory
21 }
22
23
24 func NewManifestLoader(f util.Factory) ManifestLoader {
25 return &manifestLoader{
26 factory: f,
27 }
28 }
29
30 func (f *manifestLoader) ManifestReader(reader io.Reader, path string) (ManifestReader, error) {
31
32
33
34
35
36 namespace, enforceNamespace, err := f.factory.ToRawKubeConfigLoader().Namespace()
37 if err != nil {
38 return nil, err
39 }
40
41 mapper, err := f.factory.ToRESTMapper()
42 if err != nil {
43 return nil, err
44 }
45
46 readerOptions := ReaderOptions{
47 Mapper: mapper,
48 Namespace: namespace,
49 EnforceNamespace: enforceNamespace,
50 }
51
52 return mReader(path, reader, readerOptions), nil
53 }
54
55
56 func mReader(path string, reader io.Reader, readerOptions ReaderOptions) ManifestReader {
57 var mReader ManifestReader
58
59 if path == "-" {
60 mReader = &StreamManifestReader{
61 ReaderName: "stdin",
62 Reader: reader,
63 ReaderOptions: readerOptions,
64 }
65 } else {
66 mReader = &PathManifestReader{
67 Path: path,
68 ReaderOptions: readerOptions,
69 }
70 }
71 return mReader
72 }
73
View as plain text