From 5208b2606503d67b7c5cacb93c4ba0f35e6df2dd Mon Sep 17 00:00:00 2001 From: Mark Joshwel Date: Tue, 7 Nov 2023 03:02:34 +0000 Subject: [PATCH] bridge,docs: add login command --- README.md | 16 +++++++++------- main.go | 22 +++++++++++++++++++++- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 801c0d8..9fb5dd5 100644 --- a/README.md +++ b/README.md @@ -20,21 +20,21 @@ to use the WhatsApp bridge: 2. install spow-whatsapp-bridge: ```text - pkg install golang git - git clone https://github.com/markjoshwel/spow-whatsapp-bridge - (cd spow-whatsapp-bridge; go build) - mkdir -p $HOME/.local/bin - mv spow-whatsapp-bridge/s+ow-whatsapp-bridge $HOME/.local/bin + pkg install golang git + git clone https://github.com/markjoshwel/spow-whatsapp-bridge + (go build; cd spow-whatsapp-bridge) + mkdir -p $HOME/.local/bin + mv spow-whatsapp-bridge/spow-whatsapp-bridge $HOME/.local/bin/s+ow-whatsapp-bridge ``` 3. log into WhatsApp: ```text - s+ow-whatsapp-bridge + s+ow-whatsapp-bridge login ``` give it a minute or two to sync your history. once the screen stops scrolling, you can - safely exit with Ctrl+D. + safely exit with `Ctrl+D` or `Ctrl+C`. 4. add the following to your `$HOME/.s+ow-bridges` file: @@ -46,6 +46,8 @@ usage: - `s+ow-whatsapp-bridge` normal usage; sends latest message to `wa:`-prefixed targets given in stdin +- `s+ow-whatsapp-login` + logs into WhatsApp - `s+ow-whatsapp-bridge logout` logs out of WhatsApp - `s+ow-whatsapp-bridge list` diff --git a/main.go b/main.go index 8896f0a..88df671 100644 --- a/main.go +++ b/main.go @@ -135,7 +135,7 @@ func main() { return } - // c := make(chan os.Signal) + c := make(chan os.Signal) input := make(chan string) signalChan := make(chan os.Signal, 1) signal.Notify(signalChan, os.Interrupt, syscall.SIGTERM) @@ -150,6 +150,26 @@ func main() { } }() + // if 'login' in os.Args, we exit here + for _, arg := range os.Args { + if arg == "login" { + for { + select { + case <-c: + log.Infof("Interrupt received, exiting") + cli.Disconnect() + return + case cmd := <-input: + if len(cmd) == 0 { + log.Infof("Stdin closed, exiting") + cli.Disconnect() + return + } + } + } + } + } + // if using as cli args := os.Args[1:] if len(args) > 0 {