package hostfile import "os" // FileSystem abstracts filesystem operations for testability. type FileSystem interface { ReadFile(path string) ([]byte, error) WriteFile(path string, data []byte, perm os.FileMode) error Stat(path string) (os.FileInfo, error) CreateTemp(dir, pattern string) (*os.File, error) Rename(oldpath, newpath string) error Remove(path string) error Chmod(path string, mode os.FileMode) error } // OSFileSystem implements FileSystem using real OS calls. type OSFileSystem struct{} func (OSFileSystem) ReadFile(path string) ([]byte, error) { return os.ReadFile(path) } func (OSFileSystem) WriteFile(path string, data []byte, perm os.FileMode) error { return os.WriteFile(path, data, perm) } func (OSFileSystem) Stat(path string) (os.FileInfo, error) { return os.Stat(path) } func (OSFileSystem) CreateTemp(dir, pattern string) (*os.File, error) { return os.CreateTemp(dir, pattern) } func (OSFileSystem) Rename(oldpath, newpath string) error { return os.Rename(oldpath, newpath) } func (OSFileSystem) Remove(path string) error { return os.Remove(path) } func (OSFileSystem) Chmod(path string, mode os.FileMode) error { return os.Chmod(path, mode) }