github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/internal/ipc/sockpath/sockpath.go (about) 1 package sockpath 2 3 import ( 4 "fmt" 5 "path/filepath" 6 "strings" 7 ) 8 9 var ( 10 sockpathExtension = "sock" 11 maxChannelLength = 12 12 ) 13 14 type SockPath struct { 15 RootDir string 16 AppName string 17 AppChannel string 18 } 19 20 func (n *SockPath) String() string { 21 appChannel := strings.ReplaceAll(n.AppChannel, "/", "_") 22 cStart := len(appChannel) - maxChannelLength 23 if cStart < 0 { 24 cStart = 0 25 } 26 appChannel = appChannel[cStart:] 27 28 filename := fmt.Sprintf("%s-%s.%s", n.AppName, appChannel, sockpathExtension) 29 30 return filepath.Join(n.RootDir, filename) 31 }