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 }