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 }