MCPcopy Create free account
hub / github.com/OctopusDeploy/cli / splitPackageOverrideString

Function splitPackageOverrideString

pkg/packages/packages.go:222–248  ·  view source on GitHub ↗

splitPackageOverrideString splits the input string into components based on delimiter characters (:, /, =). A backslash escapes the next char only when that char is one of : / = \ ; any other "\X" sequence is preserved literally so existing inputs containing backslashes are unaffected. Empty entries

(s string)

Source from the content-addressed store, hash-verified

220// literally so existing inputs containing backslashes are unaffected.
221// Empty entries are preserved; "::5" and ":pterm:5" both return THREE components.
222func splitPackageOverrideString(s string) []string {
223 type span struct {
224 start int
225 end int
226 }
227 spans := make([]span, 0, 3)
228 start := 0
229
230 for i := 0; i < len(s); i++ {
231 ch := s[i]
232 if ch == '\\' && i+1 < len(s) && isEscapableDelimiter(s[i+1]) {
233 i++
234 continue
235 }
236 if ch == ':' || ch == '/' || ch == '=' {
237 spans = append(spans, span{start, i})
238 start = i + 1
239 }
240 }
241 spans = append(spans, span{start, len(s)})
242
243 a := make([]string, len(spans))
244 for i, span := range spans {
245 a[i] = unescapePackageString(s[span.start:span.end])
246 }
247 return a
248}
249
250func unescapePackageString(s string) string {
251 var result strings.Builder

Callers 1

Calls 2

isEscapableDelimiterFunction · 0.85
unescapePackageStringFunction · 0.85

Tested by

no test coverage detected