@@ -2,8 +2,6 @@ package cmd
22
33import (
44 "fmt"
5- "log"
6- "os"
75 "strings"
86
97 "github.com/ashish0kumar/typtea/internal/game"
@@ -31,24 +29,22 @@ var startCmd = &cobra.Command{
3129 RunE : runTypingTest ,
3230}
3331
34- // init function initializes the start command and its flags
3532func init () {
36- startCmd .Flags ().IntVarP (& duration , "duration" , "d" , 30 , "Test duration in seconds" )
33+ startCmd .Flags ().IntVarP (& duration , "duration" , "d" , 30 , "Test duration in seconds (10-300) " )
3734 startCmd .Flags ().StringVarP (& language , "lang" , "l" , "en" , "Language for typing test" )
3835 startCmd .Flags ().BoolVar (& listLangs , "list-langs" , false , "List all available languages" )
3936}
4037
41- // runTypingTest is the main function that runs the typing test
38+ // runTypingTest runs the typing test or lists languages if requested
4239func runTypingTest (cmd * cobra.Command , args []string ) error {
43-
4440 // Initialize the language manager
4541 langManager := game .NewLanguageManager ()
4642
47- // If --list-langs is set, print available languages and exit
43+ // If --list-langs flag is set, print available languages and exit
4844 if listLangs {
49- fmt .Println ("Available languages:" )
45+ cmd .Println ("Available languages:" )
5046 for _ , lang := range langManager .GetAvailableLanguages () {
51- fmt .Printf (" %s\n " , lang )
47+ cmd .Printf (" %s\n " , lang )
5248 }
5349 return nil
5450 }
@@ -58,25 +54,24 @@ func runTypingTest(cmd *cobra.Command, args []string) error {
5854 return fmt .Errorf ("duration must be between 10 and 300 seconds (e.g., --duration 60)" )
5955 }
6056
61- // Validate language
57+ // Validate language availability
6258 if ! langManager .IsLanguageAvailable (language ) {
6359 available := langManager .GetAvailableLanguages ()
64- fmt . Fprintf ( os . Stderr , "Error: Language '%s' not available.\n " , language )
65- fmt . Fprintf ( os . Stderr , "Available languages: %s\n " , strings .Join (available , ", " ))
60+ cmd . PrintErrf ( "Error: Language '%s' not available.\n " , language )
61+ cmd . PrintErrf ( "Available languages: %s\n " , strings .Join (available , ", " ))
6662 return fmt .Errorf ("invalid language: %s" , language )
6763 }
6864
6965 // Create a new typing test model
7066 model , err := tui .NewModel (duration , language )
7167 if err != nil {
72- fmt .Fprintf (os .Stderr , "Error creating typing test: %v\n " , err )
73- os .Exit (1 )
68+ return fmt .Errorf ("error creating typing test: %w" , err )
7469 }
7570
76- // Start the TUI program
71+ // Start the TUI program with alternate screen
7772 p := tea .NewProgram (model , tea .WithAltScreen ())
7873 if _ , err := p .Run (); err != nil {
79- log . Fatal ( err )
74+ return fmt . Errorf ( "error running TUI program: %w" , err )
8075 }
8176
8277 return nil
0 commit comments