From acf948ac6b9a5acd6c4f46675f49e4a1b6f8d19a Mon Sep 17 00:00:00 2001 From: Catherine Date: Sat, 20 Sep 2025 20:10:40 +0000 Subject: [PATCH] Remove code for migrating from v1 data layout. --- README.md | 2 +- src/main.go | 18 +-------- src/migrate.go | 99 -------------------------------------------------- 3 files changed, 2 insertions(+), 117 deletions(-) delete mode 100644 src/migrate.go diff --git a/README.md b/README.md index 7c6516a..74d1b02 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,7 @@ The S3 backend, intended for (relatively) high latency connections, caches both Architecture (v1) ----------------- -*This was the original architecture and it is no longer used.* +*This was the original architecture and it is no longer used. Migration to v2 was last available in commit [7e9cd17b](https://codeberg.org/whitequark/git-pages/commit/7e9cd17b70717bea2fe240eb6a784cb206243690).* Filesystem is used as the sole mechanism for state storage. diff --git a/src/main.go b/src/main.go index 28e8103..6540b7d 100644 --- a/src/main.go +++ b/src/main.go @@ -7,7 +7,6 @@ import ( "log/slog" "net" "net/http" - "os" "runtime/debug" "strings" @@ -62,7 +61,6 @@ func main() { InitObservability() configPath := flag.String("config", "config.toml", "path to configuration file") - migrateV1Path := flag.String("migrate-v1", "", "migrate v1 data directory to storage backend") getManifest := flag.String("get-manifest", "", "retrieve manifest for web root as ProtoJSON") flag.Parse() @@ -70,7 +68,6 @@ func main() { log.Fatalln("config:", err) } UpdateConfigEnv() // environment takes priority - CompileWildcardPattern() switch config.LogFormat { case "short": @@ -114,20 +111,7 @@ func main() { healthListener := listen("health", config.Listen.Health) ConfigureBackend() - - if *migrateV1Path != "" { - root, err := os.OpenRoot(*migrateV1Path) - if err != nil { - log.Fatalln("migrate v1:", err) - } - - err = MigrateFromV1(root) - if err != nil { - log.Fatalln("migrate v1:", err) - } - - log.Println("migrate v1 ok") - } + CompileWildcardPattern() go serve(pagesListener, ServePages) go serve(caddyListener, ServeCaddy) diff --git a/src/migrate.go b/src/migrate.go deleted file mode 100644 index f5ab595..0000000 --- a/src/migrate.go +++ /dev/null @@ -1,99 +0,0 @@ -package main - -import ( - "fmt" - "io/fs" - "log" - "os" - "path/filepath" - - "google.golang.org/protobuf/proto" -) - -func readToManifest(root *os.Root) (*Manifest, error) { - manifest := Manifest{} - manifest.Contents = make(map[string]*Entry) - err := fs.WalkDir(root.FS(), ".", func(path string, dirEntry fs.DirEntry, err error) error { - if err != nil { - return err - } - - manifestEntry := Entry{} - if dirEntry.IsDir() { - manifestEntry.Type = Type_Directory.Enum() - } else if dirEntry.Type().IsRegular() { - data, err := root.ReadFile(path) - if err != nil { - return err - } - manifestEntry.Type = Type_InlineFile.Enum() - manifestEntry.Size = proto.Uint32(uint32(len(data))) - manifestEntry.Data = data - } else if dirEntry.Type().Type() == fs.ModeSymlink { - target, err := root.Readlink(path) - if err != nil { - return err - } - manifestEntry.Type = Type_Symlink.Enum() - manifestEntry.Size = proto.Uint32(uint32(len(target))) - manifestEntry.Data = []byte(target) - } else { - log.Printf("migrate v1: illegal %s/%s\n", root.Name(), path) - } - if path == "." { - path = "" - } - manifest.Contents[path] = &manifestEntry - return nil - }) - return &manifest, err -} - -type ReadDirLinkFS interface { // aaaaahh!!! Why is Go like this!! - fs.ReadDirFS - fs.ReadLinkFS -} - -func MigrateFromV1(root *os.Root) error { - data := root.FS().(ReadDirLinkFS) - - domainDirEntries, err := data.ReadDir("www") - if err != nil { - return err - } - - for _, domainDirEntry := range domainDirEntries { - domain := domainDirEntry.Name() - if !domainDirEntry.IsDir() { - return fmt.Errorf("migrate v1: www/%s: not a directory", domain) - } - - projectDirEntries, err := data.ReadDir(filepath.Join("www", domain)) - if err != nil { - return err - } - - for _, projectDirEntry := range projectDirEntries { - projectName := projectDirEntry.Name() - if projectDirEntry.Type().Type() != fs.ModeSymlink { - return fmt.Errorf("migrate v1: www/%s/%s: not a symlink", domain, projectName) - } - - treeRoot, err := root.OpenRoot(filepath.Join("www", domain, projectName)) - if err != nil { - return err - } - - manifest, err := readToManifest(treeRoot) - if err != nil { - return fmt.Errorf("migrate v1: read %s/%s: %w", domain, projectName, err) - } - - _, err = StoreManifest(fmt.Sprintf("%s/%s", domain, projectName), manifest) - if err != nil { - return fmt.Errorf("migrate v1: store %s/%s: %w", domain, projectName, err) - } - } - } - return nil -}