forked from mirror/go-ethereum
parent
a90a170361
commit
86f9e836be
@ -0,0 +1,128 @@ |
||||
// Copyright 2016 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 <http://www.gnu.org/licenses/>.
|
||||
|
||||
package main |
||||
|
||||
import ( |
||||
"fmt" |
||||
"io/ioutil" |
||||
"os" |
||||
"path/filepath" |
||||
"runtime" |
||||
"strconv" |
||||
"strings" |
||||
|
||||
"github.com/ethereum/ethash" |
||||
"github.com/ethereum/go-ethereum/cmd/utils" |
||||
"github.com/ethereum/go-ethereum/eth" |
||||
"github.com/ethereum/go-ethereum/params" |
||||
"gopkg.in/urfave/cli.v1" |
||||
) |
||||
|
||||
var ( |
||||
makedagCommand = cli.Command{ |
||||
Action: makedag, |
||||
Name: "makedag", |
||||
Usage: "Generate ethash DAG (for testing)", |
||||
ArgsUsage: "<blockNum> <outputDir>", |
||||
Category: "MISCELLANEOUS COMMANDS", |
||||
Description: ` |
||||
The makedag command generates an ethash DAG in /tmp/dag. |
||||
|
||||
This command exists to support the system testing project. |
||||
Regular users do not need to execute it. |
||||
`, |
||||
} |
||||
versionCommand = cli.Command{ |
||||
Action: version, |
||||
Name: "version", |
||||
Usage: "Print version numbers", |
||||
ArgsUsage: " ", |
||||
Category: "MISCELLANEOUS COMMANDS", |
||||
Description: ` |
||||
The output of this command is supposed to be machine-readable. |
||||
`, |
||||
} |
||||
licenseCommand = cli.Command{ |
||||
Action: license, |
||||
Name: "license", |
||||
Usage: "Display license information", |
||||
ArgsUsage: " ", |
||||
Category: "MISCELLANEOUS COMMANDS", |
||||
} |
||||
) |
||||
|
||||
func makedag(ctx *cli.Context) error { |
||||
args := ctx.Args() |
||||
wrongArgs := func() { |
||||
utils.Fatalf(`Usage: geth makedag <block number> <outputdir>`) |
||||
} |
||||
switch { |
||||
case len(args) == 2: |
||||
blockNum, err := strconv.ParseUint(args[0], 0, 64) |
||||
dir := args[1] |
||||
if err != nil { |
||||
wrongArgs() |
||||
} else { |
||||
dir = filepath.Clean(dir) |
||||
// seems to require a trailing slash
|
||||
if !strings.HasSuffix(dir, "/") { |
||||
dir = dir + "/" |
||||
} |
||||
_, err = ioutil.ReadDir(dir) |
||||
if err != nil { |
||||
utils.Fatalf("Can't find dir") |
||||
} |
||||
fmt.Println("making DAG, this could take awhile...") |
||||
ethash.MakeDAG(blockNum, dir) |
||||
} |
||||
default: |
||||
wrongArgs() |
||||
} |
||||
return nil |
||||
} |
||||
|
||||
func version(ctx *cli.Context) error { |
||||
fmt.Println(strings.Title(clientIdentifier)) |
||||
fmt.Println("Version:", params.Version) |
||||
if gitCommit != "" { |
||||
fmt.Println("Git Commit:", gitCommit) |
||||
} |
||||
fmt.Println("Protocol Versions:", eth.ProtocolVersions) |
||||
fmt.Println("Network Id:", ctx.GlobalInt(utils.NetworkIdFlag.Name)) |
||||
fmt.Println("Go Version:", runtime.Version()) |
||||
fmt.Println("OS:", runtime.GOOS) |
||||
fmt.Printf("GOPATH=%s\n", os.Getenv("GOPATH")) |
||||
fmt.Printf("GOROOT=%s\n", runtime.GOROOT()) |
||||
return nil |
||||
} |
||||
|
||||
func license(_ *cli.Context) error { |
||||
fmt.Println(`Geth 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. |
||||
|
||||
Geth 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 geth. If not, see <http://www.gnu.org/licenses/>.
|
||||
`) |
||||
return nil |
||||
} |
Loading…
Reference in new issue