Add option to import macros/reminders from old install
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
7439793823
commit
f6e8ce25b3
1 changed files with 23 additions and 0 deletions
23
main.go
23
main.go
|
@ -4,6 +4,7 @@ import (
|
||||||
"flag"
|
"flag"
|
||||||
"log"
|
"log"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"git.fromouter.space/crunchy-rocks/clessy-ng/modules"
|
"git.fromouter.space/crunchy-rocks/clessy-ng/modules"
|
||||||
|
@ -34,8 +35,11 @@ func checkErr(err error, message string, args ...interface{}) {
|
||||||
func main() {
|
func main() {
|
||||||
disable := flag.String("disable", "", "Blacklist mods (separated by comma)")
|
disable := flag.String("disable", "", "Blacklist mods (separated by comma)")
|
||||||
enable := flag.String("enable", "", "Whitelist mods (separated by comma)")
|
enable := flag.String("enable", "", "Whitelist mods (separated by comma)")
|
||||||
|
macrofile := flag.String("import-macros", "", "If specified, path to JSON file containing macros to import to DB")
|
||||||
|
remindfile := flag.String("import-reminders", "", "If specified, path to JSON file containing reminders to import to DB")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
|
// Make Telegram API client
|
||||||
api := tg.MakeAPIClient(utils.RequireEnv("CLESSY_TOKEN"))
|
api := tg.MakeAPIClient(utils.RequireEnv("CLESSY_TOKEN"))
|
||||||
name, err := api.GetMe()
|
name, err := api.GetMe()
|
||||||
checkErr(err, "could not retrieve bot info")
|
checkErr(err, "could not retrieve bot info")
|
||||||
|
@ -45,6 +49,23 @@ func main() {
|
||||||
checkErr(err, "could not open database")
|
checkErr(err, "could not open database")
|
||||||
defer db.Close()
|
defer db.Close()
|
||||||
|
|
||||||
|
// Perform imports
|
||||||
|
if *macrofile != "" {
|
||||||
|
byt, err := os.ReadFile(*macrofile)
|
||||||
|
checkErr(err, "could not load macro file")
|
||||||
|
|
||||||
|
db.Set([]byte("mod/macros/data"), byt, &pebble.WriteOptions{Sync: true})
|
||||||
|
log.Println("Imported macros")
|
||||||
|
}
|
||||||
|
if *remindfile != "" {
|
||||||
|
byt, err := os.ReadFile(*macrofile)
|
||||||
|
checkErr(err, "could not load macro file")
|
||||||
|
|
||||||
|
db.Set([]byte("mod/macros/data"), byt, &pebble.WriteOptions{Sync: true})
|
||||||
|
log.Println("Imported reminders")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pick modules
|
||||||
toActivate := make(map[string]modules.Module)
|
toActivate := make(map[string]modules.Module)
|
||||||
if *disable != "" {
|
if *disable != "" {
|
||||||
for _, modname := range strings.Split(*disable, ",") {
|
for _, modname := range strings.Split(*disable, ",") {
|
||||||
|
@ -60,6 +81,7 @@ func main() {
|
||||||
toActivate = mods
|
toActivate = mods
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Initialize modules
|
||||||
for modname, mod := range toActivate {
|
for modname, mod := range toActivate {
|
||||||
log.Printf("Initializing %s", modname)
|
log.Printf("Initializing %s", modname)
|
||||||
err := mod.Initialize(modules.ModuleOptions{
|
err := mod.Initialize(modules.ModuleOptions{
|
||||||
|
@ -70,6 +92,7 @@ func main() {
|
||||||
checkErr(err, "Starting module %s failed with error", modname)
|
checkErr(err, "Starting module %s failed with error", modname)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set webhook and handle calls
|
||||||
webhook := utils.RequireEnv("CLESSY_WEBHOOK")
|
webhook := utils.RequireEnv("CLESSY_WEBHOOK")
|
||||||
uri, err := url.Parse(webhook)
|
uri, err := url.Parse(webhook)
|
||||||
checkErr(err, "Specified webhook is not a valid URL")
|
checkErr(err, "Specified webhook is not a valid URL")
|
||||||
|
|
Loading…
Reference in a new issue