(version string, exit func(int))
| 24 | } |
| 25 | |
| 26 | func newRootCmd(version string, exit func(int)) *rootCmd { |
| 27 | root := &rootCmd{ |
| 28 | exit: exit, |
| 29 | } |
| 30 | cmd := &cobra.Command{ |
| 31 | Use: "tt", |
| 32 | Short: "Task Timer (tt) is a dead simple TUI task timer", |
| 33 | Version: version, |
| 34 | SilenceUsage: true, |
| 35 | RunE: func(cmd *cobra.Command, args []string) error { |
| 36 | db, f, err := setup(root.project) |
| 37 | if err != nil { |
| 38 | return err |
| 39 | } |
| 40 | defer db.Close() |
| 41 | defer f.Close() |
| 42 | |
| 43 | p := tea.NewProgram(ui.Init(db, root.project)) |
| 44 | p.EnterAltScreen() |
| 45 | defer p.ExitAltScreen() |
| 46 | return p.Start() |
| 47 | }, |
| 48 | } |
| 49 | |
| 50 | cmd.PersistentFlags().StringVarP(&root.project, "project", "p", "default", "Project name") |
| 51 | |
| 52 | cmd.AddCommand( |
| 53 | newRerportCmd().cmd, |
| 54 | newCompletionCmd().cmd, |
| 55 | newPathsCmd().cmd, |
| 56 | newToJSONCmd().cmd, |
| 57 | newFromJSONCmd().cmd, |
| 58 | newListCmd().cmd, |
| 59 | newEditCmd().cmd, |
| 60 | newManCmd().cmd, |
| 61 | ) |
| 62 | |
| 63 | root.cmd = cmd |
| 64 | return root |
| 65 | } |
no test coverage detected