Fantom-foundation/go-lachesis

View on GitHub
cmd/acc-gen/main.go

Summary

Maintainability
A
0 mins
Test Coverage
package main

import (
    "encoding/json"
    "fmt"
    "math/big"
    "os"
    "os/signal"
    "sort"
    "syscall"

    "github.com/ethereum/go-ethereum/params"
    "gopkg.in/urfave/cli.v1"

    "github.com/Fantom-foundation/go-lachesis/flags"
    "github.com/Fantom-foundation/go-lachesis/lachesis/genesis"
    _ "github.com/Fantom-foundation/go-lachesis/version"
)

var (
    // Git SHA1 commit hash of the release (set via linker flags).
    gitCommit = ""
    gitDate   = ""
    // The app that holds all commands and flags.
    app = flags.NewApp(gitCommit, gitDate, "the fake account generator CLI")

    generatorFlags = []cli.Flag{
        FromFlag,
        CountFlag,
    }
)

// init the CLI app.
func init() {
    app.Action = generatorMain
    app.Version = params.VersionWithCommit(gitCommit, gitDate)

    app.Commands = []cli.Command{}
    sort.Sort(cli.CommandsByName(app.Commands))

    app.Flags = append(app.Flags, generatorFlags...)
}

func main() {
    if err := app.Run(os.Args); err != nil {
        fmt.Fprintln(os.Stderr, err)
        os.Exit(1)
    }
}

// generatorMain is the main entry point.
func generatorMain(ctx *cli.Context) error {
    sigs := make(chan os.Signal, 1)
    signal.Notify(sigs, os.Interrupt, syscall.SIGTERM)

    from := getFrom(ctx)
    count := getCount(ctx)

    balance := genesis.Account{
        Balance: big.NewInt(1e18),
    }
    jsonData, err := json.Marshal(balance)
    if err != nil {
        return err
    }

    comma := ""
    fmt.Fprint(os.Stdout, "{")
    defer fmt.Fprintf(os.Stdout, `}`)
    for addr := range NewAccs(from, count, sigs) {
        fmt.Fprintf(os.Stdout, "%s%q: %s\n", comma, addr.Hex(), string(jsonData))
        comma = ","
    }

    return nil
}