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)
}