forked from External/grumble
73 lines
1.8 KiB
Go
73 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"runtime"
|
|
)
|
|
|
|
type args struct {
|
|
ShowHelp bool
|
|
DataDir string
|
|
BlobDir string
|
|
CtlNet string
|
|
CtlAddr string
|
|
GenerateCert bool
|
|
SQLiteDB string
|
|
CleanUp bool
|
|
}
|
|
|
|
func defaultGrumbleDir() string {
|
|
dirname := ".grumble"
|
|
if runtime.GOOS == "windows" {
|
|
dirname = "grumble"
|
|
}
|
|
return filepath.Join(os.Getenv("HOME"), dirname)
|
|
}
|
|
|
|
func defaultDataDir() string {
|
|
return filepath.Join(defaultGrumbleDir(), "data")
|
|
}
|
|
|
|
func defaultBlobDir() string {
|
|
return filepath.Join(defaultGrumbleDir(), "blob")
|
|
}
|
|
|
|
func defaultCtlNet() string {
|
|
if runtime.GOOS == "windows" {
|
|
return "tcp"
|
|
}
|
|
return "unix"
|
|
}
|
|
|
|
func defaultCtlAddr() string {
|
|
if runtime.GOOS == "windows" {
|
|
return "localhost:5454"
|
|
}
|
|
return filepath.Join(defaultGrumbleDir(), ".ctl")
|
|
}
|
|
|
|
func Usage() {
|
|
fmt.Fprintf(os.Stderr, "usage: grumble [options]\n")
|
|
fmt.Fprintf(os.Stderr, "remote control: grumble [options] ctl [ctlopts]\n")
|
|
flag.PrintDefaults()
|
|
}
|
|
|
|
var Args args
|
|
|
|
func init() {
|
|
flag.BoolVar(&Args.ShowHelp, "help", false, "Show this help")
|
|
flag.StringVar(&Args.DataDir, "datadir", defaultDataDir(), "Directory to use for server storage")
|
|
flag.StringVar(&Args.BlobDir, "blobdir", defaultBlobDir(), "Directory to use for blob storage")
|
|
flag.StringVar(&Args.CtlNet, "ctlnet", defaultCtlNet(), "Network to use for ctl socket")
|
|
flag.StringVar(&Args.CtlAddr, "ctladdr", defaultCtlAddr(), "Address to use for ctl socket")
|
|
flag.BoolVar(&Args.GenerateCert, "gencert", false, "Generate a self-signed certificate for use with Grumble")
|
|
|
|
// SQLite related
|
|
if SQLiteSupport {
|
|
flag.StringVar(&Args.SQLiteDB, "murmurdb", "", "Path to a Murmur SQLite database to import from")
|
|
flag.BoolVar(&Args.CleanUp, "cleanup", false, "Clean up Grumble's data directory on launch")
|
|
}
|
|
}
|