Initial commit

This commit is contained in:
2026-03-05 01:13:19 -06:00
commit 1ae223a1dc
21 changed files with 2404 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
package cmd
import (
"github.com/spf13/cobra"
)
// osrsCmd and rs3Cmd act as game-scoped parents.
// All real subcommands are registered under both via factory functions.
var osrsCmd = &cobra.Command{
Use: "osrs",
Short: "Query the Old School RuneScape Wiki",
PersistentPreRun: func(cmd *cobra.Command, args []string) {
game = "osrs"
},
}
var rs3Cmd = &cobra.Command{
Use: "rs3",
Short: "Query the RuneScape 3 Wiki",
PersistentPreRun: func(cmd *cobra.Command, args []string) {
game = "rs3"
},
}
func init() {
rootCmd.AddCommand(osrsCmd)
rootCmd.AddCommand(rs3Cmd)
}
// commandFactories holds functions that create fresh command instances.
// Each subcommand registers a factory at init time.
var commandFactories []func() *cobra.Command
// RegisterCommand adds a command factory. Both osrs and rs3 will get
// independent instances of the command.
func RegisterCommand(factory func() *cobra.Command) {
commandFactories = append(commandFactories, factory)
}
// wireCommands creates and attaches all subcommands to both game parents.
// Called from root.go's init after all subcommand init()s have run.
func wireCommands() {
for _, factory := range commandFactories {
osrsCmd.AddCommand(factory())
rs3Cmd.AddCommand(factory())
}
}