Skip to content

Commit

Permalink
refactor to helper package
Browse files Browse the repository at this point in the history
  • Loading branch information
Erik Svensson committed Nov 10, 2023
1 parent 588e9d6 commit ba185f2
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 83 deletions.
81 changes: 81 additions & 0 deletions helpers/helpers.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package helpers

import (
"bufio"
"fmt"
"os"
"strings"
)

func ReadYamlFileToStringArr(fn string) ([]string, error) {
b, err := os.ReadFile(fn)
if err != nil {
return nil, err
}
str := string(b)
var strArr []string
strArr = splitStr(str)
return strArr, nil
}
func splitStr(s string) []string {
var strArr []string
strArr = strings.Split(s, "\n---\n")
if len(strArr) == 1 {
if strings.Contains(s, "- apiVersion:") {
strArr = strings.Split(s, "- apiVersion:")
}
}
var result []string
for _, str := range strArr {
result = append(result, "- apiVersion:"+str)
}
return result
}

func GetKindAndNameFromYaml(y string) (string, string) {
// var obj interface{}
// err := yaml.Unmarshal([]byte(s), *obj)
// if err != nil {
// fmt.Printf("unable to unmarshal yaml, %v", err)
// return "", "", err
// }
// name := obj.Metadata.Name
// kind := obj.kind
kind := ""
name := ""

scanner := bufio.NewScanner(strings.NewReader(y))
for scanner.Scan() {
s := scanner.Text()
b, a, found := strings.Cut(s, ":")
if found && strings.Trim(strings.ToLower(b), " ") == "kind" {
kind = strings.Trim(a, " ")
}
if found && strings.Trim(strings.ToLower(b), " ") == "name" {
name = strings.Trim(a, " ")
break
}

}

return kind, name

}

func ReadStdin() []string {
s := bufio.NewScanner(os.Stdin)
var str string
var l []string
for s.Scan() {
str += "\n" + s.Text()

}

l = splitStr(str)
fmt.Printf("str: %v", str)
return l
}

func WriteOutput(c string, fn string) error {
return os.WriteFile(fn, []byte(c), 0644)
}
89 changes: 6 additions & 83 deletions main.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package main

import (
"bufio"
"flag"
"fmt"
"os"
"strings"

"github.com/arizon-dread/split-yaml/helpers"
)

func main() {
Expand All @@ -22,7 +23,7 @@ func main() {
os.Exit(2)
}
if fn != "" {
c, err := readYamlFileToStringArr(fn)
c, err := helpers.ReadYamlFileToStringArr(fn)
if err != nil {
fmt.Printf("unable to read file %v, quitting\n", fn)
os.Exit(2)
Expand All @@ -35,7 +36,7 @@ func main() {
// os.Exit(2)
// }
var strArr []string
strArr = readStdin()
strArr = helpers.ReadStdin()
if len(strArr) > 1 {
y = strArr
}
Expand All @@ -47,7 +48,7 @@ func main() {
for _, str := range y {

fn := ""
kind, name := getKindAndNameFromYaml(str)
kind, name := helpers.GetKindAndNameFromYaml(str)

// for k, v := range m {
// if k == "kind" {
Expand All @@ -65,85 +66,7 @@ func main() {
var filePath []string
filePath = append(filePath, o)
filePath = append(filePath, fn)
writeOutput(str, strings.Join(filePath, "/"))
}

}
func readYamlFileToStringArr(fn string) ([]string, error) {
b, err := os.ReadFile(fn)
if err != nil {
return nil, err
helpers.WriteOutput(str, strings.Join(filePath, "/"))
}
str := string(b)
var strArr []string
strArr = splitStr(str)
return strArr, nil
}
func splitStr(s string) []string {
var strArr []string
strArr = strings.Split(s, "\n---\n")
if len(strArr) == 1 {
if strings.Contains(s, "- apiVersion:") {
strArr = strings.Split(s, "- apiVersion:")
}
}
var result []string
for _, str := range strArr {
result = append(result, "- apiVersion:"+str)
}
return result
}

func getKindAndNameFromYaml(y string) (string, string) {
// var obj interface{}
// err := yaml.Unmarshal([]byte(s), *obj)
// if err != nil {
// fmt.Printf("unable to unmarshal yaml, %v", err)
// return "", "", err
// }
// name := obj.Metadata.Name
// kind := obj.kind
kind := ""
name := ""

scanner := bufio.NewScanner(strings.NewReader(y))
for scanner.Scan() {
s := scanner.Text()
b, a, found := strings.Cut(s, ":")
if found && strings.Trim(strings.ToLower(b), " ") == "kind" {
kind = strings.Trim(a, " ")
}
if found && strings.Trim(strings.ToLower(b), " ") == "name" {
name = strings.Trim(a, " ")
break
}

}

return kind, name
// decode := scheme.Codecs.UniversalDeserializer().Decode
// obj, install, err := decode([]byte(s), nil, nil)
// if err != nil {
// fmt.Printf("error decoding yaml, %v", err)
// }

// return install.Kind, obj.Metadata.name, nil
}

func readStdin() []string {
s := bufio.NewScanner(os.Stdin)
var str string
var l []string
for s.Scan() {
str += "\n" + s.Text()

}

l = splitStr(str)
fmt.Printf("str: %v", str)
return l
}

func writeOutput(c string, fn string) error {
return os.WriteFile(fn, []byte(c), 0644)
}

0 comments on commit ba185f2

Please sign in to comment.