Browse Source

Add interactive flag

Blallo 4 years ago
parent
commit
079214702a
1 changed files with 12 additions and 8 deletions
  1. 12 8
      main.go

+ 12 - 8
main.go

@@ -70,7 +70,7 @@ func initializeConfig(configPath, section string) *Config {
 func main() {
 	var err error
 	var configPath, section, serverAddress, user, password, to, cc, bcc, from, subject, text string
-	var encryption, dbg, versionFlag bool
+	var encryption, dbg, versionFlag, interactive bool
 	var serverPortAux int
 	var serverPort int64
 
@@ -78,6 +78,7 @@ func main() {
 	flag.StringVar(&configPath, "conf", "", "Path to a config file (defaults to /etc/sendmail.toml)")
 	flag.StringVar(&section, "section", "default", "Section of the conf to read (defaults to \"default\")")
 	flag.BoolVar(&dbg, "dbg", false, "Enable debugging output")
+	flag.BoolVar(&interactive, "interactive", false, "Assume composing mail manually, do not timeout waiting input")
 	flag.StringVar(&serverAddress, "server-address", "", "The SMTP server address")
 	flag.IntVar(&serverPortAux, "server-port", 0, "The SMTP server")
 	flag.BoolVar(&encryption, "force-ssl", false, "Force the use of ssl (defalut: false)")
@@ -104,14 +105,17 @@ func main() {
 	if flag.NArg() == 0 {
 		result := make(chan string, 1)
 		go readFromConsole(result)
-		select {
-		case text = <-result:
-			Info.Ln("text read from console")
-		case <-time.After(5 * time.Minute):
-			Error.Ln("timeout reading from console")
-			os.Exit(3)
+		if interactive {
+			text = <-result
+		} else {
+			select {
+			case text = <-result:
+				Info.Ln("text read from console")
+			case <-time.After(5 * time.Second):
+				Error.Ln("timeout reading from console")
+				os.Exit(3)
+			}
 		}
-
 	} else {
 		for _, arg := range flag.Args() {
 			text += fmt.Sprintf("%s\n", arg)