57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
package model
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
type Uses interface {
|
|
fmt.Stringer
|
|
isUses()
|
|
}
|
|
|
|
// UsesDockerImage represents `uses = "docker://<image>"`
|
|
type UsesDockerImage struct {
|
|
Image string
|
|
}
|
|
|
|
// UsesRepository represents `uses = "<owner>/<repo>[/<path>]@<ref>"`
|
|
type UsesRepository struct {
|
|
Repository string
|
|
Path string
|
|
Ref string
|
|
}
|
|
|
|
// UsesPath represents `uses = "./<path>"`
|
|
type UsesPath struct {
|
|
Path string
|
|
}
|
|
|
|
// UsesInvalid represents any invalid `uses = "<raw>"` value
|
|
type UsesInvalid struct {
|
|
Raw string
|
|
}
|
|
|
|
func (u *UsesDockerImage) isUses() {}
|
|
func (u *UsesRepository) isUses() {}
|
|
func (u *UsesPath) isUses() {}
|
|
func (u *UsesInvalid) isUses() {}
|
|
|
|
func (u *UsesDockerImage) String() string {
|
|
return fmt.Sprintf("docker://%s", u.Image)
|
|
}
|
|
|
|
func (u *UsesRepository) String() string {
|
|
if u.Path == "" {
|
|
return fmt.Sprintf("%s@%s", u.Repository, u.Ref)
|
|
}
|
|
|
|
return fmt.Sprintf("%s/%s@%s", u.Repository, u.Path, u.Ref)
|
|
}
|
|
|
|
func (u *UsesPath) String() string {
|
|
return fmt.Sprintf("./%s", u.Path)
|
|
}
|
|
|
|
func (u *UsesInvalid) String() string {
|
|
return u.Raw
|
|
}
|