Sfoglia il codice sorgente

Implemented full edit lifecycle in tui

arianagiroux 2 settimane fa
parent
commit
97a4d77ea3
6 ha cambiato i file con 12 aggiunte e 5 eliminazioni
  1. 2 1
      Readme.md
  2. 0 1
      cmd/issues.go
  3. 2 0
      io.go
  4. 1 1
      io_test.go
  5. 6 1
      tui.go
  6. 1 1
      tui_test.go

+ 2 - 1
Readme.md

@@ -78,12 +78,13 @@ issues PATH
 
 ## TODO
 
-- `cmd/issues.go:// TODO implement edit/delete functions`
 - `io.go:func readPath(path string) (output string, err error) { // TODO DEPRECATE`
+- `io.go:// TODO(InvokeEditor) implement a channel & goroutine based concurrency lifecycle`
 - `io.go:func DeleteIssue(issue Issue) (success bool, err error) { return false, nil } // TODO: implement`
 - `tui.go:// TODO enable collection recursing (i.e, embedded collections)`
 - `tui.go:// TODO enable scroll/viewport logic`
 - `tui.go:// TODO(create widget) implement description field in create.create`
+- `tui_test.go:func Test_Model_View(t *testing.T) { // TODO DEPRECATE`
 
 ### v0.1 Roadmap
 

+ 0 - 1
cmd/issues.go

@@ -1,4 +1,3 @@
-// TODO implement edit/delete functions
 package main
 
 import (

+ 2 - 0
io.go

@@ -104,6 +104,8 @@ func ReadTemplate(path string) (lines []string, err error) {
 //
 // Finally, if no configured editor is found, the program will exit with status
 // code 2
+//
+// TODO(InvokeEditor) implement a channel & goroutine based concurrency lifecycle
 func InvokeEditor(path string) error {
 	// determine editor
 	//	1. Git config

+ 1 - 1
io_test.go

@@ -45,7 +45,7 @@ func Test_IsIssueCollection_success(t *testing.T) {
 }
 
 func Test_IsIssueCollection_fail(t *testing.T) {
-	val := IsIssueCollection("tests/")
+	val := IsIssueCollection("tests/isnotabug")
 	assert.False(t, val)
 }
 

+ 6 - 1
tui.go

@@ -619,6 +619,9 @@ func (ic IssueCollection) update(msg tea.Msg) (widget, tea.Cmd) {
 			return ic, tea.Quit
 		case "c":
 			return ic, ic.newIssueInCollection
+		case "e":
+			ic.Path = ic.Collection[ic.selection].Path
+			return ic, ic.edit
 		}
 	}
 
@@ -629,6 +632,8 @@ func (ic IssueCollection) sendLoad() tea.Msg { return loadPath(ic.Path) }
 
 func (ic IssueCollection) newIssueInCollection() tea.Msg { return createInCollectionMsg(ic.Path) }
 
+func (ic IssueCollection) edit() tea.Msg { return newEditWidget(ic.Path) }
+
 // render cmd for IssueCollection widget
 func (ic IssueCollection) render() tea.Msg {
 	var output string
@@ -657,7 +662,7 @@ func (ic IssueCollection) render() tea.Msg {
 // keyhelp cmd for IssueCollection widget
 func (ic IssueCollection) keyhelp() string {
 	var output string
-	output = output + "\nj/k: down/up\t\tc: create new issue\t\tenter: select\t\tq/ctrl+c: quit"
+	output = output + "\nc: create new issue\t\tenter: view issue\t\tj/k: down/up\t\tq/ctrl+c: quit"
 	return output
 }
 

+ 1 - 1
tui_test.go

@@ -227,7 +227,7 @@ func Test_edit_create_cmd(t *testing.T) {
 
 	// because the resulting test data never gets written from memory to disk,
 	// we can set just about any test path
-	testC := newEditBlank("tests/bugs/test-create-in-memory", "lorem ipsum")
+	testC := newEditWidget("tests/bugs/test-create-in-memory")
 	for i := range testC.(edit).inputFields {
 		testData[testC.(edit).inputFields[i].title] = fmt.Sprintf("test%d", i)
 		testC.(edit).inputFields[i].input.SetValue(fmt.Sprintf("test%d", i))