File tree Expand file tree Collapse file tree 3 files changed +24
-11
lines changed Expand file tree Collapse file tree 3 files changed +24
-11
lines changed Original file line number Diff line number Diff line change 44 "fmt"
55 "os"
66 "regexp"
7- "runtime/pprof"
87 "strings"
98
109 "github.com/howardjohn/kubectl-grep/pkg"
@@ -25,12 +24,6 @@ var rootCmd = &cobra.Command{
2524 Use : "kubectl-grep" ,
2625 Short : "A plugin to grep Kubernetes resources." ,
2726 RunE : func (cmd * cobra.Command , args []string ) error {
28- f , perr := os .Create ("cpu.pprof" )
29- if perr != nil {
30- return perr
31- }
32- pprof .StartCPUProfile (f )
33- defer pprof .StopCPUProfile ()
3427 dm := pkg .Full
3528 if summary {
3629 dm = pkg .Summary
Original file line number Diff line number Diff line change @@ -10,19 +10,24 @@ import (
1010
1111// Implementation borrowed from k8s.io/apimachinery to avoid large imports
1212
13- const separator = "---"
13+ const (
14+ separator = "---"
15+ listSeparator = "- "
16+ )
1417
1518type Reader interface {
1619 Read () ([]byte , error )
1720}
1821
1922type YAMLReader struct {
2023 reader Reader
24+ isList bool
2125}
2226
23- func NewYAMLReader (r * bufio.Reader ) * YAMLReader {
27+ func NewYAMLReader (r * bufio.Reader , isList bool ) * YAMLReader {
2428 return & YAMLReader {
2529 reader : & LineReader {reader : r },
30+ isList : isList ,
2631 }
2732}
2833
@@ -35,6 +40,15 @@ func (r *YAMLReader) Read() ([]byte, error) {
3540 return nil , err
3641 }
3742
43+ if r .isList {
44+ // TODO: optimize if we know its a list
45+ //sep := len([]byte(listSeparator))
46+ //if i := bytes.Index(line, []byte(listSeparator)); i == 0 {
47+ // fmt.Println(string(line))
48+ // i+=sep
49+ //}
50+ }
51+
3852 sep := len ([]byte (separator ))
3953 if i := bytes .Index (line , []byte (separator )); i == 0 {
4054 // We have a potential document terminator
@@ -82,4 +96,4 @@ func (r *LineReader) Read() ([]byte, error) {
8296 }
8397 buffer .WriteByte ('\n' )
8498 return buffer .Bytes (), err
85- }
99+ }
Original file line number Diff line number Diff line change @@ -109,8 +109,14 @@ const (
109109 CleanStatus
110110)
111111
112+ var listFastHeader = `apiVersion: v1
113+ items:
114+ -`
115+
112116func GrepResources (sel Selector , in io.Reader , mode DisplayMode ) (string , error ) {
113- reader := NewYAMLReader (bufio .NewReader (in ))
117+ r := bufio .NewReader (in )
118+ b , _ := r .Peek (len (listFastHeader ))
119+ reader := NewYAMLReader (r , string (b ) == listFastHeader )
114120 matches := []string {}
115121 for {
116122 text , err := reader .Read ()
You can’t perform that action at this time.
0 commit comments