VS SLN script: Automatically determine which folder to use/copy

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=5009

Change-Id: Ic7765cf23191af840935f7181579e04d62de23af
Reviewed-on: https://skia-review.googlesource.com/5009
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
diff --git a/fix-gn-sln.py b/fix-gn-sln.py
index ced4718..2c814f8 100644
--- a/fix-gn-sln.py
+++ b/fix-gn-sln.py
@@ -7,16 +7,30 @@
 import sys
 from shutil import copyfile
 
-srcDir = sys.argv[1]
-
 # Get list of existing directories to use as configs
 configs = []
+configsWithSln = []
+srcDir = ""
+newestSlnTimestamp = 0
 for root, dirs, files in os.walk("out"):
     for outDir in dirs:
-        if os.path.exists("out/" + outDir + "/build.ninja.d"):
+        gnFile = os.path.join("out", outDir, "build.ninja.d")
+        slnFile = os.path.join("out", outDir, "all.sln")
+        if os.path.exists(gnFile):
             configs.append(outDir)
+        if os.path.exists(slnFile):
+            configsWithSln.append(outDir)
+            slnTimestamp = os.path.getmtime(slnFile)
+            if slnTimestamp > newestSlnTimestamp:
+                newestSlnTimestamp = slnTimestamp
+                srcDir = outDir
     break
 
+# We need at least one config with a solution
+if len(configsWithSln) == 0:
+    print "ERROR: At least one GN directory must have been built with --ide=vs"
+    sys.exit()
+
 # Ensure directories exist
 try:
     os.makedirs("out/sln/obj")