86 lines
1.6 KiB
Go
86 lines
1.6 KiB
Go
|
package lotus_worker
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
"os"
|
||
|
|
||
|
"github.com/filecoin-project/lotus/api"
|
||
|
logging "github.com/ipfs/go-log"
|
||
|
"golang.org/x/xerrors"
|
||
|
"gopkg.in/urfave/cli.v2"
|
||
|
|
||
|
"github.com/filecoin-project/lotus/build"
|
||
|
lcli "github.com/filecoin-project/lotus/cli"
|
||
|
)
|
||
|
|
||
|
var log = logging.Logger("main")
|
||
|
|
||
|
func main() {
|
||
|
logging.SetLogLevel("*", "INFO")
|
||
|
|
||
|
log.Info("Starting lotus worker")
|
||
|
|
||
|
local := []*cli.Command{
|
||
|
runCmd,
|
||
|
}
|
||
|
|
||
|
app := &cli.App{
|
||
|
Name: "lotus-worker",
|
||
|
Usage: "Remote storage miner worker",
|
||
|
Version: build.Version,
|
||
|
Flags: []cli.Flag{
|
||
|
&cli.StringFlag{
|
||
|
Name: "repo",
|
||
|
EnvVars: []string{"WORKER_PATH"},
|
||
|
Value: "~/.lotusworker", // TODO: Consider XDG_DATA_HOME
|
||
|
},
|
||
|
&cli.StringFlag{
|
||
|
Name: "minerrepo",
|
||
|
EnvVars: []string{"LOTUS_MINER_PATH"},
|
||
|
Value: "~/.lotusstorage", // TODO: Consider XDG_DATA_HOME
|
||
|
},
|
||
|
},
|
||
|
|
||
|
Commands: local,
|
||
|
}
|
||
|
|
||
|
if err := app.Run(os.Args); err != nil {
|
||
|
log.Warn(err)
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var runCmd = &cli.Command{
|
||
|
Name: "run",
|
||
|
Usage: "Start lotus fountain",
|
||
|
Flags: []cli.Flag{
|
||
|
&cli.StringFlag{
|
||
|
Name: "pullEndpoint",
|
||
|
Value: "127.0.0.1:30003",
|
||
|
},
|
||
|
},
|
||
|
Action: func(cctx *cli.Context) error {
|
||
|
nodeApi, closer, err := lcli.GetStorageMinerAPI(cctx)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
defer closer()
|
||
|
ctx := lcli.ReqContext(cctx)
|
||
|
|
||
|
v, err := nodeApi.Version(ctx)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
if v.APIVersion != build.APIVersion {
|
||
|
return xerrors.Errorf("lotus-daemon API version doesn't match: local: ", api.Version{APIVersion: build.APIVersion})
|
||
|
}
|
||
|
|
||
|
go func() {
|
||
|
<-ctx.Done()
|
||
|
os.Exit(0)
|
||
|
}()
|
||
|
|
||
|
return http.ListenAndServe(cctx.String("pullEndpoint"), nil)
|
||
|
},
|
||
|
}
|