From 7d1a96151c0fecfc73913f7cb4a5572fe4913c42 Mon Sep 17 00:00:00 2001 From: Araq Date: Sun, 26 Feb 2017 23:16:43 +0100 Subject: [PATCH] finish tool can use 'nimgrab' tool to download the mingw version --- compiler/installer.ini | 3 ++- koch.nim | 3 +++ tools/finish.nim | 6 +++++- tools/nimgrab.nim | 17 +++++++++++++++++ 4 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 tools/nimgrab.nim diff --git a/compiler/installer.ini b/compiler/installer.ini index 4c7528c75f..5021cc05ae 100644 --- a/compiler/installer.ini +++ b/compiler/installer.ini @@ -91,10 +91,11 @@ Files: "bin/nimgrep.exe" Files: "bin/nimsuggest.exe" Files: "bin/nimble.exe" Files: "bin/vccexe.exe" +Files: "bin/nimgrab.exe" Files: "koch.exe" Files: "finish.exe" -Files: "bin/downloader.exe" +; Files: "bin/downloader.exe" ; Files: "dist/mingw" Files: r"tools\start.bat" diff --git a/koch.nim b/koch.nim index 109dcc3f1c..7c01939171 100644 --- a/koch.nim +++ b/koch.nim @@ -223,7 +223,9 @@ proc bundleWinTools() = copyExe("tools/finish".exe, "finish".exe) removeFile("tools/finish".exe) nimexec("c -o:bin/vccexe.exe tools/vccenv/vccexe") + nimexec("c -o:bin/nimgrab.exe -d:ssl tools/nimgrab.nim") when false: + # not yet a tool worth including nimexec(r"c --cc:vcc --app:gui -o:bin\downloader.exe -d:ssl --noNimblePath " & r"--path:..\ui tools\downloader.nim") @@ -541,6 +543,7 @@ of cmdArgument: of "test", "tests": tests(op.cmdLineRest) of "temp": temp(op.cmdLineRest) of "winrelease": winRelease() + of "wintools": bundleWinTools() of "nimble": buildNimble(existsDir(".git")) of "nimsuggest": bundleNimsuggest(buildExe=true) of "tools": buildTools(existsDir(".git")) diff --git a/tools/finish.nim b/tools/finish.nim index e39062b027..cdbbdabe54 100644 --- a/tools/finish.nim +++ b/tools/finish.nim @@ -30,8 +30,12 @@ proc unzip(): bool = proc downloadMingw(): DownloadResult = let curl = findExe"curl" + var cmd: string if curl.len > 0: - let cmd = curl & " --out " & "dist" / mingw & " " & url + cmd = curl & " --out " & "dist" / mingw & " " & url + elif fileExists"bin/nimgrab.exe": + cmd = "bin/nimgrab.exe " & url & " dist" / mingw + if cmd.len > 0: if execShellCmd(cmd) != 0: echo "download failed! ", cmd openDefaultBrowser(url) diff --git a/tools/nimgrab.nim b/tools/nimgrab.nim new file mode 100644 index 0000000000..2fa50e89a2 --- /dev/null +++ b/tools/nimgrab.nim @@ -0,0 +1,17 @@ + +import os, asyncdispatch, httpclient + +proc syncDownload(url, file: string) = + var client = newHttpClient() + proc onProgressChanged(total, progress, speed: BiggestInt) = + echo "Downloading " & url & " " & $(speed div 1000) & "kb/s" + echo clamp(int(progress*100 div total), 0, 100), "%" + + client.onProgressChanged = onProgressChanged + client.downloadFile(url, file) + echo "100%" + +if os.paramCount() != 2: + quit "Usage: nimgrab " +else: + syncDownload(os.paramStr(1), os.paramStr(2))