diff options
-rw-r--r-- | TODO.md | 5 | ||||
-rw-r--r-- | logger/logger.go | 23 | ||||
-rw-r--r-- | main.go | 32 |
3 files changed, 32 insertions, 28 deletions
@@ -15,8 +15,9 @@ priority 1 - [x] add chunk cache to uniquely store chunks in RAM - [x] better tests for `(*Repo).Commit` - [x] remove errored files from `fileList` -- [ ] **TODO: Priority 3** add superblock logic. -- [ ] **TODO: Priority 2** add version blocks or journal logic. +- [ ] export in `dir` format + - [ ] add superblock. + - [ ] add version blocks. - [x] command line with subcommands (like, hmm... git ? for instance). - experiences: - [ ] compare against UDF diff --git a/logger/logger.go b/logger/logger.go index c7a4756..417a0b9 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -103,6 +103,9 @@ func (l *Logger) output(s severity, v ...interface{}) { if s < l.minSeverity { return } + if s == sError && l.minSeverity <= sInfo { + v = append(v, "\n", string(debug.Stack())) + } str := fmt.Sprint(v...) + resetSeq logLock.Lock() defer logLock.Unlock() @@ -113,6 +116,10 @@ func (l *Logger) outputf(s severity, format string, v ...interface{}) { if s < l.minSeverity { return } + if s == sError && l.minSeverity <= sInfo { + v = append(v, string(debug.Stack())) + format += "\n%s" + } str := fmt.Sprintf(format, v...) + resetSeq logLock.Lock() defer logLock.Unlock() @@ -177,15 +184,13 @@ func (l *Logger) Warningf(format string, v ...interface{}) { // Error logs with the Error severity. // Arguments are handled in the manner of fmt.Print. func (l *Logger) Error(v ...interface{}) { - v = append(v, "\n"+string(debug.Stack())) l.output(sError, v...) } // Errorf logs with the Error severity. // Arguments are handled in the manner of fmt.Printf. func (l *Logger) Errorf(format string, v ...interface{}) { - v = append(v, "\n"+string(debug.Stack())) - l.outputf(sError, format+"%s", v...) + l.outputf(sError, format, v...) } // Panic uses the default logger and logs with the Error severity, and ends up with panic(). @@ -207,7 +212,6 @@ func (l *Logger) Panicf(format string, v ...interface{}) { // Fatal logs with the Fatal severity, and ends with os.Exit(1). // Arguments are handled in the manner of fmt.Print. func (l *Logger) Fatal(v ...interface{}) { - v = append(v, "\n"+string(debug.Stack())) l.output(sFatal, v...) os.Exit(1) } @@ -215,8 +219,7 @@ func (l *Logger) Fatal(v ...interface{}) { // Fatalf logs with the Fatal severity, and ends with os.Exit(1). // Arguments are handled in the manner of fmt.Printf. func (l *Logger) Fatalf(format string, v ...interface{}) { - v = append(v, "\n"+string(debug.Stack())) - l.outputf(sFatal, format+"%s", v...) + l.outputf(sFatal, format, v...) os.Exit(1) } @@ -274,15 +277,13 @@ func Warningf(format string, v ...interface{}) { // Error uses the default logger and logs with the Error severity. // Arguments are handled in the manner of fmt.Print. func Error(v ...interface{}) { - v = append(v, "\n"+string(debug.Stack())) defaultLogger.output(sError, v...) } // Errorf uses the default logger and logs with the Error severity. // Arguments are handled in the manner of fmt.Printf. func Errorf(format string, v ...interface{}) { - v = append(v, "\n"+string(debug.Stack())) - defaultLogger.outputf(sError, format+"%s", v...) + defaultLogger.outputf(sError, format, v...) } // Panic uses the default logger and logs with the Error severity, and ends up with panic(). @@ -305,7 +306,6 @@ func Panicf(format string, v ...interface{}) { // and ends with os.Exit(1). // Arguments are handled in the manner of fmt.Print. func Fatal(v ...interface{}) { - v = append(v, "\n"+string(debug.Stack())) defaultLogger.output(sFatal, v...) os.Exit(1) } @@ -314,8 +314,7 @@ func Fatal(v ...interface{}) { // and ends with os.Exit(1). // Arguments are handled in the manner of fmt.Printf. func Fatalf(format string, v ...interface{}) { - v = append(v, "\n"+string(debug.Stack())) - defaultLogger.outputf(sFatal, format+"%s", v...) + defaultLogger.outputf(sFatal, format, v...) debug.PrintStack() os.Exit(1) } @@ -10,30 +10,34 @@ import ( type command struct { Flag *flag.FlagSet + Run func([]string) error Usage string Help string - Run func([]string) error } const ( - name = "dna-backup" - baseUsage = "<command> [<options>] [--] <args>" - commitUsage = "[<options>] [--] <source> <dest>" - commitHelp = "Create a new version of folder <source> into repo <dest>" - restoreUsage = "[<options>] [--] <source> <dest>" - restoreHelp = "Restore the last version from repo <source> into folder <dest>" + name = "dna-backup" + baseUsage = "<command> [<options>] [--] <args>" ) var ( - logLevel int - commitCmd = flag.NewFlagSet("commit", flag.ExitOnError) - restoreCmd = flag.NewFlagSet("restore", flag.ExitOnError) - subcommands = map[string]command{ - commitCmd.Name(): {commitCmd, commitUsage, commitHelp, commitMain}, - restoreCmd.Name(): {restoreCmd, restoreUsage, restoreHelp, restoreMain}, - } + logLevel int + format string ) +var commit = command{flag.NewFlagSet("commit", flag.ExitOnError), commitMain, + "[<options>] [--] <source> <dest>", + "Create a new version of folder <source> into repo <dest>", +} +var restore = command{flag.NewFlagSet("restore", flag.ExitOnError), restoreMain, + "[<options>] [--] <source> <dest>", + "Restore the last version from repo <source> into folder <dest>", +} +var subcommands = map[string]command{ + commit.Flag.Name(): commit, + restore.Flag.Name(): restore, +} + func init() { // init default help message flag.Usage = func() { |