package main import ( "context" "fmt" "log" "log/slog" "maps" "net/mail" "os" "gitea.kleinsense.nl/DariusKlein/kleinTodo/client/todo/clientCommon/config" "gitea.kleinsense.nl/DariusKlein/kleinTodo/common" "github.com/urfave/cli/v3" ) var cfg config.Config func main() { var err error cfg, err = config.ReadConfig() if err != nil { slog.Error(err.Error()) } app := &cli.Command{ Name: "Todo", Usage: "kleinTodo client", UsageText: "Todo [command] [arguments...]", Version: "v0.1.0", HideVersion: true, Authors: []any{ mail.Address{ Name: "Darius", Address: "darius.klein@dariusklein.nl", }, }, DefaultCommand: "todo", Commands: commands(), } if err := app.Run(context.Background(), os.Args); err != nil { log.Fatal(err) } } func commands() []*cli.Command { return []*cli.Command{ config.Category(), Login(), Sync(), { Name: "todo", Usage: "print todo items", Action: printTodo, HideHelpCommand: true, }, } } func printTodo(context context.Context, c *cli.Command) error { fmt.Printf("Todo items:\n") store, err := common.GetTodoDataStore() if err != nil { return err } serverTodos := store.GetTodos(cfg.Server.Credentials.Username) var index = 1 for todo := range maps.Values(serverTodos) { todo.PrintIndexed(index) index++ } return nil }