From 1ecf2860cff6e4da75abbd1e6b30a9b1d69c5a12 Mon Sep 17 00:00:00 2001 From: holisticode Date: Thu, 7 Feb 2019 07:51:24 -0500 Subject: cmd/swarm: hashes command (#19008) (cherry picked from commit 7f55b0cbd8618a1b0de8d7e37d2b0143ebae4abf) --- cmd/swarm/explore.go | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++ cmd/swarm/main.go | 2 ++ 2 files changed, 61 insertions(+) create mode 100644 cmd/swarm/explore.go (limited to 'cmd/swarm') diff --git a/cmd/swarm/explore.go b/cmd/swarm/explore.go new file mode 100644 index 000000000..5b5b8bf41 --- /dev/null +++ b/cmd/swarm/explore.go @@ -0,0 +1,59 @@ +// Copyright 2019 The go-ethereum Authors +// This file is part of go-ethereum. +// +// go-ethereum is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// go-ethereum is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with go-ethereum. If not, see . + +// Command bzzhash computes a swarm tree hash. +package main + +import ( + "context" + "fmt" + "os" + + "github.com/ethereum/go-ethereum/cmd/utils" + "github.com/ethereum/go-ethereum/swarm/storage" + "gopkg.in/urfave/cli.v1" +) + +var hashesCommand = cli.Command{ + Action: hashes, + CustomHelpTemplate: helpTemplate, + Name: "hashes", + Usage: "print all hashes of a file to STDOUT", + ArgsUsage: "", + Description: "Prints all hashes of a file to STDOUT", +} + +func hashes(ctx *cli.Context) { + args := ctx.Args() + if len(args) < 1 { + utils.Fatalf("Usage: swarm hashes ") + } + f, err := os.Open(args[0]) + if err != nil { + utils.Fatalf("Error opening file " + args[1]) + } + defer f.Close() + + fileStore := storage.NewFileStore(&storage.FakeChunkStore{}, storage.NewFileStoreParams()) + refs, err := fileStore.GetAllReferences(context.TODO(), f, false) + if err != nil { + utils.Fatalf("%v\n", err) + } else { + for _, r := range refs { + fmt.Println(r.String()) + } + } +} diff --git a/cmd/swarm/main.go b/cmd/swarm/main.go index 53888b615..8af5d8c32 100644 --- a/cmd/swarm/main.go +++ b/cmd/swarm/main.go @@ -142,6 +142,8 @@ func init() { dbCommand, // See config.go DumpConfigCommand, + // hashesCommand + hashesCommand, } // append a hidden help subcommand to all commands that have subcommands -- cgit