package cmd import ( "fmt" "os" "time" "github.com/spf13/cobra" "git.jfdev.de/JonasFranzDEV/hal/hal" "git.jfdev.de/JonasFranzDEV/hal/parser" ) func Execute() { if err := rootCommand.Execute(); err != nil { fmt.Printf("%v\n", err) os.Exit(1) } } var rootCommand = &cobra.Command{ Args: cobra.ExactArgs(1), Use: "hal", RunE: runRootCommand, PersistentPreRun: func(cmd *cobra.Command, args []string) { startTime = time.Now() }, PersistentPostRun: func(cmd *cobra.Command, args []string) { totalTime := time.Since(startTime) fmt.Printf("Total execution time: %v\n", totalTime) }, } var debug bool var startTime time.Time func init() { rootCommand.PersistentFlags().BoolVarP(&debug, "debug", "d", false, "Enable debug mode") } func runRootCommand(cmd *cobra.Command, args []string) error { filename := args[0] program, err := parser.ParseFile(filename) if err != nil { return err } module, err := hal.NewHALModule(program, 256, 2, debug) if err != nil { return err } return module.Run() }