mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
* nimgrab tool bugfix: don't divide by zero * fixes #5532 (asyncfile write on Windows) * add a comment about what has been tried instead
36 lines
1001 B
Nim
36 lines
1001 B
Nim
|
|
|
|
when defined(windows):
|
|
import os, urldownloader
|
|
|
|
proc syncDownload(url, file: string) =
|
|
proc progress(status: DownloadStatus, progress: uint, total: uint,
|
|
message: string) {.procvar, gcsafe.} =
|
|
echo "Downloading " & url
|
|
let t = total.BiggestInt
|
|
if t != 0:
|
|
echo clamp(int(progress.BiggestInt*100 div t), 0, 100), "%"
|
|
else:
|
|
echo "0%"
|
|
|
|
downloadToFile(url, file, {optUseCache}, progress)
|
|
echo "100%"
|
|
|
|
else:
|
|
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 <url> <file>"
|
|
else:
|
|
syncDownload(os.paramStr(1), os.paramStr(2))
|