Index: tools/flags/SkCommonFlags.cpp |
diff --git a/tools/flags/SkCommonFlags.cpp b/tools/flags/SkCommonFlags.cpp |
index 2d5a855bf79262b1c229ae7f46f51dfdc6eb8031..e6d269b9e2e78772948fae03f0dd5ea170fff0e1 100644 |
--- a/tools/flags/SkCommonFlags.cpp |
+++ b/tools/flags/SkCommonFlags.cpp |
@@ -6,6 +6,7 @@ |
*/ |
#include "SkCommonFlags.h" |
+#include "SkOSFile.h" |
DEFINE_bool(cpu, true, "master switch for running CPU-bound work."); |
@@ -14,7 +15,8 @@ DEFINE_bool(dryRun, false, |
DEFINE_bool(gpu, true, "master switch for running GPU-bound work."); |
-DEFINE_string(images, "", "Directory of images to decode."); |
+DEFINE_string(images, "", "List of images and/or directories to decode. A directory with no images" |
+ " is treated as a fatal error."); |
DEFINE_string2(match, m, nullptr, |
"[~][^]substring[$] [...] of GM name to run.\n" |
@@ -47,5 +49,46 @@ DEFINE_string(key, "", |
"Space-separated key/value pairs to add to JSON identifying this builder."); |
DEFINE_string(properties, "", |
"Space-separated key/value pairs to add to JSON identifying this run."); |
- |
DEFINE_bool2(pre_log, p, false, "Log before running each test. May be incomprehensible when threading"); |
+ |
+bool CollectImages(SkTArray<SkString>* output) { |
+ SkASSERT(output); |
+ |
+ static const char* const exts[] = { |
+ "bmp", "gif", "jpg", "jpeg", "png", "webp", "ktx", "astc", "wbmp", "ico", |
+ "BMP", "GIF", "JPG", "JPEG", "PNG", "WEBP", "KTX", "ASTC", "WBMP", "ICO", |
+#ifdef SK_CODEC_DECODES_RAW |
+ "arw", "cr2", "dng", "nef", "nrw", "orf", "raf", "rw2", "pef", "srw", |
+ "ARW", "CR2", "DNG", "NEF", "NRW", "ORF", "RAF", "RW2", "PEF", "SRW", |
+#endif |
+ }; |
+ |
+ for (int i = 0; i < FLAGS_images.count(); ++i) { |
+ const char* flag = FLAGS_images[i]; |
+ if (!sk_exists(flag)) { |
+ SkDebugf("%s does not exist!\n", flag); |
+ return false; |
+ } |
+ |
+ if (sk_isdir(flag)) { |
+ // If the value passed in is a directory, add all the images |
+ bool foundAnImage = false; |
+ for (const char* ext : exts) { |
+ SkOSFile::Iter it(flag, ext); |
+ SkString file; |
+ while (it.next(&file)) { |
+ foundAnImage = true; |
+ output->push_back() = SkOSPath::Join(flag, file.c_str()); |
+ } |
+ } |
+ if (!foundAnImage) { |
+ SkDebugf("No supported images found in %s!\n", flag); |
+ return false; |
+ } |
+ } else { |
+ // Also add the value if it is a single image |
+ output->push_back() = flag; |
+ } |
+ } |
+ return true; |
+} |