roles.go 751 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package roles
  2. import (
  3. "strconv"
  4. "strings"
  5. )
  6. var TopLevelRoles = map[string]struct{}{
  7. "root": {},
  8. "targets": {},
  9. "snapshot": {},
  10. "timestamp": {},
  11. }
  12. func IsTopLevelRole(name string) bool {
  13. _, ok := TopLevelRoles[name]
  14. return ok
  15. }
  16. func IsDelegatedTargetsRole(name string) bool {
  17. return !IsTopLevelRole(name)
  18. }
  19. func IsTopLevelManifest(name string) bool {
  20. return IsTopLevelRole(strings.TrimSuffix(name, ".json"))
  21. }
  22. func IsDelegatedTargetsManifest(name string) bool {
  23. return !IsTopLevelManifest(name)
  24. }
  25. func IsVersionedManifest(name string) bool {
  26. parts := strings.Split(name, ".")
  27. // Versioned manifests have the form "x.role.json"
  28. if len(parts) < 3 {
  29. return false
  30. }
  31. _, err := strconv.Atoi(parts[0])
  32. return err == nil
  33. }