From cd4a62fbbd0d8f89c6ab7e9e0d92d86f3442cfbd Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sat, 6 Dec 2014 18:42:03 -0500 Subject: Move branch storage to utils package Create utils package and move everything related to branch creation into the utils.go file. Then call `utils.Store` to store a branch. Doing this so I can easily store a branch in history from a `git-checkout-history` call. This is because we want to save to history even if you're checking out using the history shorthand. --- utils/utils.go | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 utils/utils.go (limited to 'utils/utils.go') diff --git a/utils/utils.go b/utils/utils.go new file mode 100644 index 0000000..ebb67de --- /dev/null +++ b/utils/utils.go @@ -0,0 +1,63 @@ +package utils + +import ( + "io/ioutil" + "log" + "os" + "os/user" + + "gopkg.in/yaml.v2" +) + +type BranchList struct { + Branches []string +} + +func getHomeDir() string { + usr, err := user.Current() + if err != nil { + log.Fatal(err) + } + return usr.HomeDir +} + +func OpenRCFile() (f *os.File, err error) { + file_path := getHomeDir() + "/.git-checkout-history" + if _, err := os.Stat(file_path); os.IsNotExist(err) { + return os.Create(file_path) + } else { + return os.Open(file_path) + } +} + +func Store(branch string) { + branchList := BranchList{} + rcfile, err := OpenRCFile() + if err != nil { + log.Fatal(err) + } + rcfile.Close() + + file_path := getHomeDir() + "/.git-checkout-history" + data, err := ioutil.ReadFile(file_path) + if err != nil { + log.Fatal(err) + } + + err = yaml.Unmarshal(data, &branchList) + if err != nil { + log.Fatal(err) + } + + branchList.Branches = append([]string{branch}, branchList.Branches...) + + data, err = yaml.Marshal(&branchList) + if err != nil { + log.Fatal(err) + } + + err = ioutil.WriteFile(file_path, data, 0644) + if err != nil { + log.Fatal(err) + } +} -- cgit v1.2.3