3 Commits
v3 ... v4

Author SHA1 Message Date
5e5999676d feat: add --indent flag to control line indentation in remind output
- Introduces an 'indent' integer flag to the CLI for specifying the
  number of spaces to indent lines in the remind output.
- Updates Task.ToRemind to accept an indent parameter and apply heading
  spaces accordingly.
- Adjusts main.go to pass the indent value from the flag to ToRemind.
2026-01-15 00:13:24 +01:00
1099f4ab97 Revert "fix(parser): exclude "url" metadata from Remind output (since version 06.02.02 of remind)"
This reverts commit ec9df87d68.
2026-01-14 23:30:45 +01:00
ec9df87d68 fix(parser): exclude "url" metadata from Remind output (since version 06.02.02 of remind)
Previously, only "due" metadata was excluded when generating Remind
output. This change also skips "url" metadata, preventing it from
appearing in the Remind string.

Version 06.02.02 of remind supports "url" metadata.
2026-01-11 21:54:39 +01:00
2 changed files with 8 additions and 4 deletions

View File

@@ -26,7 +26,7 @@ type Task struct {
Metadata map[string][]string `json:"metadata"`
}
func (t Task) ToRemind() string {
func (t Task) ToRemind(indent int) string {
var sb strings.Builder
sb.WriteString("REM TODO ")
if t.DueDate == nil {
@@ -87,6 +87,8 @@ func (t Task) ToRemind() string {
sb.WriteString(" (%b)")
}
headingSpaces := strings.Repeat(" ", indent)
if len(t.Metadata) > 0 {
for k, values := range t.Metadata {
if k == "due" {
@@ -95,11 +97,11 @@ func (t Task) ToRemind() string {
// uppercase first letter for Remind
kUpper := strings.ToUpper(k[:1]) + k[1:]
if len(values) == 1 {
sb.WriteString(fmt.Sprintf("%%_%s: %%<%s>", kUpper, kUpper))
sb.WriteString(fmt.Sprintf("%%_%s%s: %%<%s>", headingSpaces, kUpper, kUpper))
} else {
for i := range values {
kNumbered := fmt.Sprintf("%s%d", kUpper, i+1)
sb.WriteString(fmt.Sprintf("%%_%s: %%<%s>", kNumbered, kNumbered))
sb.WriteString(fmt.Sprintf("%%_%s%s: %%<%s>", headingSpaces, kNumbered, kNumbered))
}
}
}

View File

@@ -14,6 +14,7 @@ var (
inputFile string
outputFile string
debug bool
indent int
version = "v3.0.0"
)
@@ -59,7 +60,7 @@ func main() {
}
for _, t := range tasks {
rem := t.ToRemind()
rem := t.ToRemind(indent)
if rem == "" {
continue
}
@@ -71,6 +72,7 @@ func main() {
rootCmd.Flags().StringVarP(&inputFile, "input", "i", "", "Input file (default: stdin)")
rootCmd.Flags().StringVarP(&outputFile, "output", "o", "", "Output file (default: stdout)")
rootCmd.Flags().BoolVar(&debug, "debug", false, "Print intermediate JSON to stderr")
rootCmd.Flags().IntVar(&indent, "indent", 0, "Number of spaces to indent lines (from second line onward)")
rootCmd.Version = version
rootCmd.Flags().BoolP("version", "v", false, "Show version and exit")
rootCmd.SetVersionTemplate(fmt.Sprintf("todotxt2remind version %s\n", version))