package cmd import ( "fmt" "github.com/runescape-wiki/rsw/internal/htmlconv" "github.com/runescape-wiki/rsw/internal/render" "github.com/runescape-wiki/rsw/internal/wiki" "github.com/spf13/cobra" ) func newPageCmd() *cobra.Command { cmd := &cobra.Command{ Use: "page ", Short: "Fetch and display a wiki page", Long: `Fetches a wiki page and renders it as markdown. Examples: rsw osrs page "Dragon scimitar" rsw osrs page "Mining" rsw rs3 page "Archaeology"`, Args: cobra.MinimumNArgs(1), RunE: func(cmd *cobra.Command, args []string) error { title := args[0] client := wiki.NewClient(GameBaseURL()) if Raw() { page, err := client.GetPage(title) if err != nil { return fmt.Errorf("failed to fetch page: %w", err) } fmt.Println(page.Wikitext) return nil } page, err := client.GetPageHTML(title) if err != nil { return fmt.Errorf("failed to fetch page: %w", err) } md := render.New() md.H1(page.Title) md.Line(htmlconv.Convert(page.HTML)) fmt.Print(md.String()) return nil }, } return cmd } func init() { RegisterCommand(newPageCmd) }