~sircmpwn/aerc

66a9052f0fa8d2caf0d82435241b10e9ba8665b2 — Drew DeVault 2 years ago 7a489cb
Forward mailto links to server via ./aerc <mailto>
2 files changed, 25 insertions(+), 3 deletions(-)

M aerc.go
M lib/socket.go
M aerc.go => aerc.go +8 -3
@@ 94,15 94,15 @@ var (
)

func usage() {
	log.Fatal("Usage: aerc [-v]")
	log.Fatal("Usage: aerc [-v] [mailto:...]")
}

func main() {
	// TODO: Support starting with mailto links, ad-hoc accounts, etc
	opts, optind, err := getopt.Getopts(os.Args, "v")
	if err != nil {
		log.Print(err)
		usage()
		return
	}
	for _, opt := range opts {
		switch opt.Option {


@@ 111,8 111,13 @@ func main() {
			return
		}
	}
	if optind != len(os.Args) {
	args := os.Args[optind:]
	if len(args) > 1 {
		usage()
		return
	} else if len(args) == 1 {
		lib.ConnectAndExec(args[0])
		return
	}

	var (

M lib/socket.go => lib/socket.go +17 -0
@@ 2,6 2,7 @@ package lib

import (
	"bufio"
	"errors"
	"fmt"
	"log"
	"net"


@@ 80,3 81,19 @@ func (as *AercServer) handleClient(conn net.Conn) {
	}
	as.logger.Printf("Closed Unix connection %d", clientId)
}

func ConnectAndExec(msg string) error {
	sockpath := path.Join(xdg.RuntimeDir(), "aerc.sock")
	conn, err := net.Dial("unix", sockpath)
	if err != nil {
		return err
	}
	conn.Write([]byte(msg + "\n"))
	scanner := bufio.NewScanner(conn)
	if !scanner.Scan() {
		return errors.New("No response from server")
	}
	result := scanner.Text()
	fmt.Println(result)
	return nil
}