Files
agent-radar 2ed3415fb7
Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

28 lines
800 B
Go

//go:build windows
package runtimeprep
import (
"fmt"
"os"
)
// Prefer a hard link after the ordinary symlink path. Hard links do not need
// the Windows symlink privilege and preserve shared-file updates when the
// source already exists. If the source is not present yet, the caller may
// treat the failed link as a cache miss and let the CLI create a private file.
func exposeCodexFile(source, target string, mode os.FileMode) error {
if err := os.Symlink(source, target); err == nil {
return nil
} else {
symlinkErr := err
if err := os.Link(source, target); err == nil {
return nil
} else if copyErr := copyFile(source, target, mode); copyErr == nil {
return nil
} else {
return fmt.Errorf("symlink failed: %v; hard-link/copy failed: %w", symlinkErr, copyErr)
}
}
}