//go:build windows

package tilt

import (
	"os"
	"os/exec"
	"strconv"
	"syscall"

	"github.com/tidbcloud/controlplane9/internal/verbose"
)

func killTunnelProcessGroup(pid int) error {
	// taskkill /T terminates the supervisor and every descendant SSH process;
	// /F is required because Go's Windows Process.Kill has no process-tree form.
	_, err := verbose.RunCommand(exec.Command("taskkill", "/PID", strconv.Itoa(pid), "/T", "/F")) // #nosec G204 -- pid is an integer.
	return err
}

func tunnelStartSysProcAttr() *syscall.SysProcAttr {
	const createNewProcessGroup = 0x00000200
	return &syscall.SysProcAttr{CreationFlags: createNewProcessGroup}
}

func lockTunnelStart(_ *os.File) error { return nil }

func unlockTunnelStart(_ *os.File) error { return nil }
