diff options
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/show-object/main.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/cmd/show-object/main.go b/cmd/show-object/main.go new file mode 100644 index 00000000..287c6027 --- /dev/null +++ b/cmd/show-object/main.go @@ -0,0 +1,37 @@ +package main + +import ( + "flag" + "fmt" + "log" + + "git.sr.ht/~runxiyu/furgit" +) + +func main() { + repoPath := flag.String("r", "", "path to repo (.git or bare)") + ref := flag.String("h", "", "ref or hash") + flag.Parse() + + if *repoPath == "" || *ref == "" { + log.Fatal("must provide -r repo and -h ref/hash") + } + + repo, err := furgit.OpenRepository(*repoPath) + if err != nil { + log.Fatalf("open repo: %v", err) + } + defer repo.Close() + + h, err := repo.ResolveRefFully(*ref) + if err != nil { + log.Fatalf("resolve ref: %v", err) + } + + obj, err := repo.ReadObject(h) + if err != nil { + log.Fatalf("read object: %v", err) + } + + fmt.Printf("%#v\n", obj) +} |
