Skip to content

Commit dc0f73f

Browse files
authored
Merge pull request #212 from hatappi/improve-add-task-cmd
Improve editor package and add-task command
2 parents 8b71eb5 + 5208427 commit dc0f73f

File tree

2 files changed

+27
-39
lines changed

2 files changed

+27
-39
lines changed

cmd/addTask.go

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -28,33 +28,34 @@ And add a task using the editor.
2828
return err
2929
}
3030

31-
name := strings.Join(args, " ")
32-
if name != "" {
33-
err = task.AddTask(config.TaskFile, name)
31+
var newTasks []string
32+
33+
if len(args) > 0 {
34+
newTasks = append(newTasks, strings.Join(args, " "))
35+
}
36+
37+
if len(newTasks) == 0 {
38+
lines, err := editor.ContentsByLine(initialText)
3439
if err != nil {
3540
return err
3641
}
37-
fmt.Printf("add %s\n", name)
38-
return nil
39-
}
4042

41-
ts, err := editor.GetSliceText(initialText)
42-
if err != nil {
43-
return err
44-
}
43+
for _, l := range lines {
44+
// ignore empty string and comment
45+
if l == "" || strings.HasPrefix(l, "#") {
46+
continue
47+
}
4548

46-
for _, t := range ts {
47-
if t == "" {
48-
continue
49-
}
50-
if strings.HasPrefix(t, "#") {
51-
continue
49+
newTasks = append(newTasks, l)
5250
}
53-
err = task.AddTask(config.TaskFile, t)
54-
if err != nil {
51+
}
52+
53+
for _, newTask := range newTasks {
54+
if err := task.AddTask(config.TaskFile, newTask); err != nil {
5555
return err
5656
}
57-
fmt.Printf("add %s\n", t)
57+
58+
fmt.Printf("added '%s'\n", newTask)
5859
}
5960

6061
return nil

internal/editor/editor.go

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
package editor
33

44
import (
5-
"bufio"
65
"os"
76
"os/exec"
7+
"strings"
88
)
99

10-
// GetSliceText get slice text edited with editor.
11-
func GetSliceText(initialText string) ([]string, error) {
10+
// ContentsByLine gets contents edited with editor by line.
11+
func ContentsByLine(initialText string) ([]string, error) {
1212
tmpfile, err := os.CreateTemp("", "gomodoro")
1313
if err != nil {
1414
return nil, err
@@ -24,32 +24,19 @@ func GetSliceText(initialText string) ([]string, error) {
2424
return nil, err
2525
}
2626

27-
if err = openEditor(tmpfile.Name()); err != nil {
27+
if err = edit(tmpfile.Name()); err != nil {
2828
return nil, err
2929
}
3030

31-
f, err := os.Open(tmpfile.Name())
31+
b, err := os.ReadFile(tmpfile.Name())
3232
if err != nil {
3333
return nil, err
3434
}
35-
defer func() {
36-
_ = f.Close()
37-
}()
38-
39-
ts := make([]string, 0)
40-
scanner := bufio.NewScanner(f)
41-
for scanner.Scan() {
42-
ts = append(ts, scanner.Text())
43-
}
44-
45-
if err := scanner.Err(); err != nil {
46-
return nil, err
47-
}
4835

49-
return ts, nil
36+
return strings.Split(string(b), "\n"), nil
5037
}
5138

52-
func openEditor(filepath string) error {
39+
func edit(filepath string) error {
5340
cmdName := "vi"
5441
if e := os.Getenv("EDITOR"); e != "" {
5542
cmdName = e

0 commit comments

Comments
 (0)