summaryrefslogtreecommitdiff
path: root/internal/entry/entry.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2024-10-18 22:30:10 +0300
committerPaul Buetow <paul@buetow.org>2024-10-18 22:30:10 +0300
commit49750f5fb56b94ce0ee7a86b833aa7abf6db66ae (patch)
tree521951312b2c2b00a76c8908405176a2f5d36c23 /internal/entry/entry.go
parent0ad3bbbfc1f2c126d0c9c7282958b5839192b49e (diff)
can edit files when they are too large
Diffstat (limited to 'internal/entry/entry.go')
-rw-r--r--internal/entry/entry.go16
1 files changed, 12 insertions, 4 deletions
diff --git a/internal/entry/entry.go b/internal/entry/entry.go
index 9f1eadf..475c315 100644
--- a/internal/entry/entry.go
+++ b/internal/entry/entry.go
@@ -78,18 +78,26 @@ func New(filePath string) (Entry, error) {
func (e Entry) Content() (string, error) {
bytes, err := os.ReadFile(e.Path)
- return string(bytes), err
+ if err != err {
+ return "", err
+ }
+ return strings.TrimSpace(string(bytes)), nil
}
-// TODO: Optionally open editor when a content is too large.
func (e Entry) ContentWithLimit(sizeLimit int) (string, error) {
content, err := e.Content()
if err != nil {
return "", err
}
if len(content) > sizeLimit {
- return "", fmt.Errorf("entry content exceeds size limit: %d > %d: %v",
- len(content), sizeLimit, e)
+ err := fmt.Errorf("entry content exceeds size limit: %d > %d: %v", len(content), sizeLimit, e)
+ if err2 := prompt.Acknowledge("You need to shorten the content as "+err.Error(), content); err2 != nil {
+ return "", errors.Join(err, err2)
+ }
+ if err2 := e.Edit(); err2 != nil {
+ return "", errors.Join(err, err2)
+ }
+ return e.ContentWithLimit(sizeLimit)
}
return content, nil
}