91 lines
1.9 KiB
Go
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)
|
||
|
}
|