@@ -8,7 +8,6 @@ import (
"encoding/json"
"errors"
"fmt"
- "text/tabwriter"
"time"
"git.secluded.site/go-lunatask"
@@ -16,6 +15,8 @@ import (
"git.secluded.site/lune/internal/completion"
"git.secluded.site/lune/internal/config"
"git.secluded.site/lune/internal/ui"
+ "github.com/charmbracelet/lipgloss"
+ "github.com/charmbracelet/lipgloss/table"
"github.com/spf13/cobra"
)
@@ -180,11 +181,7 @@ func outputJSON(cmd *cobra.Command, tasks []lunatask.Task) error {
}
func outputTable(cmd *cobra.Command, tasks []lunatask.Task) error {
- writer := tabwriter.NewWriter(cmd.OutOrStdout(), 0, 0, 2, ' ', 0)
-
- header := ui.Bold.Render("ID") + "\t" + ui.Bold.Render("STATUS") + "\t" +
- ui.Bold.Render("SCHEDULED") + "\t" + ui.Bold.Render("CREATED")
- fmt.Fprintln(writer, header)
+ rows := make([][]string, 0, len(tasks))
for _, task := range tasks {
status := "-"
@@ -194,17 +191,27 @@ func outputTable(cmd *cobra.Command, tasks []lunatask.Task) error {
scheduled := "-"
if task.ScheduledOn != nil {
- scheduled = task.ScheduledOn.String()
+ scheduled = ui.FormatDate(task.ScheduledOn.Time)
}
created := ui.FormatDate(task.CreatedAt)
- fmt.Fprintf(writer, "%s\t%s\t%s\t%s\n", task.ID, status, scheduled, created)
+ rows = append(rows, []string{task.ID, status, scheduled, created})
}
- if err := writer.Flush(); err != nil {
- return fmt.Errorf("writing output: %w", err)
- }
+ tbl := table.New().
+ Headers("ID", "STATUS", "SCHEDULED", "CREATED").
+ Rows(rows...).
+ StyleFunc(func(row, col int) lipgloss.Style {
+ if row == table.HeaderRow {
+ return ui.Bold
+ }
+
+ return lipgloss.NewStyle()
+ }).
+ Border(lipgloss.HiddenBorder())
+
+ fmt.Fprintln(cmd.OutOrStdout(), tbl.Render())
return nil
}