Archived
1
0
This repository has been archived on 2023-08-12. You can view files and clone it, but cannot push or open issues or pull requests.
Jeff Becker 3a6cbf9de6 move srndv2 to nntpchan repo with vendored deps so that nothing breaks every again
this deprecates the github.com/majestrate/srndv2 repo
2017-04-03 10:00:38 -04:00

91 lines
1.9 KiB
Go

//
// tools.go -- srndv2 cli tool functions
//
package srnd
import (
"log"
"os"
)
// worker for thumbnailer tool
func rethumb(chnl chan string, store ArticleStore, missing bool) {
for {
fname, has := <-chnl
if !has {
return
}
thm := store.ThumbnailFilepath(fname)
if CheckFile(thm) {
if missing {
continue
}
log.Println("remove old thumbnail", thm)
os.Remove(thm)
}
log.Println("generate thumbnail for", fname)
store.GenerateThumbnail(fname)
}
}
// run thumbnailer
func ThumbnailTool(threads int, missing bool) {
conf := ReadConfig()
if conf == nil {
log.Println("cannot load config, ReadConfig() returned nil")
return
}
store := createArticleStore(conf.store, nil)
reThumbnail(threads, store, missing)
}
func RegenTool() {
conf := ReadConfig()
db_host := conf.database["host"]
db_port := conf.database["port"]
db_user := conf.database["user"]
db_passwd := conf.database["password"]
db_type := conf.database["type"]
db_sche := conf.database["schema"]
db := NewDatabase(db_type, db_sche, db_host, db_port, db_user, db_passwd)
groups := db.GetAllNewsgroups()
if groups != nil {
for _, group := range groups {
go regenGroup(group, db)
}
}
}
func regenGroup(name string, db Database) {
log.Println("regenerating", name)
}
// run thumbnailer tool with unspecified number of threads
func reThumbnail(threads int, store ArticleStore, missing bool) {
chnl := make(chan string)
for threads > 0 {
go rethumb(chnl, store, missing)
threads--
}
files, err := store.GetAllAttachments()
if err == nil {
for _, fname := range files {
chnl <- fname
}
} else {
log.Println("failed to read attachment directory", err)
}
close(chnl)
log.Println("Rethumbnailing done")
}
// generate a keypair from the command line
func KeygenTool() {
pub, sec := newSignKeypair()
log.Println("public key:", pub)
log.Println("secret key:", sec)
}