aboutsummaryrefslogtreecommitdiffstats
path: root/git-checkout-store/main.go
diff options
context:
space:
mode:
authorTeddy Wing2014-12-06 17:43:46 -0500
committerTeddy Wing2014-12-06 17:45:51 -0500
commit2b091e1072c62f0a6ac35349ac2a899e038b099c (patch)
treed65bb129f7b0e40a39d0d1572c2934dffc8f074d /git-checkout-store/main.go
parenta0d213e24d90bfe95342efd57cf560ae2c1996e1 (diff)
downloadgit-checkout-history-2b091e1072c62f0a6ac35349ac2a899e038b099c.tar.bz2
git-checkout-store: Store branch in YAML file
Take the branch parameter and store it in a `branches` array in our YAML rcfile.
Diffstat (limited to 'git-checkout-store/main.go')
-rw-r--r--git-checkout-store/main.go56
1 files changed, 47 insertions, 9 deletions
diff --git a/git-checkout-store/main.go b/git-checkout-store/main.go
index fcfd1c2..45ea0da 100644
--- a/git-checkout-store/main.go
+++ b/git-checkout-store/main.go
@@ -3,12 +3,19 @@ package main
import (
"bytes"
"fmt"
+ "io/ioutil"
"log"
"os"
"os/exec"
"os/user"
+
+ "gopkg.in/yaml.v2"
)
+type BranchList struct {
+ Branches []string
+}
+
func getHomeDir() string {
usr, err := user.Current()
if err != nil {
@@ -17,22 +24,53 @@ func getHomeDir() string {
return usr.HomeDir
}
-func OpenRCFile() {
- filename := ".git-checkout-historyrc"
- if _, err := os.Stat(filename); os.IsNotExist(err) {
- _, err := os.Create(getHomeDir() + "/" + filename)
- if err != nil {
- log.Fatal(err)
- }
+func OpenRCFile() (f *os.File, err error) {
+ file_path := getHomeDir() + "/.git-checkout-historyrc"
+ 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-historyrc"
+ 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(branchList.Branches, branch)
+
+ data, err = yaml.Marshal(&branchList)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ err = ioutil.WriteFile(file_path, data, 0644)
+ if err != nil {
+ log.Fatal(err)
}
}
func main() {
args := os.Args[1:]
-
- OpenRCFile()
if len(args) > 0 {
+ store(args[0])
+
cmd := exec.Command("git", "checkout", args[0])
var out bytes.Buffer
cmd.Stdout = &out