package mysubaru import ( "fmt" "log/slog" "os" mysubaru "github.com/alex-savin/go-mysubaru" "github.com/alex-savin/go-mysubaru/config" ) // var log = *slog.Logger var cfg = &config.Config{} const ( LoggingOutputJson = "JSON" LoggingOutputText = "TEXT" ) func configureLogging(config *config.Logging) *slog.Logger { //nolint:unparam if config == nil { return nil } var level slog.Level if err := level.UnmarshalText([]byte(config.Level)); err != nil { slog.Warn(err.Error()) slog.Warn(fmt.Sprintf("logging level not recognized, defaulting to level %s", slog.LevelInfo.String())) level = slog.LevelInfo } var handler slog.Handler switch config.Output { case LoggingOutputJson: handler = slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{AddSource: cfg.Logging.Source, Level: level}) case LoggingOutputText: handler = slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{AddSource: cfg.Logging.Source, Level: level}) default: handler = slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{AddSource: cfg.Logging.Source, Level: level}) } return slog.New(handler) } func main() { var err error cfg, err = config.New() if err != nil { // Handle errors reading the config file slog.Error("Fatal error config file", "error", err.Error()) os.Exit(1) } logger := configureLogging(cfg.Logging) logger.Debug("printting config", "config", cfg) ms, _ := mysubaru.New(logger, &cfg.MySubaru) // mysubaru.selectVehicle("4S4BTGPD0P3199198") // 11.6MMAN ABS_MIL ACCS AHBL_MIL ATF_MIL AWD_MIL BSD BSDRCT_MIL CEL_MIL EBD_MIL EOL_MIL EPAS_MIL EPB_MIL ESS_MIL EYESIGHT ISS_MIL NAV_TOMTOM OPL_MIL RAB_MIL RCC REARBRK RES RESCC RHSF RPOI RPOIA SRS_MIL TEL_MIL TIF_35 TIR_33 TPMS_MIL VDC_MIL WASH_MIL g2 // subaru1 := mysubaru.GetVehicleByVIN("4S4BTGND8L3137058") // fmt.Printf("SUBARU #2 (Vehicle Status):\n") // subaru1.GetVehicleStatus() // fmt.Printf("SUBARU #2 (Vehicle Condition):\n") // subaru1.GetVehicleCondition() // fmt.Printf("SUBARU #1: %+v\n", subaru1) // fmt.Printf("GEN #1: %+v\n\n", subaru1.getAPIGen()) // ABS_MIL ACCS AHBL_MIL ATF_MIL AWD_MIL BSD BSDRCT_MIL CEL_MIL EBD_MIL EOL_MIL EPAS_MIL EPB_MIL ESS_MIL EYESIGHT ISS_MIL OPL_MIL PANPM-TUIRWAOC PWAAADWWAP RAB_MIL RCC REARBRK RES RESCC RHSF RPOI RPOIA RTGU RVFS SRH_MIL SRS_MIL TEL_MIL TIF_35 TIR_33 TLD TPMS_MIL VALET VDC_MIL WASH_MIL g3 subaru := ms.GetVehicleByVIN("4S4BTGPD0P3199198") subaru.GetLocation(true) // subaru.EngineStart() fmt.Printf("SUBARU #1 (Vehicle Status):\n") subaru.GetVehicleStatus() // fmt.Printf("SUBARU #1 (Vehicle Condition):\n") // subaru.GetVehicleCondition() // fmt.Printf("SUBARU #1: %+v\n", subaru) // subaru.GetClimatePresets() // subaru.GetClimateUserPresets() // fmt.Printf("SUBARU #2: %+v\n", subaru) // subaru.GetVehicleHealth() // subaru.GetFeaturesList() // subaru.LightsStart() // time.Sleep(10 * time.Second) // subaru.LightsStop() // subaru := mysubaru.GetVehicles()[0] // fmt.Printf("SUBARU: %+v\n", subaru) // fmt.Printf("Subaru Gen: %+v\n\n", subaru.getAPIGen()) // subaru.EngineOn() // subaru.GetLocation(false) // subaru.GetVehicleStatus() // subaru.GetVehicleCondition() // fmt.Printf("SUBARU: %+v\n", subaru) // subaru.GetClimateQuickPresets() // subaru.GetClimatePresets() // subaru.GetClimateUserPresets() // subaru.LightsStart() // time.Sleep(15 * time.Second) // subaru.LightsStop() // subaru.listDevices() // subaru.GetVehicleStatus() // subaru.GetClimateSettings() // subaru.EngineStart() // time.Sleep(15 * time.Second) // subaru.EngineStop() // subaru.Unlock() // time.Sleep(20 * time.Second) // subaru.Lock() // subaru.LightsStart() // time.Sleep(15 * time.Second) // subaru.LightsStop() // subaru.GetLocation() }