github.com/palisadeinc/bor@v0.0.0-20230615125219-ab7196213d15/cmd/clidoc/main.go (about)

     1  package main
     2  
     3  import (
     4  	"flag"
     5  	"log"
     6  	"os"
     7  	"path/filepath"
     8  	"sort"
     9  	"strings"
    10  
    11  	"github.com/ethereum/go-ethereum/internal/cli"
    12  )
    13  
    14  const (
    15  	DefaultDir      string = "./docs/cli"
    16  	DefaultMainPage string = "README.md"
    17  )
    18  
    19  func main() {
    20  	commands := cli.Commands()
    21  
    22  	dest := flag.String("d", DefaultDir, "Destination directory where the docs will be generated")
    23  	flag.Parse()
    24  
    25  	dirPath := filepath.Join(".", *dest)
    26  	if err := os.MkdirAll(dirPath, os.ModePerm); err != nil {
    27  		log.Fatalln("Failed to create directory.", err)
    28  	}
    29  
    30  	mainPage := []string{
    31  		"# Bor command line interface",
    32  		"## Commands",
    33  	}
    34  
    35  	keys := make([]string, len(commands))
    36  	i := 0
    37  
    38  	for k := range commands {
    39  		keys[i] = k
    40  		i++
    41  	}
    42  
    43  	sort.Strings(keys)
    44  
    45  	for _, name := range keys {
    46  		cmd, err := commands[name]()
    47  		if err != nil {
    48  			log.Fatalf("Error occurred when inspecting bor command %s: %s", name, err)
    49  		}
    50  
    51  		fileName := strings.ReplaceAll(name, " ", "_") + ".md"
    52  
    53  		overwriteFile(filepath.Join(dirPath, fileName), cmd.MarkDown())
    54  		mainPage = append(mainPage, "- [```"+name+"```](./"+fileName+")")
    55  	}
    56  
    57  	overwriteFile(filepath.Join(dirPath, DefaultMainPage), strings.Join(mainPage, "\n\n"))
    58  
    59  	os.Exit(0)
    60  }
    61  
    62  func overwriteFile(filePath string, text string) {
    63  	log.Printf("Writing to page: %s\n", filePath)
    64  
    65  	f, err := os.Create(filePath)
    66  	if err != nil {
    67  		log.Fatalln(err)
    68  	}
    69  
    70  	if _, err = f.WriteString(text); err != nil {
    71  		log.Fatalln(err)
    72  	}
    73  
    74  	if err = f.Close(); err != nil {
    75  		log.Fatalln(err)
    76  	}
    77  }