77 lines
1.4 KiB
Go
77 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"os/user"
|
|
"path/filepath"
|
|
)
|
|
|
|
const help = `unnamed-project: WIP
|
|
|
|
Options:
|
|
-n node identifier (default: your system username)
|
|
-p path to share files (default: current working directory)
|
|
-w port for web server (default: 1312)
|
|
-s port for file server (default: 5555)
|
|
-d debug logging
|
|
-h output help
|
|
`
|
|
|
|
var nodeIDFlag string
|
|
var pathFlag string
|
|
var webPortFlag int
|
|
var filePortFlag int
|
|
var debugFlag bool
|
|
var helpFlag bool
|
|
|
|
func main() {
|
|
systemUser, err := user.Current()
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
|
|
cwdAbsPath, err := filepath.Abs(".")
|
|
if err != nil {
|
|
log.Fatalln(err)
|
|
}
|
|
|
|
handleCliFlags(systemUser.Name, cwdAbsPath)
|
|
|
|
if helpFlag {
|
|
fmt.Printf(help)
|
|
os.Exit(0)
|
|
}
|
|
|
|
conf := &config{
|
|
nodeID: nodeIDFlag,
|
|
webPort: webPortFlag,
|
|
filePort: filePortFlag,
|
|
sharePath: pathFlag,
|
|
debug: debugFlag,
|
|
}
|
|
|
|
fmt.Println(conf)
|
|
|
|
}
|
|
|
|
func handleCliFlags(username, sharePath string) {
|
|
flag.StringVar(&nodeIDFlag, "n", username, "node identifier")
|
|
flag.StringVar(&pathFlag, "p", sharePath, "path to share files")
|
|
flag.IntVar(&webPortFlag, "w", 1312, "port for web server")
|
|
flag.IntVar(&filePortFlag, "s", 5555, "port for file server")
|
|
flag.BoolVar(&debugFlag, "d", false, "debug logging")
|
|
flag.BoolVar(&helpFlag, "h", false, "output help")
|
|
flag.Parse()
|
|
}
|
|
|
|
type config struct {
|
|
nodeID string
|
|
webPort int
|
|
filePort int
|
|
sharePath string
|
|
debug bool
|
|
}
|