From e45d3b24a640861b95d35069e8a784250c5ca839 Mon Sep 17 00:00:00 2001 From: "Masih H. Derkani" Date: Fri, 16 Jul 2021 17:09:49 +0100 Subject: [PATCH] Remove `index.Save` API It's two lines of code extra and we already have read from and write to APIs for index. Remove `hydrate` cli since the assumptions it makes about appending index are no longer true. header needs updating for example. Removing to be re-added when needed as part of a propper CARv2 CLI. --- v2/example_test.go | 7 ++++++- v2/index/example_test.go | 27 ++++++++++++++++++++------- v2/index/index.go | 11 ----------- v2/index/index_test.go | 27 --------------------------- v2/internal/carbs/doc.go | 3 --- v2/internal/carbs/util/hydrate.go | 30 ------------------------------ 6 files changed, 26 insertions(+), 79 deletions(-) delete mode 100644 v2/internal/carbs/doc.go delete mode 100644 v2/internal/carbs/util/hydrate.go diff --git a/v2/example_test.go b/v2/example_test.go index 6944f2f..dd3e002 100644 --- a/v2/example_test.go +++ b/v2/example_test.go @@ -25,7 +25,12 @@ func ExampleWrapV1File() { if err != nil { panic(err) } - defer cr.Close() + defer func() { + if err := cr.Close(); err != nil { + panic(err) + } + }() + roots, err := cr.Roots() if err != nil { panic(err) diff --git a/v2/index/example_test.go b/v2/index/example_test.go index cf6d56a..9f8368d 100644 --- a/v2/index/example_test.go +++ b/v2/index/example_test.go @@ -2,6 +2,7 @@ package index_test import ( "fmt" + "io" "os" "reflect" @@ -44,16 +45,20 @@ func ExampleReadFrom() { // Frame with CID bafy2bzaced4ueelaegfs5fqu4tzsh6ywbbpfk3cxppupmxfdhbpbhzawfw5oy starts at offset 61 relative to CARv1 data payload. } -// ExampleSave unmarshalls an index from an indexed CARv2 file, and stores it as a separate +// ExampleWriteTo unmarshalls an index from an indexed CARv2 file, and stores it as a separate // file on disk. -func ExampleSave() { +func ExampleWriteTo() { // Open the CARv2 file src := "../testdata/sample-wrapped-v2.car" cr, err := carv2.OpenReader(src) if err != nil { panic(err) } - defer cr.Close() + defer func() { + if err := cr.Close(); err != nil { + panic(err) + } + }() // Read and unmarshall index within CARv2 file. idx, err := index.ReadFrom(cr.IndexReader()) @@ -63,17 +68,25 @@ func ExampleSave() { // Store the index alone onto destination file. dest := "../testdata/sample-index.carindex" - err = index.Save(idx, dest) + f, err := os.Create(dest) + if err != nil { + panic(err) + } + defer func() { + if err := f.Close(); err != nil { + panic(err) + } + }() + err = index.WriteTo(idx, f) if err != nil { panic(err) } - // Open the destination file that contains the index only. - f, err := os.Open(dest) + // Seek to the beginning of tile to read it back. + _, err = f.Seek(0, io.SeekStart) if err != nil { panic(err) } - defer f.Close() // Read and unmarshall the destination file as a separate index instance. reReadIdx, err := index.ReadFrom(f) diff --git a/v2/index/index.go b/v2/index/index.go index 669728b..1198217 100644 --- a/v2/index/index.go +++ b/v2/index/index.go @@ -4,7 +4,6 @@ import ( "encoding/binary" "fmt" "io" - "os" internalio "github.com/ipld/go-car/v2/internal/io" @@ -52,16 +51,6 @@ func New(codec multicodec.Code) (Index, error) { } } -// Save writes a generated index into the given `path` replacing the file if it exists. -func Save(idx Index, path string) error { - stream, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0o640) - if err != nil { - return err - } - defer stream.Close() - return WriteTo(idx, stream) -} - // WriteTo writes the given idx into w. // The written bytes include the index encoding. // This can then be read back using index.ReadFrom diff --git a/v2/index/index_test.go b/v2/index/index_test.go index 945ca1b..a32205d 100644 --- a/v2/index/index_test.go +++ b/v2/index/index_test.go @@ -128,33 +128,6 @@ func TestWriteTo(t *testing.T) { require.Equal(t, wantIdx, gotIdx) } -func TestSave(t *testing.T) { - // Read sample index on file - idxf, err := os.Open("../testdata/sample-index.carindex") - require.NoError(t, err) - t.Cleanup(func() { require.NoError(t, idxf.Close()) }) - - // Unmarshall to get expected index - wantIdx, err := ReadFrom(idxf) - require.NoError(t, err) - - // Save the same index at destination - dest := filepath.Join(t.TempDir(), "index-write-to-test.carindex") - require.NoError(t, Save(wantIdx, dest)) - - // Open the saved file - destF, err := os.Open(dest) - require.NoError(t, err) - t.Cleanup(func() { require.NoError(t, destF.Close()) }) - - // Read the written index back - gotIdx, err := ReadFrom(destF) - require.NoError(t, err) - - // Assert they are equal - require.Equal(t, wantIdx, gotIdx) -} - func TestMarshalledIndexStartsWithCodec(t *testing.T) { // Read sample index on file idxf, err := os.Open("../testdata/sample-index.carindex") diff --git a/v2/internal/carbs/doc.go b/v2/internal/carbs/doc.go deleted file mode 100644 index 0998753..0000000 --- a/v2/internal/carbs/doc.go +++ /dev/null @@ -1,3 +0,0 @@ -// Package carbs provides a read-only blockstore interface directly reading out of a car file. -// TODO to be refactored -package carbs diff --git a/v2/internal/carbs/util/hydrate.go b/v2/internal/carbs/util/hydrate.go deleted file mode 100644 index 96bb4c9..0000000 --- a/v2/internal/carbs/util/hydrate.go +++ /dev/null @@ -1,30 +0,0 @@ -package main - -import ( - "fmt" - "os" - - carv2 "github.com/ipld/go-car/v2" - - "github.com/ipld/go-car/v2/index" -) - -func main() { - if len(os.Args) < 2 { - fmt.Printf("Usage: hydrate \n") - return - } - db := os.Args[1] - - idx, err := carv2.GenerateIndexFromFile(db) - if err != nil { - fmt.Printf("Error generating index: %v\n", err) - return - } - - fmt.Printf("Saving...\n") - - if err := index.Save(idx, db); err != nil { - fmt.Printf("Error saving : %v\n", err) - } -} -- GitLab