frostfs-node/cmd/neofs-lens/internal/commands/list/list.go
Leonard Lyubich 1c30414a6c [#1454] Upgrade NeoFS SDK Go module with new IDs
Core changes:
 * avoid package-colliding variable naming
 * avoid using pointers to IDs where unnecessary
 * avoid using `idSDK` import alias pattern
 * use `EncodeToString` for protocol string calculation and `String` for
  printing

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2022-06-01 17:41:45 +03:00

73 lines
1.6 KiB
Go

package cmdlist
import (
"fmt"
"io"
common "github.com/nspcc-dev/neofs-node/cmd/neofs-lens/internal"
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/blobovnicza"
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/writecache"
oid "github.com/nspcc-dev/neofs-sdk-go/object/id"
"github.com/spf13/cobra"
)
const (
flagFile = "path"
flagWriteCache = "writecache"
)
var (
vPath string
vWriteCache bool
)
func init() {
Command.Flags().StringVar(&vPath, flagFile, "",
"Path to storage engine component",
)
_ = Command.MarkFlagFilename(flagFile)
_ = Command.MarkFlagRequired(flagFile)
Command.Flags().BoolVar(&vWriteCache, flagWriteCache, false,
"Process write-cache",
)
}
var Command = &cobra.Command{
Use: "list",
Short: "Object listing",
Long: `List all objects stored in storage engine component.`,
Run: func(cmd *cobra.Command, args []string) {
// other targets can be supported
w := cmd.OutOrStderr()
wAddr := func(addr oid.Address) error {
_, err := io.WriteString(w, fmt.Sprintf("%s\n", addr))
return err
}
if vWriteCache {
db, err := writecache.OpenDB(vPath, true)
common.ExitOnErr(cmd, common.Errf("could not open write-cache db: %w", err))
defer db.Close()
err = writecache.IterateDB(db, wAddr)
common.ExitOnErr(cmd, common.Errf("write-cache iterator failure: %w", err))
return
}
blz := blobovnicza.New(
blobovnicza.WithPath(vPath),
blobovnicza.ReadOnly(),
)
common.ExitOnErr(cmd, blz.Open())
defer blz.Close()
err := blobovnicza.IterateAddresses(blz, wAddr)
common.ExitOnErr(cmd, common.Errf("blobovnicza iterator failure: %w", err))
},
}