diff --git a/cmd/mining/cmd/doctor.go b/cmd/mining/cmd/doctor.go index 3f5be7d..97d7006 100644 --- a/cmd/mining/cmd/doctor.go +++ b/cmd/mining/cmd/doctor.go @@ -37,7 +37,7 @@ var doctorCmd = &cobra.Command{ Use: "doctor", Short: "Check and refresh the status of installed miners", Long: `Performs a live check for installed miners, displays their status, and updates the local cache.`, - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, args []string) error { fmt.Println("--- Mining Doctor ---") fmt.Println("Performing live check and refreshing cache...") fmt.Println() diff --git a/cmd/mining/cmd/install.go b/cmd/mining/cmd/install.go index d458c1c..fb5a011 100644 --- a/cmd/mining/cmd/install.go +++ b/cmd/mining/cmd/install.go @@ -15,7 +15,7 @@ var installCmd = &cobra.Command{ Short: "Install or update a miner", Long: `Download and install a new miner, or update an existing one to the latest version.`, Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, args []string) error { minerType := args[0] var miner mining.Miner @@ -65,8 +65,8 @@ var installCmd = &cobra.Command{ } func updateDoctorCache() error { - manager := getManager() - availableMiners := manager.ListAvailableMiners() + serviceManager := getServiceManager() + availableMiners := serviceManager.ListAvailableMiners() if len(availableMiners) == 0 { return nil } diff --git a/cmd/mining/cmd/list.go b/cmd/mining/cmd/list.go index b5b89a2..1f5cbe4 100644 --- a/cmd/mining/cmd/list.go +++ b/cmd/mining/cmd/list.go @@ -11,11 +11,11 @@ var listCmd = &cobra.Command{ Use: "list", Short: "List running and available miners", Long: `List all running miners and their status, as well as all miners that are available to be installed and started.`, - RunE: func(cmd *cobra.Command, args []string) error { - manager := getManager() + RunE: func(_ *cobra.Command, args []string) error { + serviceManager := getServiceManager() // List running miners - runningMiners := manager.ListMiners() + runningMiners := serviceManager.ListMiners() fmt.Println("Running Miners:") if len(runningMiners) == 0 { fmt.Println(" No running miners found.") @@ -30,7 +30,7 @@ var listCmd = &cobra.Command{ fmt.Println() // List available miners - availableMiners := manager.ListAvailableMiners() + availableMiners := serviceManager.ListAvailableMiners() fmt.Println("Available Miners:") if len(availableMiners) == 0 { fmt.Println(" No available miners found.") diff --git a/cmd/mining/cmd/peer.go b/cmd/mining/cmd/peer.go index 6f0fc16..3cd1c4d 100644 --- a/cmd/mining/cmd/peer.go +++ b/cmd/mining/cmd/peer.go @@ -68,7 +68,7 @@ var peerListCmd = &cobra.Command{ Use: "list", Short: "List registered peers", Long: `Display all registered peers with their connection status.`, - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, args []string) error { peerRegistry, err := getPeerRegistry() if err != nil { return fmt.Errorf("failed to get peer registry: %w", err) @@ -110,7 +110,7 @@ var peerRemoveCmd = &cobra.Command{ Short: "Remove a peer from registry", Long: `Remove a peer node from the registry. This will disconnect if connected.`, Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, args []string) error { peerID := args[0] peer := findPeerByPartialID(peerID) @@ -138,7 +138,7 @@ var peerPingCmd = &cobra.Command{ Short: "Ping a peer and update metrics", Long: `Send a ping to a peer and measure round-trip latency.`, Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, args []string) error { peerID := args[0] peer := findPeerByPartialID(peerID) diff --git a/cmd/mining/cmd/root.go b/cmd/mining/cmd/root.go index 76a345c..f0ee8be 100644 --- a/cmd/mining/cmd/root.go +++ b/cmd/mining/cmd/root.go @@ -8,7 +8,7 @@ import ( ) var ( - manager *mining.Manager + serviceManager *mining.Manager ) var rootCmd = &cobra.Command{ @@ -31,14 +31,14 @@ func initializeManager() { if len(os.Args) > 1 && os.Args[1] == "simulate" { return } - if manager == nil { - manager = mining.NewManager() + if serviceManager == nil { + serviceManager = mining.NewManager() } } -func getManager() *mining.Manager { - if manager == nil { - manager = mining.NewManager() +func getServiceManager() *mining.Manager { + if serviceManager == nil { + serviceManager = mining.NewManager() } - return manager + return serviceManager } diff --git a/cmd/mining/cmd/serve.go b/cmd/mining/cmd/serve.go index 744cb3e..87b01b2 100644 --- a/cmd/mining/cmd/serve.go +++ b/cmd/mining/cmd/serve.go @@ -27,7 +27,7 @@ var serveCmd = &cobra.Command{ Use: "serve", Short: "Start the mining service and interactive shell", Long: `Start the mining service, which provides a RESTful API for managing miners, and an interactive shell for CLI commands.`, - RunE: func(command *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, args []string) error { ctx, cancel := context.WithCancel(context.Background()) defer cancel() @@ -42,10 +42,10 @@ var serveCmd = &cobra.Command{ displayAddress := fmt.Sprintf("%s:%d", displayHostName, servePort) listenAddress := fmt.Sprintf("%s:%d", serveHost, servePort) - // manager := getManager() shares the same miner lifecycle state across `mining start`, `mining stop`, and `mining serve`. - manager := getManager() + // serviceManager := getServiceManager() shares miner lifecycle state across `mining start`, `mining stop`, and `mining serve`. + serviceManager := getServiceManager() - service, err := mining.NewService(manager, listenAddress, displayAddress, apiNamespace) + service, err := mining.NewService(serviceManager, listenAddress, displayAddress, apiNamespace) if err != nil { return fmt.Errorf("failed to create new service: %w", err) } @@ -122,20 +122,20 @@ var serveCmd = &cobra.Command{ continue } - config := &mining.Config{ + minerConfig := &mining.Config{ Pool: poolURL, Wallet: walletAddress, LogOutput: true, } - // config.Validate() rejects malformed pool and wallet values before the miner starts. - if err := config.Validate(); err != nil { + // minerConfig.Validate() rejects malformed pool and wallet values before the miner starts. + if err := minerConfig.Validate(); err != nil { fmt.Fprintf(os.Stderr, "Error: Invalid configuration: %v\n", err) fmt.Print(">> ") continue } - miner, err := manager.StartMiner(context.Background(), minerType, config) + miner, err := serviceManager.StartMiner(context.Background(), minerType, minerConfig) if err != nil { fmt.Fprintf(os.Stderr, "Error starting miner: %v\n", err) } else { @@ -147,7 +147,7 @@ var serveCmd = &cobra.Command{ fmt.Println("Error: status command requires miner name, for example `status xmrig`") } else { minerName := commandArgs[0] - miner, err := manager.GetMiner(minerName) + miner, err := serviceManager.GetMiner(minerName) if err != nil { fmt.Fprintf(os.Stderr, "Error getting miner status: %v\n", err) } else { @@ -169,7 +169,7 @@ var serveCmd = &cobra.Command{ fmt.Println("Error: stop command requires miner name, for example `stop xmrig`") } else { minerName := commandArgs[0] - err := manager.StopMiner(context.Background(), minerName) + err := serviceManager.StopMiner(context.Background(), minerName) if err != nil { fmt.Fprintf(os.Stderr, "Error stopping miner: %v\n", err) } else { @@ -177,7 +177,7 @@ var serveCmd = &cobra.Command{ } } case "list": - miners := manager.ListMiners() + miners := serviceManager.ListMiners() if len(miners) == 0 { fmt.Println("No miners currently running.") } else { @@ -206,8 +206,8 @@ var serveCmd = &cobra.Command{ case <-ctx.Done(): } - // manager.Stop() stops miner goroutines and closes the shared manager before exit. - manager.Stop() + // serviceManager.Stop() stops miner goroutines and closes the shared service state before exit. + serviceManager.Stop() fmt.Println("Mining service stopped.") return nil diff --git a/cmd/mining/cmd/simulate.go b/cmd/mining/cmd/simulate.go index ccfc64f..14eff5b 100644 --- a/cmd/mining/cmd/simulate.go +++ b/cmd/mining/cmd/simulate.go @@ -45,7 +45,7 @@ Available presets: cpu-high - High-end CPU (15 kH/s, rx/0) gpu-ethash - GPU mining ETH (30 MH/s, ethash) gpu-kawpow - GPU mining RVN (15 MH/s, kawpow)`, - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, args []string) error { ctx, cancel := context.WithCancel(context.Background()) defer cancel() @@ -60,8 +60,8 @@ Available presets: displayAddress := fmt.Sprintf("%s:%d", displayHost, servePort) listenAddress := fmt.Sprintf("%s:%d", serveHost, servePort) - // manager := mining.NewManagerForSimulation() // keeps simulated miners isolated from the real autostart state. - manager := mining.NewManagerForSimulation() + // serviceManager := mining.NewManagerForSimulation() // keeps simulated miners isolated from the real autostart state. + serviceManager := mining.NewManagerForSimulation() // getSimulatedConfig(0) // returns a config such as sim-cpu-medium-001. for i := 0; i < simulatedMinerCount; i++ { @@ -73,8 +73,8 @@ Available presets: return fmt.Errorf("failed to start simulated miner %d: %w", i, err) } - // manager.RegisterMiner(simulatedMiner) // makes the simulated miner visible to `mining serve`. - if err := manager.RegisterMiner(simulatedMiner); err != nil { + // serviceManager.RegisterMiner(simulatedMiner) // makes the simulated miner visible to `mining serve`. + if err := serviceManager.RegisterMiner(simulatedMiner); err != nil { return fmt.Errorf("failed to register simulated miner %d: %w", i, err) } @@ -82,8 +82,8 @@ Available presets: simulatedConfig.Name, simulatedConfig.Algorithm, simulatedConfig.BaseHashrate) } - // service, err := mining.NewService(manager, listenAddress, displayAddress, apiNamespace) // serves the simulator on http://127.0.0.1:9090. - service, err := mining.NewService(manager, listenAddress, displayAddress, apiNamespace) + // service, err := mining.NewService(serviceManager, listenAddress, displayAddress, apiNamespace) // serves the simulator on http://127.0.0.1:9090. + service, err := mining.NewService(serviceManager, listenAddress, displayAddress, apiNamespace) if err != nil { return fmt.Errorf("failed to create new service: %w", err) } @@ -113,9 +113,9 @@ Available presets: case <-ctx.Done(): } - // for _, miner := range manager.ListMiners() { manager.StopMiner(context.Background(), miner.GetName()) } // stops every simulated miner before exit. - for _, miner := range manager.ListMiners() { - manager.StopMiner(context.Background(), miner.GetName()) + // for _, miner := range serviceManager.ListMiners() { serviceManager.StopMiner(context.Background(), miner.GetName()) } // stops every simulated miner before exit. + for _, miner := range serviceManager.ListMiners() { + serviceManager.StopMiner(context.Background(), miner.GetName()) } fmt.Println("Simulation stopped.") diff --git a/cmd/mining/cmd/start.go b/cmd/mining/cmd/start.go index 07520c9..700dafc 100644 --- a/cmd/mining/cmd/start.go +++ b/cmd/mining/cmd/start.go @@ -19,14 +19,14 @@ var startCmd = &cobra.Command{ Short: "Start a new miner", Long: `Start a new miner with the specified configuration.`, Args: cobra.ExactArgs(1), - RunE: func(command *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, args []string) error { minerType := args[0] - config := &mining.Config{ + minerConfig := &mining.Config{ Pool: poolAddress, Wallet: walletAddress, } - miner, err := getManager().StartMiner(context.Background(), minerType, config) + miner, err := getServiceManager().StartMiner(context.Background(), minerType, minerConfig) if err != nil { return fmt.Errorf("failed to start miner: %w", err) } diff --git a/cmd/mining/cmd/status.go b/cmd/mining/cmd/status.go index 6d24757..125a749 100644 --- a/cmd/mining/cmd/status.go +++ b/cmd/mining/cmd/status.go @@ -15,11 +15,11 @@ var statusCmd = &cobra.Command{ Short: "Get status of a running miner", Long: `Get detailed status information for a specific running miner.`, Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, args []string) error { minerName := args[0] - manager := getManager() + serviceManager := getServiceManager() - miner, err := manager.GetMiner(minerName) + miner, err := serviceManager.GetMiner(minerName) if err != nil { return fmt.Errorf("failed to get miner: %w", err) } diff --git a/cmd/mining/cmd/stop.go b/cmd/mining/cmd/stop.go index 93e5066..ce36bb7 100644 --- a/cmd/mining/cmd/stop.go +++ b/cmd/mining/cmd/stop.go @@ -13,11 +13,11 @@ var stopCmd = &cobra.Command{ Short: "Stop a running miner", Long: `Stop a running miner by its name.`, Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, args []string) error { minerName := args[0] - manager := getManager() + serviceManager := getServiceManager() - if err := manager.StopMiner(context.Background(), minerName); err != nil { + if err := serviceManager.StopMiner(context.Background(), minerName); err != nil { return fmt.Errorf("failed to stop miner: %w", err) } diff --git a/cmd/mining/cmd/uninstall.go b/cmd/mining/cmd/uninstall.go index 0eafd5c..95f1f74 100644 --- a/cmd/mining/cmd/uninstall.go +++ b/cmd/mining/cmd/uninstall.go @@ -13,12 +13,12 @@ var uninstallCmd = &cobra.Command{ Short: "Uninstall a miner", Long: `Stops the miner if it is running, removes all associated files, and updates the configuration.`, Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, args []string) error { minerType := args[0] - manager := getManager() // getManager() returns the shared manager used by `mining uninstall`. + serviceManager := getServiceManager() // getServiceManager() returns the shared manager used by `mining uninstall`. fmt.Printf("Uninstalling %s...\n", minerType) - if err := manager.UninstallMiner(context.Background(), minerType); err != nil { + if err := serviceManager.UninstallMiner(context.Background(), minerType); err != nil { return fmt.Errorf("failed to uninstall miner: %w", err) } diff --git a/cmd/mining/cmd/update.go b/cmd/mining/cmd/update.go index a8bad6b..45cf9a6 100644 --- a/cmd/mining/cmd/update.go +++ b/cmd/mining/cmd/update.go @@ -29,7 +29,7 @@ var updateCmd = &cobra.Command{ Use: "update", Short: "Check for updates to installed miners", Long: `Checks for new versions of all installed miners and notifies you if an update is available.`, - RunE: func(cmd *cobra.Command, args []string) error { + RunE: func(_ *cobra.Command, args []string) error { fmt.Println("Checking for updates...") homeDir, err := os.UserHomeDir() diff --git a/cmd/mining/main.go b/cmd/mining/main.go index 59d49d9..c0bed5b 100644 --- a/cmd/mining/main.go +++ b/cmd/mining/main.go @@ -14,7 +14,7 @@ import ( // @host localhost:8080 // @BasePath /api/v1/mining func main() { - // If no command is provided, default to "serve" + // go run ./cmd/mining starts the HTTP API by default when no subcommand is provided. if len(os.Args) == 1 { os.Args = append(os.Args, "serve") }