// Copyright 2017 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 . package main import ( "encoding/json" "fmt" "os" "strings" "github.com/ethereum/go-ethereum/cmd/utils" "github.com/urfave/cli/v2" ) // getPassphrase obtains a passphrase given by the user. It first checks the // --passfile command line flag and ultimately prompts the user for a // passphrase. func getPassphrase(ctx *cli.Context, confirmation bool) string { // Look for the --passwordfile flag. passphraseFile := ctx.String(passphraseFlag.Name) if passphraseFile != "" { content, err := os.ReadFile(passphraseFile) if err != nil { utils.Fatalf("Failed to read password file '%s': %v", passphraseFile, err) } return strings.TrimRight(string(content), "\r\n") } // Otherwise prompt the user for the passphrase. return utils.GetPassPhrase("", confirmation) } // mustPrintJSON prints the JSON encoding of the given object and // exits the program with an error message when the marshaling fails. func mustPrintJSON(jsonObject interface{}) { str, err := json.MarshalIndent(jsonObject, "", " ") if err != nil { utils.Fatalf("Failed to marshal JSON object: %v", err) } fmt.Println(string(str)) }