From b920378a8ab5435ee461876db0685b74c6bf77a3 Mon Sep 17 00:00:00 2001
From: Raffaele Gaetano <raffaele.gaetano@cirad.fr>
Date: Wed, 13 Dec 2023 14:23:07 +0100
Subject: [PATCH] ENH: added app for date file generation.

---
 Common/timetools.py | 13 +++++++++++++
 moringa.py          | 11 +++++++++++
 2 files changed, 24 insertions(+)
 create mode 100644 Common/timetools.py

diff --git a/Common/timetools.py b/Common/timetools.py
new file mode 100644
index 0000000..0a91d59
--- /dev/null
+++ b/Common/timetools.py
@@ -0,0 +1,13 @@
+from datetime import datetime, timedelta
+
+def periodic_date_generator(filename, start_date, end_date, step):
+    start_date = start_date.split('-')
+    start_date = datetime(int(start_date[0]),int(start_date[1]),int(start_date[2]))
+    end_date = end_date.split('-')
+    end_date = datetime(int(end_date[0]),int(end_date[1]),int(end_date[2]))
+    d = start_date
+    step = timedelta(days=step)
+    with open(filename, 'w') as f:
+        while d < end_date :
+            f.write(d.strftime('%Y%m%d')+'\n')
+            d += step
diff --git a/moringa.py b/moringa.py
index 6d56116..a29819e 100755
--- a/moringa.py
+++ b/moringa.py
@@ -1,5 +1,6 @@
 import sys
 import argparse
+from Common.timetools import periodic_date_generator
 from Workflows.basic import basic
 from Workflows.operations import *
 
@@ -80,6 +81,13 @@ def main(args):
     chain.add_argument("--runlevel", type=int, default=1, help="Starting step of the chain to process.")
     chain.add_argument("--single_step", action="store_true", help="Stop after a single step is processed.")
 
+    dategen = subpar.add_parser("gen_date_file", help="Generate an output date file for classic gapfilling.",
+                                formatter_class=argparse.ArgumentDefaultsHelpFormatter)
+    dategen.add_argument("output_file", type=str, help="Path to the output date file.")
+    dategen.add_argument("start_date", type=str, help="Start date in YYYY-MM-DD format.")
+    dategen.add_argument("end_date", type=str, help="End date in YYYY-MM-DD format.")
+    dategen.add_argument("step", type=int, help="Number of days between two dates.")
+
     if len(args) == 1:
         parser.print_help()
         sys.exit(0)
@@ -115,6 +123,9 @@ def main(args):
         else:
             raise ValueError('Workflow not implemented.')
 
+    if arg.cmd == "gen_date_file":
+        periodic_date_generator(arg.output_file, arg.start_date, arg.end_date, arg.step)
+
     return 0
 
 if __name__ == "__main__":
-- 
GitLab