package main import ( "context" "os" logging "github.com/ipfs/go-log/v2" "github.com/urfave/cli/v2" "go.opencensus.io/trace" "golang.org/x/xerrors" "github.com/filecoin-project/go-address" "github.com/filecoin-project/lotus/api" "github.com/filecoin-project/lotus/build" lcli "github.com/filecoin-project/lotus/cli" "github.com/filecoin-project/lotus/lib/lotuslog" "github.com/filecoin-project/lotus/lib/tracing" "github.com/filecoin-project/lotus/node/repo" ) var log = logging.Logger("main") const FlagStorageRepo = "storagerepo" func main() { lotuslog.SetupLogLevels() local := []*cli.Command{ actorCmd, storageDealsCmd, retrievalDealsCmd, infoCmd, initCmd, rewardsCmd, runCmd, stopCmd, sectorsCmd, storageCmd, workersCmd, provingCmd, } jaeger := tracing.SetupJaegerTracing("lotus") defer func() { if jaeger != nil { jaeger.Flush() } }() for _, cmd := range local { cmd := cmd originBefore := cmd.Before cmd.Before = func(cctx *cli.Context) error { trace.UnregisterExporter(jaeger) jaeger = tracing.SetupJaegerTracing("lotus/" + cmd.Name) if originBefore != nil { return originBefore(cctx) } return nil } } app := &cli.App{ Name: "lotus-storage-miner", Usage: "Filecoin decentralized storage network storage miner", Version: build.UserVersion(), EnableBashCompletion: true, Flags: []cli.Flag{ &cli.StringFlag{ Name: "maddr", Value: "", }, &cli.StringFlag{ Name: "repo", EnvVars: []string{"LOTUS_PATH"}, Hidden: true, Value: "~/.lotus", // TODO: Consider XDG_DATA_HOME }, &cli.StringFlag{ Name: FlagStorageRepo, EnvVars: []string{"LOTUS_STORAGE_PATH"}, Value: "~/.lotusstorage", // TODO: Consider XDG_DATA_HOME }, }, Commands: append(local, lcli.CommonCommands...), } app.Setup() app.Metadata["repoType"] = repo.StorageMiner if err := app.Run(os.Args); err != nil { log.Warnf("%+v", err) os.Exit(1) } } func getActorAddress(ctx context.Context, nodeApi api.StorageMiner, overrideMaddr string) (maddr address.Address, err error) { if overrideMaddr != "" { maddr, err = address.NewFromString(overrideMaddr) if err != nil { return maddr, err } } maddr, err = nodeApi.ActorAddress(ctx) if err != nil { return maddr, xerrors.Errorf("getting actor address: %w", err) } return maddr, nil }