func main()

in main/main.go [31:91]


func main() {
	logger := slog.New(logging.NewExtensionSlogHandler(os.Stdout, nil)).
		With("version", VersionString()).
		With("pid", os.Getpid())
	// parse command line arguments
	cmd := parseCmd(os.Args)
	logger = logger.With("operation", strings.ToLower(cmd.name))

	// subscribe to cleanly shutdown
	sigs := make(chan os.Signal, 1)
	signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
	go func() {
		<-sigs
		telemetry.SendEvent(telemetry.InfoEvent, telemetry.KillVMWatchTask, "Received shutdown request")
		shutdown = true
		err := killVMWatch(logger, vmWatchCommand)
		if err != nil {
			telemetry.SendEvent(telemetry.ErrorEvent, telemetry.KillVMWatchTask, fmt.Sprintf("Error when killing vmwatch process, error: %s", err.Error()))
		}
	}()

	// parse extension environment
	hEnv, err := handlerenv.GetHandlerEnviroment()
	if err != nil {
		logger.Info("failed to parse handlerenv", "error", err)
		os.Exit(cmd.failExitCode)
	}

	seqNum, err := seqnoManager.FindSeqNum(hEnv.ConfigFolder)
	if err != nil {
		logger.Info("failed to find sequence number", "error", err)
	}
	logger = logger.With("seq", seqNum)
	slog.SetDefault(logger)

	// Initialize telemetry singleton, which can be used with package level function
	if _, err := telemetry.NewTelemetry(hEnv); err != nil {
		logger.Error(fmt.Sprintf("failed to initialize telemetry object, error: %s", err.Error()), slog.Any("error", err))
		os.Exit(cmd.failExitCode)
	}
	// check sub-command preconditions, if any, before executing
	telemetry.SendEvent(telemetry.InfoEvent, telemetry.MainTask, fmt.Sprintf("Starting AppHealth Extension %s seqNum=%d operation=%s", GetExtensionVersion(), seqNum, cmd.name))
	telemetry.SendEvent(telemetry.InfoEvent, telemetry.MainTask, fmt.Sprintf("HandlerEnviroment = %s", hEnv))
	if cmd.pre != nil {
		logger.Info("pre-check")
		if err := cmd.pre(logger, seqNum); err != nil {
			telemetry.SendEvent(telemetry.ErrorEvent, telemetry.MainTask, "pre-check failed", "error", err.Error())
			os.Exit(cmd.failExitCode)
		}
	}
	// execute the subcommand
	reportStatus(logger, hEnv, seqNum, StatusTransitioning, cmd, "")
	msg, err := cmd.f(logger, hEnv, seqNum)
	if err != nil {
		logger.Error("failed to handle", "error", err)
		reportStatus(logger, hEnv, seqNum, StatusError, cmd, err.Error()+msg)
		os.Exit(cmd.failExitCode)
	}
	reportStatus(logger, hEnv, seqNum, StatusSuccess, cmd, msg)
	telemetry.SendEvent(telemetry.InfoEvent, telemetry.MainTask, fmt.Sprintf("Finished execution of AppHealth Extension %s seqNum=%d operation=%s", GetExtensionVersion(), seqNum, cmd.name))
}