From d0d0c79540c4c887935b39c3ced5fdf01f2900d1 Mon Sep 17 00:00:00 2001 From: Amrykid Date: Sun, 25 Dec 2011 14:37:10 -0600 Subject: Final bits added. Needs testing. --- koch.nim | 45 ++++++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 15 deletions(-) (limited to 'koch.nim') diff --git a/koch.nim b/koch.nim index 1af3a4d86..98c9b7202 100755 --- a/koch.nim +++ b/koch.nim @@ -11,7 +11,7 @@ when defined(gcc) and defined(windows): {.link: "icons/koch.res".} import - os, strutils, parseopt, osproc, httpclient + os, strutils, parseopt, osproc, httpclient, streams when defined(haveZipLib): import zipfiles @@ -45,6 +45,8 @@ Boot options: -d:nativeStacktrace use native stack traces (only for Mac OS X or Linux) """ +proc boot(args: string) # Forward declaration + proc exe(f: string): string = return addFileExt(f, ExeExt) proc exec(cmd: string) = @@ -82,26 +84,39 @@ proc web(args: string) = NimrodVersion) proc update(args: string) = + when defined(windows): + echo("Windows Users: Make sure to be running this in Bash. If you aren't, press CTRL+C now.") + + var thisDir = getAppDir() + var git = findExe("git") echo("Checking for git repo...") - if existsDir(thisDir & "/.git"): + if existsDir(thisDir & "/.git") and git != "": echo("Git repo found!") # use git to download latest source - var output = execProcess("git diff origin/master master") - if output == "\r\n": - # No changes - echo("No update. Exiting..") - return + discard startCmd(git & " fetch origin master") + var procs = startCmd(git & " diff origin/master master") + var errcode = procs.waitForExit() + var output = readLine(procs.outputStream) + echo(output) + if errcode == 0: + if output == "": + # No changes + echo("No update. Exiting..") + return + else: + echo("Fetching updates from repo...") + var pullout = execCmdEx(git & " pull origin master") + if pullout[1] != 0: + echo("An error has occured.") + return + else: + if pullout[0] == "Already up-to-date.\r\n": + echo("No new changes fetched from the repo. Local branch must be ahead of it. Exiting...") + return else: - echo("Fetching updates from repo...") - var pullout = execCmdEx("git pull origin master") - if pullout[1] != 0: echo("An error has occured.") return - else: - if pullout[0] == "Already up-to-date.\r\n": - echo("No new changes fetched from the repo. Local branch must be ahead of it. Exiting...") - return else: @@ -123,7 +138,7 @@ proc update(args: string) = return echo("Starting update...") - exec("./koch boot -d:release") + boot(args) echo("Update complete!") -- cgit 1.4.1-2-gfad0