Adds check to quit if there are unsaved changes
This commit is contained in:
parent
040d8f2bd1
commit
2776472acd
4
board.go
4
board.go
|
@ -133,6 +133,7 @@ func (b *Board) CreateLane(name string) {
|
|||
if b.Current < 0 {
|
||||
b.Current = 0
|
||||
}
|
||||
unsavedChanges = true
|
||||
b.SetMessage("Lane created", false)
|
||||
}
|
||||
|
||||
|
@ -490,6 +491,7 @@ func (b *Board) DeleteLane() {
|
|||
if b.Current > len(b.Lanes)-1 {
|
||||
b.Current -= 1
|
||||
}
|
||||
unsavedChanges = true
|
||||
b.SetMessage("Lane deleted", false)
|
||||
}
|
||||
|
||||
|
@ -604,6 +606,7 @@ func (b *Board) Regex(args []string) {
|
|||
b.Lanes[b.Current].Stories[b.Lanes[b.Current].Current].BuildStorySlice(b.width)
|
||||
b.Lanes[b.Current].Stories[b.Lanes[b.Current].Current].Draw(b)
|
||||
}
|
||||
unsavedChanges = true
|
||||
b.SetMessage("Regular expression applied", false)
|
||||
}
|
||||
|
||||
|
@ -647,5 +650,6 @@ func (b *Board) Write(com []string) {
|
|||
defer f.Close()
|
||||
f.Write(j)
|
||||
b.SetMessage("File written", false)
|
||||
unsavedChanges = false
|
||||
}
|
||||
|
||||
|
|
3
lane.go
3
lane.go
|
@ -26,6 +26,7 @@ func (l *Lane) CreateStory(name string, b *Board) {
|
|||
if l.Current < 0 {
|
||||
l.Current = 0
|
||||
}
|
||||
unsavedChanges = true
|
||||
b.SetMessage("Story created", false)
|
||||
}
|
||||
|
||||
|
@ -113,6 +114,7 @@ func (l *Lane) DeleteStory(b *Board) {
|
|||
l.Current -= 1
|
||||
}
|
||||
b.StoryOpen = false
|
||||
unsavedChanges = true
|
||||
b.SetMessage("Story deleted", false)
|
||||
}
|
||||
|
||||
|
@ -126,6 +128,7 @@ func (l *Lane) Update(args []string, b *Board) {
|
|||
break
|
||||
}
|
||||
l.Title = title
|
||||
unsavedChanges = true
|
||||
b.SetMessage("Lane title updated", false)
|
||||
default:
|
||||
b.SetMessage(fmt.Sprintf("Unknown lane location %q", args[0]), true)
|
||||
|
|
10
main.go
10
main.go
|
@ -36,6 +36,7 @@ import (
|
|||
|
||||
var board Board
|
||||
var fp string
|
||||
var unsavedChanges bool
|
||||
|
||||
func ExpandedAbsFilepath(p string) string {
|
||||
if strings.HasPrefix(p, "~/") {
|
||||
|
@ -95,7 +96,7 @@ func GetConfirmation(prefix string) (bool, error) {
|
|||
}
|
||||
ln = strings.ToLower(ln)
|
||||
switch ln {
|
||||
case "y", "yes", "yeah", "yup":
|
||||
case "y", "yes", "yeah", "yup", "ya", "yaas", "aye":
|
||||
return true, nil
|
||||
default:
|
||||
return false, nil
|
||||
|
@ -160,6 +161,13 @@ func WrapText(text string, lineWidth int) string {
|
|||
}
|
||||
|
||||
func Quit() {
|
||||
if unsavedChanges {
|
||||
quitAnyway, _ := GetConfirmation("There are unsaved changed. Quit anyway? (y, n) ")
|
||||
if !quitAnyway {
|
||||
board.SetMessage("Quitting with unsaved work cancelled", false)
|
||||
return
|
||||
}
|
||||
}
|
||||
termios.Restore()
|
||||
fmt.Print(cursorEnd)
|
||||
fmt.Print("\033[0m\033[?25h")
|
||||
|
|
6
story.go
6
story.go
|
@ -82,6 +82,7 @@ func (s *Story) AddComment(comment string, b *Board) {
|
|||
}
|
||||
s.Comments = append(s.Comments, Comment{u.Name, comment, time.Now()})
|
||||
s.BuildStorySlice(b.width)
|
||||
unsavedChanges = true
|
||||
}
|
||||
|
||||
func (s *Story) BuildStorySlice(width int) {
|
||||
|
@ -265,7 +266,9 @@ func (s *Story) Update(args []string, b *Board) {
|
|||
b.SetMessage("Task state updated", false)
|
||||
default:
|
||||
b.SetMessage(fmt.Sprintf("Unknown story location %q", args[0]), true)
|
||||
return
|
||||
}
|
||||
unsavedChanges = true
|
||||
s.BuildStorySlice(b.width)
|
||||
}
|
||||
|
||||
|
@ -287,6 +290,7 @@ func (s *Story) AddRemoveUser(users []string, b *Board) {
|
|||
}
|
||||
sort.Strings(s.Users)
|
||||
s.Updated = time.Now()
|
||||
unsavedChanges = true
|
||||
b.SetMessage("Updated user list", false)
|
||||
}
|
||||
|
||||
|
@ -297,6 +301,7 @@ func (s *Story) AddTask(body string, b *Board) {
|
|||
s.Tasks = append(s.Tasks, Task{body, false})
|
||||
s.Updated = time.Now()
|
||||
s.BuildStorySlice(b.width)
|
||||
unsavedChanges = true
|
||||
b.SetMessage("Task added", false)
|
||||
}
|
||||
|
||||
|
@ -331,6 +336,7 @@ func (s *Story) DeleteTask(id string, b *Board) {
|
|||
}
|
||||
s.Updated = time.Now()
|
||||
s.BuildStorySlice(b.width)
|
||||
unsavedChanges = true
|
||||
b.SetMessage("Task deleted", false)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue