From 2d3199fe08391cbfc655744a4ad0a61a08ba0ef1 Mon Sep 17 00:00:00 2001
From: Bastien Le Querrec <blq@laquadrature.net>
Date: Tue, 6 Aug 2024 23:56:39 +0200
Subject: [PATCH] cli: ajoute le support des dates relatives

---
 README.md |  2 +-
 cli.py    | 17 +++++++++++++----
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/README.md b/README.md
index 9048250..7861beb 100644
--- a/README.md
+++ b/README.md
@@ -37,7 +37,7 @@ Les options suivantes peuvent être précisées, par un paramètre si l'utilitai
 | CLI | Variable d'environnement | Signification | Valeur par défaut |
 |---|---|---|---|
 | `--keywords`, `-k` | `KEYWORDS` | Liste des mots-clés recherchés, séparés par une virgule. | Aucune |
-| `--not-before` | `NOT_BEFORE` | Date (format YYYY-MM-DD) avant laquelle les RAA ne sont pas analysés. | `2024-01-01` |
+| `--not-before` | `NOT_BEFORE` | Date (format relatif `1 week` ou `YYYY-MM-DD`) avant laquelle les RAA ne sont pas analysés. | `2024-01-01` |
 | `--smtp-hostname` | `SMTP_HOSTNAME` | Nom d'hôte SMTP. | `localhost` |
 | `--smtp-username` | `SMTP_USERNAME` | Nom d'utilisateur SMTP. | Aucun |
 | `--smtp-password` | `SMTP_PASSWORD` | Mot de passe SMTP. | Aucun |
diff --git a/cli.py b/cli.py
index 063f2fd..3b64cf2 100755
--- a/cli.py
+++ b/cli.py
@@ -4,6 +4,7 @@ import os
 import argparse
 import logging
 import datetime
+import dateparser
 import importlib
 
 from Attrap import Attrap
@@ -29,9 +30,13 @@ if os.getenv('SMTP_SSL'):
 else:
     __SMTP_SSL = False
 if os.getenv('NOT_BEFORE'):
-    __NOT_BEFORE = datetime.datetime.strptime(
-        os.getenv('NOT_BEFORE'), '%Y-%m-%d'
-    )
+    try:
+        relative_date = dateparser.parse(os.getenv('NOT_BEFORE'))
+        __NOT_BEFORE = datetime.datetime(year=relative_date.year, month=relative_date.month, day=relative_date.day)
+    except Exception as exc:
+        __NOT_BEFORE = datetime.datetime.strptime(
+            os.getenv('NOT_BEFORE'), '%Y-%m-%d'
+        )
 else:
     __NOT_BEFORE = datetime.datetime(2024, 1, 1)
 __MASTODON_ACCESS_TOKEN = os.getenv('MASTODON_ACCESS_TOKEN')
@@ -178,7 +183,11 @@ if args.keywords:
     __KEYWORDS = args.keywords
 
 if args.not_before:
-    __NOT_BEFORE = datetime.datetime.strptime(args.not_before, '%Y-%m-%d')
+    try:
+        relative_date = dateparser.parse(args.not_before)
+        __NOT_BEFORE = datetime.datetime(year=relative_date.year, month=relative_date.month, day=relative_date.day)
+    except Exception as exc:
+        __NOT_BEFORE = datetime.datetime.strptime(args.not_before, '%Y-%m-%d')
 
 if args.smtp_hostname:
     __SMTP_HOSTNAME = args.smtp_hostname
-- 
GitLab