mirror of
https://github.com/anchore/syft.git
synced 2025-11-17 16:33:21 +01:00
create a protocol-parsing package to distinguish dir,docker, etc...
Signed-off-by: Alfredo Deza <adeza@anchore.com>
This commit is contained in:
parent
4d31655908
commit
678a2c1dcb
58
imgbom/protocol.go
Normal file
58
imgbom/protocol.go
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
package imgbom
|
||||||
|
|
||||||
|
import "strings"
|
||||||
|
|
||||||
|
// Potentially consider moving this out into a generic package that parses user input.
|
||||||
|
// Aside from scope, this is the 2nd package that looks at a string to parse the input
|
||||||
|
// and return an Option type.
|
||||||
|
|
||||||
|
const (
|
||||||
|
UnknownProtocol ProtocolType = iota
|
||||||
|
ImageProtocol
|
||||||
|
DirProtocol
|
||||||
|
)
|
||||||
|
|
||||||
|
var optionStr = []string{
|
||||||
|
"UnknownProtocol",
|
||||||
|
"image",
|
||||||
|
"dir",
|
||||||
|
}
|
||||||
|
|
||||||
|
type ProtocolType int
|
||||||
|
|
||||||
|
type Protocol struct {
|
||||||
|
Type ProtocolType
|
||||||
|
Value string
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewProtocol(userStr string) Protocol {
|
||||||
|
candidates := strings.Split(userStr, "://")
|
||||||
|
|
||||||
|
switch len(candidates) {
|
||||||
|
case 2:
|
||||||
|
if strings.HasPrefix(userStr, "dir://") {
|
||||||
|
return Protocol{
|
||||||
|
Type: DirProtocol,
|
||||||
|
Value: strings.TrimPrefix(userStr, "dir://"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// default to an Image for anything else since stereoscope can handle this
|
||||||
|
return Protocol{
|
||||||
|
Type: ImageProtocol,
|
||||||
|
Value: userStr,
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
return Protocol{
|
||||||
|
Type: ImageProtocol,
|
||||||
|
Value: userStr,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o ProtocolType) String() string {
|
||||||
|
if int(o) >= len(optionStr) || o < 0 {
|
||||||
|
return optionStr[0]
|
||||||
|
}
|
||||||
|
|
||||||
|
return optionStr[o]
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user