summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/stefanhaller/git-todo-parser/todo/write.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/stefanhaller/git-todo-parser/todo/write.go')
-rw-r--r--vendor/github.com/stefanhaller/git-todo-parser/todo/write.go91
1 files changed, 91 insertions, 0 deletions
diff --git a/vendor/github.com/stefanhaller/git-todo-parser/todo/write.go b/vendor/github.com/stefanhaller/git-todo-parser/todo/write.go
new file mode 100644
index 000000000..279de48a0
--- /dev/null
+++ b/vendor/github.com/stefanhaller/git-todo-parser/todo/write.go
@@ -0,0 +1,91 @@
+package todo
+
+import (
+ "io"
+ "strings"
+)
+
+func Write(f io.Writer, todos []Todo, commentChar byte) error {
+ for _, todo := range todos {
+ if err := writeTodo(f, todo, commentChar); err != nil {
+ return err
+ }
+ }
+
+ return nil
+}
+
+func writeTodo(f io.Writer, todo Todo, commentChar byte) error {
+ var sb strings.Builder
+ if todo.Command != Comment {
+ sb.WriteString(todo.Command.String())
+ }
+
+ switch todo.Command {
+ case NoOp:
+
+ case Comment:
+ sb.WriteByte(commentChar)
+ sb.WriteString(todo.Comment)
+
+ case Break:
+
+ case Label:
+ fallthrough
+ case Reset:
+ sb.WriteByte(' ')
+ sb.WriteString(todo.Label)
+
+ case Exec:
+ sb.WriteByte(' ')
+ sb.WriteString(todo.ExecCommand)
+
+ case Merge:
+ sb.WriteByte(' ')
+ if todo.Commit != "" {
+ sb.WriteString(todo.Flag)
+ sb.WriteByte(' ')
+ sb.WriteString(todo.Commit)
+ sb.WriteByte(' ')
+ }
+ sb.WriteString(todo.Label)
+ if todo.Msg != "" {
+ sb.WriteString(" # ")
+ sb.WriteString(todo.Msg)
+ }
+
+ case Fixup:
+ sb.WriteByte(' ')
+ if todo.Flag != "" {
+ sb.WriteString(todo.Flag)
+ sb.WriteByte(' ')
+ }
+ sb.WriteString(todo.Commit)
+
+ case UpdateRef:
+ sb.WriteByte(' ')
+ sb.WriteString(todo.Ref)
+
+ case Pick:
+ fallthrough
+ case Revert:
+ fallthrough
+ case Edit:
+ fallthrough
+ case Reword:
+ fallthrough
+ case Squash:
+ fallthrough
+ case Drop:
+ sb.WriteByte(' ')
+ sb.WriteString(todo.Commit)
+ if todo.Msg != "" {
+ sb.WriteByte(' ')
+ sb.WriteString(todo.Msg)
+ }
+ }
+
+ sb.WriteByte('\n')
+ _, err := f.Write([]byte(sb.String()))
+ return err
+}