mirror of
https://github.com/aquasecurity/trivy.git
synced 2025-12-23 07:29:00 -08:00
38 lines
756 B
Go
38 lines
756 B
Go
package resolvers
|
|
|
|
import "strings"
|
|
|
|
func splitPackageSubdirRaw(src string) (string, string) {
|
|
stop := len(src)
|
|
if idx := strings.Index(src, "?"); idx > -1 {
|
|
stop = idx
|
|
}
|
|
|
|
// Calculate an offset to avoid accidentally marking the scheme
|
|
// as the dir.
|
|
var offset int
|
|
if idx := strings.Index(src[:stop], "://"); idx > -1 {
|
|
offset = idx + 3
|
|
}
|
|
|
|
// First see if we even have an explicit subdir
|
|
idx := strings.Index(src[offset:stop], "//")
|
|
if idx == -1 {
|
|
return src, "."
|
|
}
|
|
|
|
idx += offset
|
|
subdir := src[idx+2:]
|
|
src = src[:idx]
|
|
|
|
// Next, check if we have query parameters and push them onto the
|
|
// URL.
|
|
if idx = strings.Index(subdir, "?"); idx > -1 {
|
|
query := subdir[idx:]
|
|
subdir = subdir[:idx]
|
|
src += query
|
|
}
|
|
|
|
return src, subdir
|
|
}
|