summaryrefslogtreecommitdiffstats
path: root/main.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2018-07-21 15:51:18 +1000
committerJesse Duffield <jessedduffield@gmail.com>2018-07-21 15:51:18 +1000
commitdea751280e4bebab0cfcbe978e5303e17e870221 (patch)
treed58a53b9190983b1047a85deb21b820ca77f5f39 /main.go
parent211715fa7709b3fab7fcd71905ea8df177ab1a54 (diff)
better handling of branches and untracked files
Diffstat (limited to 'main.go')
-rw-r--r--main.go78
1 files changed, 44 insertions, 34 deletions
diff --git a/main.go b/main.go
index 9e7b52683..b3586b04e 100644
--- a/main.go
+++ b/main.go
@@ -1,59 +1,69 @@
package main
import (
- "flag"
- "fmt"
- "log"
- "os"
- "os/user"
- "time"
-
- "github.com/fatih/color"
+ "flag"
+ "fmt"
+ "log"
+ "os"
+ "os/user"
+ "time"
+
+ "github.com/fatih/color"
)
var (
- startTime time.Time
- debugging bool
+ startTime time.Time
+ debugging bool
)
func homeDirectory() string {
- usr, err := user.Current()
- if err != nil {
- log.Fatal(err)
- }
- return usr.HomeDir
+ usr, err := user.Current()
+ if err != nil {
+ log.Fatal(err)
+ }
+ return usr.HomeDir
}
func devLog(objects ...interface{}) {
- localLog(color.FgWhite, homeDirectory()+"/go/src/github.com/jesseduffield/lazygit/development.log", objects...)
+ localLog(color.FgWhite, homeDirectory()+"/go/src/github.com/jesseduffield/lazygit/development.log", objects...)
}
func colorLog(colour color.Attribute, objects ...interface{}) {
- localLog(colour, homeDirectory()+"/go/src/github.com/jesseduffield/lazygit/development.log", objects...)
+ localLog(colour, homeDirectory()+"/go/src/github.com/jesseduffield/lazygit/development.log", objects...)
}
func commandLog(objects ...interface{}) {
- localLog(color.FgWhite, homeDirectory()+"/go/src/github.com/jesseduffield/lazygit/commands.log", objects...)
+ localLog(color.FgWhite, homeDirectory()+"/go/src/github.com/jesseduffield/lazygit/commands.log", objects...)
}
func localLog(colour color.Attribute, path string, objects ...interface{}) {
- if !debugging {
- return
- }
- f, _ := os.OpenFile(path, os.O_APPEND|os.O_WRONLY, 0644)
- defer f.Close()
- for _, object := range objects {
- colorFunction := color.New(colour).SprintFunc()
- f.WriteString(colorFunction(fmt.Sprint(object)) + "\n")
- }
+ if !debugging {
+ return
+ }
+ f, _ := os.OpenFile(path, os.O_APPEND|os.O_WRONLY, 0644)
+ defer f.Close()
+ for _, object := range objects {
+ colorFunction := color.New(colour).SprintFunc()
+ f.WriteString(colorFunction(fmt.Sprint(object)) + "\n")
+ }
+}
+
+func navigateToRepoRootDirectory() {
+ _, err := os.Stat(".git")
+ for os.IsNotExist(err) {
+ devLog("going up a directory to find the root")
+ os.Chdir("..")
+ _, err = os.Stat(".git")
+ }
}
func main() {
- debuggingPointer := flag.Bool("debug", false, "a boolean")
- flag.Parse()
- debugging = *debuggingPointer
- devLog("\n\n\n\n\n\n\n\n\n\n")
- startTime = time.Now()
- verifyInGitRepo()
- run()
+ debuggingPointer := flag.Bool("debug", false, "a boolean")
+ flag.Parse()
+ debugging = *debuggingPointer
+ devLog("\n\n\n\n\n\n\n\n\n\n")
+ startTime = time.Now()
+ verifyInGitRepo()
+ navigateToRepoRootDirectory()
+ run()
}