//go:build !windows

package runtimecredential

import (
	"fmt"
	"os"
)

var replaceCredentialFile = os.Rename
var removeCredentialTree = os.RemoveAll

func syncCredentialDirectory(path string) error {
	dir, err := os.Open(path)
	if err != nil {
		return err
	}
	defer dir.Close()
	return dir.Sync()
}

func validatePrivateCredentialFile(_ string, info os.FileInfo) error {
	if !info.Mode().IsRegular() {
		return fmt.Errorf("credential is not a regular file")
	}
	if info.Mode().Perm()&^0o600 != 0 {
		return fmt.Errorf("credential permissions must not exceed 0600")
	}
	return nil
}
