crucible depot: Increment 1 core (status/push/verify/get/pull + local/cdn/bunny backends) #30

Merged
archvillainette merged 11 commits from depot-core-increment-1 into main 2026-07-04 23:30:55 +00:00
2 changed files with 9 additions and 14 deletions
Showing only changes of commit f1ff144740 - Show all commits
+5 -11
View File
@@ -17,12 +17,10 @@ type manifestFile struct {
} `yaml:"assets"`
}
var sha256Pattern = regexp.MustCompile(`^[0-9a-f]{64}$`)
func ValidSHA(s string) bool {
if len(s) != 64 {
return false
}
match, _ := regexp.MatchString("^[0-9a-f]{64}$", s)
return match
return sha256Pattern.MatchString(s)
}
func BlobKey(sha string) string {
@@ -42,7 +40,7 @@ func ReferencedSHAs(dir string) (map[string]int64, error) {
if entry.IsDir() {
continue
}
if !hasYAMLExt(entry.Name()) {
if filepath.Ext(entry.Name()) != ".yml" {
continue
}
@@ -60,7 +58,7 @@ func ReferencedSHAs(dir string) (map[string]int64, error) {
for _, asset := range manifest.Assets {
if !ValidSHA(asset.SHA256) {
return nil, fmt.Errorf("%s: invalid sha256 hash", entry.Name())
return nil, fmt.Errorf("%s: asset %q: invalid sha256 %q", entry.Name(), asset.Path, asset.SHA256)
}
// Keep the largest size for each sha
@@ -76,7 +74,3 @@ func ReferencedSHAs(dir string) (map[string]int64, error) {
return result, nil
}
func hasYAMLExt(name string) bool {
return filepath.Ext(name) == ".yml" || filepath.Ext(name) == ".yaml"
}
+4 -3
View File
@@ -111,10 +111,11 @@ func TestReferencedSHAs(t *testing.T) {
_, err = ReferencedSHAs(tmpdir)
if err == nil {
t.Errorf("ReferencedSHAs with bad sha: got nil error, want error naming file")
t.Fatalf("ReferencedSHAs with bad sha: got nil error, want error naming file and asset path")
}
if err != nil && err.Error() != "badsha.yml: invalid sha256 hash" {
t.Errorf("ReferencedSHAs error message: got %q, should mention badsha.yml", err.Error())
want := `badsha.yml: asset "file5.txt": invalid sha256 "not_a_valid_sha"`
if err.Error() != want {
t.Errorf("ReferencedSHAs error message: got %q, want %q", err.Error(), want)
}
}