package main import ( "os" "path/filepath" "strings" "github.com/axllent/mailpit/cmd" sendmail "github.com/axllent/mailpit/sendmail/cmd" ) func main() { exec, err := os.Executable() if err != nil { panic(err) } // running directly if normalize(filepath.Base(exec)) == normalize(filepath.Base(os.Args[0])) { cmd.Execute() } else { // symlinked sendmail.Run() } } // Normalize returns a lowercase string stripped of the file extension (if exists). // Used for detecting Windows commands which ignores letter casing and `.exe`. // eg: "MaIlpIT.Exe" returns "mailpit" func normalize(s string) string { s = strings.ToLower(s) return strings.TrimSuffix(s, filepath.Ext(s)) }