package daemon

import (
	"errors"
	"runtime"
	"time"

	"github.com/gravitl/netmaker/netclient/config"
)

// InstallDaemon - Calls the correct function to install the netclient as a daemon service on the given operating system.
func InstallDaemon(cfg config.ClientConfig) error {
	os := runtime.GOOS
	var err error

	interval := "15"
	if cfg.Server.CheckinInterval != "" {
		interval = cfg.Server.CheckinInterval
	}

	switch os {
	case "windows":
		err = SetupWindowsDaemon()
	case "darwin":
		err = SetupMacDaemon(interval)
	case "linux":
		err = SetupSystemDDaemon(interval)
	default:
		err = errors.New("this os is not yet supported for daemon mode. Run join cmd with flag '--daemon off'")
	}
	return err
}

func Restart() error {
	os := runtime.GOOS
	var err error

	time.Sleep(time.Second)

	switch os {
	case "windows":
		RestartWindowsDaemon()
	case "darwin":
		RestartLaunchD()
	case "linux":
		RestartSystemD()
	default:
		err = errors.New("this os is not yet supported for daemon mode. Run join cmd with flag '--daemon off'")
	}
	return err
}
