package servicelib import ( "net" "os" "path/filepath" "strings" ) func IsAddrInUse(network, addr string) bool { ln, err := net.Listen(network, addr) if err != nil { return true } _ = ln.Close() return false } func WriteVersionFile(dir, version string) error { file := filepath.Join(dir, "version.txt") tmp := file + ".tmp" if err := os.MkdirAll(dir, 0755); err != nil { return err } if err := os.WriteFile(tmp, []byte(version+"\n"), 0644); err != nil { return err } return os.Rename(tmp, file) } func ReadVersionFile(dir string) (string, error) { file := filepath.Join(dir, "version.txt") data, err := os.ReadFile(file) if err != nil { return "", err } return strings.TrimSpace(string(data)), nil }