func getRunCommand()

in cmd/fleet/main.go [62:137]


func getRunCommand(bi build.Info) func(cmd *cobra.Command, args []string) error {
	return func(cmd *cobra.Command, args []string) error {
		cfgObject := cmd.Flags().Lookup("E").Value.(*config.Flag) //nolint:errcheck // we know the flag exists
		cliCfg := cfgObject.Config()

		agentMode, err := cmd.Flags().GetBool(kAgentMode)
		if err != nil {
			return err
		}

		var l *logger.Logger
		if agentMode {
			cfg, err := config.FromConfig(cliCfg)
			if err != nil {
				return err
			}
			l, err = initLogger(cfg, bi.Version, bi.Commit)
			if err != nil {
				return err
			}

			srv, err := server.NewAgent(cliCfg, os.Stdin, bi, l)
			if err != nil {
				return err
			}

			if err := srv.Run(installSignalHandler()); err != nil && !errors.Is(err, context.Canceled) {
				log.Error().Err(err).Msg("Exiting")
				l.Sync()
				return err
			}
		} else {
			cfgPath, err := cmd.Flags().GetString("config")
			if err != nil {
				return err
			}
			cfgData, err := yaml.NewConfigWithFile(cfgPath, config.DefaultOptions...)
			if err != nil {
				return err
			}
			err = cfgData.Merge(cliCfg, config.DefaultOptions...)
			if err != nil {
				return err
			}
			cfg, err := config.FromConfig(cfgData)
			if err != nil {
				return err
			}

			err = cfg.LoadStandaloneAgentMetadata()
			if err != nil {
				return err
			}

			l, err = initLogger(cfg, bi.Version, bi.Commit)
			if err != nil {
				return err
			}

			ctx := installSignalHandler()
			srv, err := server.NewFleet(bi, state.NewLog(zerolog.Ctx(ctx)), true)
			if err != nil {
				return err
			}

			if err := srv.Run(ctx, cfg); err != nil && !errors.Is(err, context.Canceled) {
				log.Error().Err(err).Msg("Exiting")
				l.Sync()
				return err
			}
		}

		l.Sync()
		return nil
	}
}