CLI/TUI for drafting, repeating, and publishing daily standup updates as GitHub issues
github go cli golang management project tui daily
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 55 lines 1.3 kB view raw
1package cmd 2 3import ( 4 "context" 5 "fmt" 6 "text/tabwriter" 7 8 "github.com/spf13/cobra" 9 "github.com/vieitesss/pad/internal/ghcli" 10 "github.com/vieitesss/pad/internal/tui" 11) 12 13func newListCmd() *cobra.Command { 14 var limit int 15 16 cmd := &cobra.Command{ 17 Use: "list", 18 Short: "List daily update issues created by you", 19 RunE: func(cmd *cobra.Command, _ []string) error { 20 env, err := loadEnv() 21 if err != nil { 22 return err 23 } 24 25 ctx := context.Background() 26 if err := env.gh.EnsureReady(ctx); err != nil { 27 return err 28 } 29 30 issues, err := tui.RunWithSpinner(ctx, "Fetching your daily updates", func(ctx context.Context) ([]ghcli.DailyUpdateIssue, error) { 31 return env.gh.ListDailyUpdateIssues(ctx, env.cfg.GitHubRepo, env.cfg.Labels, limit) 32 }) 33 if err != nil { 34 return err 35 } 36 37 if len(issues) == 0 { 38 fmt.Fprintln(cmd.OutOrStdout(), "no remote daily update issues found for the authenticated user") 39 return nil 40 } 41 42 writer := tabwriter.NewWriter(cmd.OutOrStdout(), 0, 4, 2, ' ', 0) 43 fmt.Fprintln(writer, "DATE\tNUMBER\tSTATE\tURL") 44 for _, issue := range issues { 45 fmt.Fprintf(writer, "%s\t#%d\t%s\t%s\n", issue.Date, issue.Number, issue.State, issue.URL) 46 } 47 48 return writer.Flush() 49 }, 50 } 51 52 cmd.Flags().IntVar(&limit, "limit", 10, "Maximum number of entries to show") 53 54 return cmd 55}