shithub: furgit

Download patch

ref: 5b1a67514d984240240234d1e7d203b481a03f62
parent: 130f45404af37a4fe02052a5378c33bcb02b9ebc
author: Runxi Yu <me@runxiyu.org>
date: Sun Feb 22 08:34:10 EST 2026

show-object: Fix defer

--- a/cmd/show-object/main.go
+++ b/cmd/show-object/main.go
@@ -22,33 +22,41 @@
 		log.Fatal("must provide -r <repo> and -h <ref-or-object-id>")
 	}
 
+	if err := run(repoPath, name); err != nil {
+		log.Fatalf("run: %v", err)
+	}
+}
+
+func run(repoPath *string, name *string) error {
 	root, err := os.OpenRoot(*repoPath)
 	if err != nil {
-		log.Fatalf("open repo root: %v", err)
+		return fmt.Errorf("open repo root: %w", err)
 	}
 	defer func() { _ = root.Close() }()
 
 	repo, err := repository.Open(root)
 	if err != nil {
-		log.Fatalf("open repository: %v", err)
+		return fmt.Errorf("open repository: %w", err)
 	}
 
 	id, err := resolveInput(repo, *name)
 	if err != nil {
 		_ = repo.Close()
-		log.Fatalf("resolve %q: %v", *name, err)
+		return fmt.Errorf("resolve %q: %w", *name, err)
 	}
 
 	stored, err := repo.ReadStored(id)
 	if err != nil {
 		_ = repo.Close()
-		log.Fatalf("read object %s: %v", id, err)
+		return fmt.Errorf("read object %s: %w", id, err)
 	}
 
 	printStored(stored)
 	if err := repo.Close(); err != nil {
-		log.Fatalf("close repository: %v", err)
+		return fmt.Errorf("close repository: %w", err)
 	}
+
+	return nil
 }
 
 func resolveInput(repo *repository.Repository, input string) (objectid.ObjectID, error) {
--