github.com/Ptt-official-app/go-bbs@v0.12.0/cmd/bbstool/articles.go (about) 1 package main 2 3 import ( 4 "flag" 5 "fmt" 6 "os" 7 8 "github.com/Ptt-official-app/go-bbs" 9 ) 10 11 func showBoardArticleList() { 12 db, err := openDB() 13 if err != nil { 14 fmt.Println("openDB:", err) 15 } 16 inputArgs := parseArgsToMap(flag.Args()) 17 18 // fmt.Println(inputArgs) 19 20 boardID, ok := inputArgs["board"].(string) 21 if !ok { 22 fmt.Println("please provide board argument") 23 return 24 } 25 26 records, err := db.ReadBoardArticleRecordsFile(boardID) 27 28 for _, r := range records { 29 if r.Filename() == "" { 30 continue 31 } 32 fmt.Printf("%s % 12s %s %s\n", r.Filename(), r.Owner(), r.Date(), r.Title()) 33 } 34 } 35 36 func addBoardArticle() { 37 db, err := openDB() 38 if err != nil { 39 fmt.Println("openDB:", err) 40 } 41 inputArgs := parseArgsToMap(flag.Args()) 42 43 boardID, ok := inputArgs["board"].(string) 44 if !ok { 45 fmt.Println("please provide board argument") 46 return 47 } 48 49 owner, ok := inputArgs["owner"].(string) 50 if !ok { 51 fmt.Println("please provide owner argument") 52 return 53 } 54 55 date, ok := inputArgs["date"].(string) 56 if !ok { 57 fmt.Println("please provide date argument") 58 return 59 } 60 61 title, ok := inputArgs["title"].(string) 62 if !ok { 63 fmt.Println("please provide title argument") 64 return 65 } 66 67 content, contentOk := inputArgs["content"].(string) 68 contentFile, inputFileOk := inputArgs["content_file"].(string) 69 if !contentOk && !inputFileOk { 70 fmt.Println("please provide content or content_file") 71 } 72 73 if !contentOk { 74 contentData, err := os.ReadFile(contentFile) 75 if err != nil { 76 fmt.Println("readfile error:", err) 77 return 78 } 79 content = string(contentData) 80 } 81 82 record, err := db.CreateArticleRecord(boardID, owner, date, title) 83 if err != nil { 84 fmt.Println("show_article_list: NewArticleRecord: ", err) 85 return 86 } 87 err = db.AddArticleRecordFileRecord(boardID, record) 88 if err != nil { 89 fmt.Println("AddArticleRecordFileRecord error:", err) 90 return 91 } 92 93 err = db.WriteBoardArticleFile(boardID, record.Filename(), bbs.Utf8ToBig5(content)) 94 if err != nil { 95 fmt.Println("WriteBoardArticleFile error: ", err) 96 return 97 } 98 fmt.Printf("new filename: %s\n", record.Filename()) 99 return 100 101 } 102 103 func showBoardArticle() { 104 db, err := openDB() 105 if err != nil { 106 fmt.Println("openDB:", err) 107 } 108 inputArgs := parseArgsToMap(flag.Args()) 109 110 boardID, ok := inputArgs["board"].(string) 111 if !ok { 112 fmt.Println("please provide board argument") 113 return 114 } 115 116 filename, ok := inputArgs["filename"].(string) 117 if !ok { 118 fmt.Println("please provide filename argument") 119 return 120 } 121 122 data, err := db.ReadBoardArticleFile(boardID, filename) 123 if err != nil { 124 fmt.Println("ReadrBoardArticleFile error: %w", err) 125 return 126 } 127 fmt.Printf("filecontent: \n%s\n", bbs.Big5ToUtf8(data)) 128 return 129 130 }