diff --git a/cli/cli.go b/cli/cli.go new file mode 100644 index 0000000..d406c9e --- /dev/null +++ b/cli/cli.go @@ -0,0 +1,57 @@ +package cli + +import ( + "encoding/json" + "io/ioutil" + "log" + + "forge.lightcrystal.systems/lightcrystal/underbbs/adapter" + "forge.lightcrystal.systems/lightcrystal/underbbs/models" +) + +func Process(args ...string) error { + // allocate storage for the settings array + var settings []models.Settings + var s models.Settings + + // get adapter from first arg + adapterName := args[0] + args = args[1:] + + // get config from config fle based on adapter + content, err := ioutil.ReadFile("./config.json") + if err != nil { + return err + } + + err = json.Unmarshal(content, settings) + if err != nil { + return err + } + for _, x := range settings { + if x.Nickname == adapterName { + s = x + break + } + } + // instantiate adapter with config + var a adapter.Adapter + switch s.Protocol { + case "nostr": + a = &adapter.NostrAdapter{} + case "mastodon": + a = &adapter.MastoAdapter{} + case "misskey": + a = &adapter.MisskeyAdapter{} + default: + break + } + a.Init(s, nil) + // process remaining args and execute + + switch args[0] { + default: + log.Print(args) + } + return nil +} diff --git a/underbbs.go b/underbbs.go index 72a52e3..804f5b1 100644 --- a/underbbs.go +++ b/underbbs.go @@ -11,6 +11,7 @@ import ( "strconv" "time" + "forge.lightcrystal.systems/lightcrystal/underbbs/cli" "forge.lightcrystal.systems/lightcrystal/underbbs/server" ) @@ -35,7 +36,7 @@ func main() { } func run_cli(args ...string) error { - log.Print("test!!") + cli.Process(args...) return nil }