fork of whitequark.org/git-pages with mods for tangled
at main 1.3 kB view raw
1package git_pages 2 3import ( 4 "context" 5 "fmt" 6 "slices" 7 "strings" 8) 9 10func RunMigration(ctx context.Context, name string) error { 11 switch name { 12 case "create-domain-markers": 13 return createDomainMarkers(ctx) 14 default: 15 return fmt.Errorf("unknown migration name (expected one of \"create-domain-markers\")") 16 } 17} 18 19func createDomainMarkers(ctx context.Context) error { 20 if backend.HasFeature(ctx, FeatureCheckDomainMarker) { 21 logc.Print(ctx, "store already has domain markers") 22 return nil 23 } 24 25 var manifests, domains []string 26 manifests, err := backend.ListManifests(ctx) 27 if err != nil { 28 return fmt.Errorf("list manifests: %w", err) 29 } 30 slices.Sort(manifests) 31 for _, manifest := range manifests { 32 domain, _, _ := strings.Cut(manifest, "/") 33 if len(domains) == 0 || domains[len(domains)-1] != domain { 34 domains = append(domains, domain) 35 } 36 } 37 for idx, domain := range domains { 38 logc.Printf(ctx, "(%d / %d) creating domain %s", idx+1, len(domains), domain) 39 if err := backend.CreateDomain(ctx, domain); err != nil { 40 return fmt.Errorf("creating domain %s: %w", domain, err) 41 } 42 } 43 if err := backend.EnableFeature(ctx, FeatureCheckDomainMarker); err != nil { 44 return err 45 } 46 logc.Printf(ctx, "created markers for %d domains", len(domains)) 47 return nil 48}