diff options
Diffstat (limited to 'utils')
| -rw-r--r-- | utils/utils.go | 63 | 
1 files changed, 63 insertions, 0 deletions
| 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) +	} +} | 
