mirror of
https://github.com/donuts-are-good/neosay.git
synced 2025-01-03 03:30:53 -05:00
use XDG_CONFIG_HOME by default
To prevent having users always specify the configuration file, the path now defaults to $XDG_CONFIG_HOME/neosay/config.json. This way it is possible to send messages from a "default identity" like this: echo "look mom, I'm in someone's commit history!" | neosay To make the code more succinct, flag parsing is no longer done manually, but instead using the flag package from stdlib. Fixes: https://github.com/donuts-are-good/neosay/issues/2 Signed-off-by: Moritz Poldrack <git@moritz.sh>
This commit is contained in:
parent
ab5679805a
commit
b966bcfb04
34
main.go
34
main.go
@ -3,8 +3,11 @@ package main
|
|||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"path"
|
||||||
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -22,27 +25,26 @@ type Config struct {
|
|||||||
const maxMessageSize = 4000
|
const maxMessageSize = 4000
|
||||||
const messageDelay = 2 * time.Second
|
const messageDelay = 2 * time.Second
|
||||||
|
|
||||||
var codeFlag bool
|
var (
|
||||||
|
configFile = flag.String("config", "$XDG_CONFIG_HOME/neosay/config.json", "path to the configuration file")
|
||||||
|
codeFlag = flag.Bool("code", false, "is this code?")
|
||||||
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
// name the argset
|
home, err := os.UserHomeDir()
|
||||||
args := os.Args[1:]
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "%sfailed to get user's home directory. Well, shit.%s\n", colors.BrightRed, colors.Nc)
|
||||||
// if we get too few, supply the usage
|
|
||||||
if len(args) < 1 {
|
|
||||||
fmt.Fprintln(os.Stderr, colors.BrightRed+"Usage: neosay <config-file> [-c | --code]"+colors.Nc)
|
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
xdgConfigHome := path.Join(home, ".config")
|
||||||
|
if env, _ := os.LookupEnv("XDG_CONFIG_HOME"); env != "" {
|
||||||
|
xdgConfigHome = env
|
||||||
|
}
|
||||||
|
|
||||||
// name the config file
|
if strings.Contains(*configFile, "$XDG_CONFIG_HOME") {
|
||||||
configFile := args[0]
|
*configFile = filepath.Join(xdgConfigHome, "neosay", "config.json")
|
||||||
|
|
||||||
// check for the args, which can be anywhere
|
|
||||||
for _, arg := range args[1:] {
|
|
||||||
if arg == "--code" || arg == "-c" {
|
|
||||||
codeFlag = true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// open the config
|
// open the config
|
||||||
@ -131,7 +133,7 @@ func main() {
|
|||||||
func sendMessage(client *gomatrix.Client, roomID, message string) {
|
func sendMessage(client *gomatrix.Client, roomID, message string) {
|
||||||
|
|
||||||
// if we use -c or --code, make it a ```this thing```
|
// if we use -c or --code, make it a ```this thing```
|
||||||
if codeFlag {
|
if *codeFlag {
|
||||||
message = "<pre><code>" + message + "</code></pre>"
|
message = "<pre><code>" + message + "</code></pre>"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user