From 3158cdca7c20573a70d30cb9e7a0bf7dc0ea89a8 Mon Sep 17 00:00:00 2001
From: "raffaele.gaetano" <raffaele.gaetano@cirad.fr>
Date: Tue, 9 Jul 2019 11:39:12 +0200
Subject: [PATCH] ENH: makefile mode for preprocessing of time series.

---
 genProcessScript.py | 60 +++++++++++++++++++++++++++++++--------------
 1 file changed, 42 insertions(+), 18 deletions(-)

diff --git a/genProcessScript.py b/genProcessScript.py
index 7483a3e..473a343 100644
--- a/genProcessScript.py
+++ b/genProcessScript.py
@@ -8,13 +8,14 @@ import sys
 
 def main(argv):
     try:
-        opts, args = getopt.getopt(argv, '', ['cloudmask', 's2ref=', 's2bandlist='])
+        opts, args = getopt.getopt(argv, '', ['cloudmask', 's2ref=', 's2bandlist=', 'makefile'])
     except getopt.GetoptError as err:
         print str(err)
 
     opt_str = ''
     opt_str_s2 = ''
     base_fld = args[0]
+    makefile = False
 
     for opt, val in opts:
         if opt == '--cloudmask':
@@ -23,6 +24,8 @@ def main(argv):
             opt_str_s2 += ' --s2ref ' + val
         elif opt == '--s2bandlist':
             opt_str_s2 += ' --s2bandlist ' + val
+        elif opt == '--makefile':
+            makefile = True
 
     valid_dirs_L8 = []
     valid_dirs_S2 = []
@@ -46,25 +49,46 @@ def main(argv):
     if (len(valid_dirs_L8) + len(valid_dirs_S2) + len(valid_dirs_S2_THEIA) + len(valid_dirs_Venus)) == 0:
         sys.exit('No products found within ' + base_fld)
 
-    if platform.system() == 'Windows':
-        f = open('ProcessScript.bat', 'w')
-        f.write("@echo off\n")
-    else:
-        f = open('ProcessScript.sh', 'w')
+    if not makefile:
+        if platform.system() == 'Windows':
+            f = open('ProcessScript.bat', 'w')
+            f.write("@echo off\n")
+        else:
+            f = open('ProcessScript.sh', 'w')
+
+        for d in valid_dirs_L8:
+            f.write('python preprocess.py ' + opt_str + ' ' + d + '\n')
+        for d in valid_dirs_S2:
+            f.write('python preprocess.py ' + opt_str + ' ' + opt_str_s2 + ' ' + d + '\n')
+        for d in valid_dirs_S2_THEIA:
+            f.write('python preprocess.py ' + opt_str + ' ' + opt_str_s2 + ' ' + d + '\n')
+        for d in valid_dirs_Venus:
+            f.write('python preprocess.py ' + opt_str + ' ' + opt_str_s2 + ' ' + d + '\n')
+        f.close()
 
-    for d in valid_dirs_L8:
-        f.write('python preprocess.py ' + opt_str + ' ' + d + '\n')
-    for d in valid_dirs_S2:
-        f.write('python preprocess.py ' + opt_str + ' ' + opt_str_s2 + ' ' + d + '\n')
-    for d in valid_dirs_S2_THEIA:
-        f.write('python preprocess.py ' + opt_str + ' ' + opt_str_s2 + ' ' + d + '\n')
-    for d in valid_dirs_Venus:
-        f.write('python preprocess.py ' + opt_str + ' ' + opt_str_s2 + ' ' + d + '\n')
-    f.close()
+        if platform.system() == 'Linux':
+            st = os.stat('ProcessScript.sh')
+            os.chmod('ProcessScript.sh', st.st_mode | stat.S_IEXEC)
 
-    if platform.system() == 'Linux':
-        st = os.stat('ProcessScript.sh')
-        os.chmod('ProcessScript.sh', st.st_mode | stat.S_IEXEC)
+    else:
+        f = open('ProcessMakefile', 'w')
+        tot = len(valid_dirs_L8) + len(valid_dirs_S2) + len(valid_dirs_S2_THEIA) + len(valid_dirs_Venus)
+        joblist = ['job%d' % j for j in range(1,tot+1)]
+        joball = ' '.join()
+        f.write('all : ' + joball + '\n\n')
+        for d in valid_dirs_L8:
+            f.write(joblist.pop() + ' :\n')
+            f.write('      python preprocess.py ' + opt_str + ' ' + d + '\n\n')
+        for d in valid_dirs_S2:
+            f.write(joblist.pop() + ' :\n')
+            f.write('python preprocess.py ' + opt_str + ' ' + opt_str_s2 + ' ' + d + '\n\n')
+        for d in valid_dirs_S2_THEIA:
+            f.write(joblist.pop() + ' :\n')
+            f.write('python preprocess.py ' + opt_str + ' ' + opt_str_s2 + ' ' + d + '\n\n')
+        for d in valid_dirs_Venus:
+            f.write(joblist.pop() + ' :\n')
+            f.write('python preprocess.py ' + opt_str + ' ' + opt_str_s2 + ' ' + d + '\n\n')
+        f.close()
 
 
 if __name__ == '__main__':
-- 
GitLab