github.com/fozzysec/SiaPrime@v0.0.0-20190612043147-66c8e8d11fe3/cmd/spc/stratumminer.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  
     7  	"github.com/spf13/cobra"
     8  )
     9  
    10  var (
    11  	stratumminerCmd = &cobra.Command{
    12  		Use:   "stratum-miner",
    13  		Short: "Perform stratum miner actions",
    14  		Long:  "Perform stratum miner actions and view miner status.",
    15  		Run:   wrap(stratumminercmd),
    16  	}
    17  	stratumminerStartCmd = &cobra.Command{
    18  		Use:   "start [server] [username]",
    19  		Short: "Start stratum mining to server using username",
    20  		Long:  "Start stratum mining to server using username, if the miner is already running, this command does nothing",
    21  		Run:   stratumminerstartcmd,
    22  	}
    23  
    24  	stratumminerStopCmd = &cobra.Command{
    25  		Use:   "stop",
    26  		Short: "Stop stratum mining",
    27  		Long:  "Stop stratum mining (this may take a few moments).",
    28  		Run:   wrap(stratumminerstopcmd),
    29  	}
    30  )
    31  
    32  // minerstartcmd is the handler for the command `siac stratum-miner start`.
    33  // Starts the stratum miner.
    34  func stratumminerstartcmd(cmd *cobra.Command, args []string) {
    35  	var err error
    36  	switch len(args) {
    37  	case 2:
    38  		err = httpClient.StratumMinerStartPost(args[0], args[1])
    39  	default:
    40  		cmd.UsageFunc()(cmd)
    41  		os.Exit(exitCodeUsage)
    42  	}
    43  	if err != nil {
    44  		die("Could not start stratum miner:", err)
    45  	}
    46  	fmt.Println("Stratum miner is now running.")
    47  }
    48  
    49  // stratumminerstopcmd is the handler for the command `siac stratum-miner stop`.
    50  // Stops the stratum miner.
    51  func stratumminerstopcmd() {
    52  	err := httpClient.StratumMinerStopPost()
    53  	if err != nil {
    54  		die("Could not stop stratum miner:", err)
    55  	}
    56  	fmt.Println("Stopped mining.")
    57  }
    58  
    59  // stratumminercmd is the handler for the command `siac stratum-miner`.
    60  // Prints the status of the stratum miner.
    61  func stratumminercmd() {
    62  	status, err := httpClient.StratumMinerGet()
    63  	if err != nil {
    64  		die("Could not get stratum miner status:", err)
    65  	}
    66  
    67  	miningStr := "off"
    68  	if status.Mining {
    69  		miningStr = "on"
    70  	}
    71  	fmt.Printf(`Miner status:
    72  Mining:      %s
    73  Hashrate:    %v KH/s
    74  Submissions: %v
    75  `, miningStr, status.Hashrate/1000, status.Submissions)
    76  }