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() {
 func main() {
 	var err error
 	var err error
 	var configPath, section, serverAddress, user, password, to, cc, bcc, from, subject, text string
 	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 serverPortAux int
 	var serverPort int64
 	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(&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.StringVar(&section, "section", "default", "Section of the conf to read (defaults to \"default\")")
 	flag.BoolVar(&dbg, "dbg", false, "Enable debugging output")
 	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.StringVar(&serverAddress, "server-address", "", "The SMTP server address")
 	flag.IntVar(&serverPortAux, "server-port", 0, "The SMTP server")
 	flag.IntVar(&serverPortAux, "server-port", 0, "The SMTP server")
 	flag.BoolVar(&encryption, "force-ssl", false, "Force the use of ssl (defalut: false)")
 	flag.BoolVar(&encryption, "force-ssl", false, "Force the use of ssl (defalut: false)")
@@ -104,14 +105,17 @@ func main() {
 	if flag.NArg() == 0 {
 	if flag.NArg() == 0 {
 		result := make(chan string, 1)
 		result := make(chan string, 1)
 		go readFromConsole(result)
 		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 {
 	} else {
 		for _, arg := range flag.Args() {
 		for _, arg := range flag.Args() {
 			text += fmt.Sprintf("%s\n", arg)
 			text += fmt.Sprintf("%s\n", arg)