summary refs log tree commit diff stats
path: root/tools/finish.nim
diff options
context:
space:
mode:
authorMatt Haggard <haggardii@gmail.com>2019-02-08 01:39:58 -0700
committerMiran <narimiran@disroot.org>2019-02-08 09:39:58 +0100
commitfd62d24c4c141a368b1eb1ca5a862a3f989110e8 (patch)
tree2c1fce3ec7e790a29edf6a55d1e7404546eab2c8 /tools/finish.nim
parent6b88ce3384c453fa3e872e059f5d9c73f247f42b (diff)
downloadNim-fd62d24c4c141a368b1eb1ca5a862a3f989110e8.tar.gz
Add non-interactive installer flag (-y) to finish.nim (#10603) [backport]
Diffstat (limited to 'tools/finish.nim')
-rw-r--r--tools/finish.nim25
1 files changed, 21 insertions, 4 deletions
diff --git a/tools/finish.nim b/tools/finish.nim
index 4f2c72595..815b99a12 100644
--- a/tools/finish.nim
+++ b/tools/finish.nim
@@ -8,6 +8,9 @@ const
   mingw = "mingw$1-6.3.0.7z" % arch
   url = r"https://nim-lang.org/download/" & mingw
 
+var
+  interactive = true
+
 type
   DownloadResult = enum
     Failure,
@@ -38,19 +41,28 @@ proc downloadMingw(): DownloadResult =
   if cmd.len > 0:
     if execShellCmd(cmd) != 0:
       echo "download failed! ", cmd
-      openDefaultBrowser(url)
-      result = Manual
+      if interactive:
+        openDefaultBrowser(url)
+        result = Manual
+      else:
+        result = Failure
     else:
       if unzip(): result = Success
   else:
-    openDefaultBrowser(url)
-    result = Manual
+    if interactive:
+      openDefaultBrowser(url)
+      result = Manual
+    else:
+      result = Failure
 
 when defined(windows):
   import registry
 
   proc askBool(m: string): bool =
     stdout.write m
+    if not interactive:
+      stdout.writeLine "y (non-interactive mode)"
+      return true
     while true:
       try:
         let answer = stdin.readLine().normalize
@@ -67,6 +79,9 @@ when defined(windows):
   proc askNumber(m: string; a, b: int): int =
     stdout.write m
     stdout.write " [" & $a & ".." & $b & "] "
+    if not interactive:
+      stdout.writeLine $a & " (non-interactive mode)"
+      return a
     while true:
       let answer = stdin.readLine()
       try:
@@ -291,4 +306,6 @@ when isMainModule:
   when defined(testdownload):
     discard downloadMingw()
   else:
+    if "-y" in commandLineParams():
+      interactive = false
     main()