func initDaemons()

in internal/flows/init.go [62:105]


func initDaemons(ctx context.Context, nodeProvider nodeprovider.NodeProvider, skipPhases []string, logger *zap.Logger) error {
	if !slices.Contains(skipPhases, preprocessPhase) {
		logger.Info("Configuring Pre-process daemons...")
		if err := nodeProvider.PreProcessDaemon(ctx); err != nil {
			return err
		}
	}

	daemons, err := nodeProvider.GetDaemons()
	if err != nil {
		return err
	}
	if !slices.Contains(skipPhases, configPhase) {
		logger.Info("Configuring daemons...")
		for _, daemon := range daemons {
			nameField := zap.String("name", daemon.Name())

			logger.Info("Configuring daemon...", nameField)
			if err := daemon.Configure(); err != nil {
				return err
			}
			logger.Info("Configured daemon", nameField)
		}
	}

	if !slices.Contains(skipPhases, runPhase) {
		for _, daemon := range daemons {
			nameField := zap.String("name", daemon.Name())

			logger.Info("Ensuring daemon is running..", nameField)
			if err := daemon.EnsureRunning(ctx); err != nil {
				return err
			}
			logger.Info("Daemon is running", nameField)

			logger.Info("Running post-launch tasks..", nameField)
			if err := daemon.PostLaunch(); err != nil {
				return err
			}
			logger.Info("Finished post-launch tasks", nameField)
		}
	}
	return nil
}