5252
5353
5454class Util :
55- def __init__ (self , path : str = "." ):
55+ """Plugin logic."""
56+
57+ git_is_valid : bool = False
58+
59+ def __init__ (self , path : str = "." , use_git : bool = True ):
5660 """Class hosting the plugin logic.
5761
5862 :param str path: path tot the git repository to use. Defaults to: "." - optional
63+ :param bool use_git: flag to use git under the hood or not, defaults to True
5964 """
60- try :
61- git_repo = Repo (path , search_parent_directories = True )
62- self .repo = git_repo .git
63- self .git_is_valid = 1
64- except InvalidGitRepositoryError as err :
65- logging .warning (
66- f"[rss-plugin] Path '{ path } ' is not a valid git directory. Trace: { err } "
65+ if use_git :
66+ logger .debug ("[rss-plugin] Git use is disabled." )
67+ try :
68+ git_repo = Repo (path , search_parent_directories = True )
69+ self .repo = git_repo .git
70+ self .git_is_valid = True
71+ except InvalidGitRepositoryError as err :
72+ logger .warning (
73+ f"[rss-plugin] Path '{ path } ' is not a valid git directory. "
74+ "Only page.meta (YAML frontmatter will be used). "
75+ "To disable this warning, set 'use_git: false' in plugin options. "
76+ f"Trace: { err } "
77+ )
78+ self .git_is_valid = False
79+ use_git = False
80+ except Exception as err :
81+ logger .warning (
82+ f"[rss-plugin] Unrecognized git issue. "
83+ "Only page.meta (YAML frontmatter will be used). "
84+ "To disable this warning, set 'use_git: false' in plugin options. "
85+ f"Trace: { err } "
86+ )
87+ self .git_is_valid = False
88+ use_git = False
89+
90+ # Checks if user is running builds on CI and raise appropriate warnings
91+ if self .git_is_valid :
92+ CiHandler (git_repo .git ).raise_ci_warnings ()
93+ else :
94+ self .git_is_valid = False
95+ logger .debug (
96+ "[rss-plugin] Git use is disabled. "
97+ "Only page.meta (YAML frontmatter will be used). "
6798 )
68- self .git_is_valid = 0
69- except Exception as err :
70- logging .warning (f"[rss-plugin] Git issue: { err } " )
71- self .git_is_valid = 0
7299
73- # Checks if user is running builds on CI and raise appropriate warnings
74- CiHandler ( git_repo . git ). raise_ci_warnings ()
100+ # save git enable/disable status
101+ self . use_git = use_git
75102
76103 def build_url (self , base_url : str , path : str , args_dict : dict = None ) -> str :
77104 """Build URL using base URL, cumulating existing and passed path, \
@@ -135,27 +162,48 @@ def get_file_dates(
135162 dt_created = dt_updated = None
136163
137164 # if enabled, try to retrieve dates from page metadata
138- if source_date_creation != "git" and in_page .meta .get (source_date_creation ):
165+ if not self .use_git or (
166+ source_date_creation != "git" and in_page .meta .get (source_date_creation )
167+ ):
139168 dt_created = self .get_date_from_meta (
140169 date_metatag_value = in_page .meta .get (source_date_creation ),
141170 meta_datetime_format = meta_datetime_format ,
142171 meta_datetime_timezone = meta_default_timezone ,
143172 meta_default_time = meta_default_time ,
144173 )
145174 if isinstance (dt_created , str ):
146- logger .error (f"Creation date is a string: { dt_created } " )
147- dt_created = None
175+ logger .info (
176+ f"[rss-plugin] Creation date of { in_page .file .abs_src_path } is an "
177+ f"a character string: { dt_created } ({ type (dt_created )} )"
178+ )
179+
180+ elif dt_created is None :
181+ logger .info (
182+ f"[rss-plugin] Creation date of { in_page .file .abs_src_path } has not "
183+ "been recognized."
184+ )
148185
149- if source_date_update != "git" and in_page .meta .get (source_date_update ):
186+ if not self .use_git or (
187+ source_date_update != "git" and in_page .meta .get (source_date_update )
188+ ):
150189 dt_updated = self .get_date_from_meta (
151190 date_metatag_value = in_page .meta .get (source_date_update ),
152191 meta_datetime_format = meta_datetime_format ,
153192 meta_datetime_timezone = meta_default_timezone ,
154193 meta_default_time = meta_default_time ,
155194 )
195+
156196 if isinstance (dt_updated , str ):
157- logger .error (f"Update date is a string: { dt_updated } " )
158- dt_updated = None
197+ logger .info (
198+ f"[rss-plugin] Update date of { in_page .file .abs_src_path } is an "
199+ f"a character string: { dt_updated } ({ type (dt_updated )} )"
200+ )
201+
202+ elif dt_updated is None :
203+ logger .info (
204+ f"[rss-plugin] Update date of { in_page .file .abs_src_path } is an "
205+ f"unrecognized type: { dt_updated } ({ type (dt_updated )} )"
206+ )
159207
160208 # explore git log
161209 if self .git_is_valid :
@@ -180,12 +228,14 @@ def get_file_dates(
180228 logging .warning (
181229 f"[rss-plugin] Unable to read git logs of '{ in_page .file .abs_src_path } '. "
182230 "Is git log readable? Falling back to build date. "
231+ "To disable this warning, set 'use_git: false' in plugin options. "
183232 f"Trace: { err } "
184233 )
185234 except GitCommandNotFound as err :
186235 logging .error (
187236 "[rss-plugin] Unable to perform command 'git log'. Is git installed? "
188- " Falling back to build date. "
237+ "Falling back to build date. "
238+ "To disable this warning, set 'use_git: false' in plugin options. "
189239 f"Trace: { err } "
190240 )
191241 self .git_is_valid = 0
@@ -334,11 +384,22 @@ def get_date_from_meta(
334384 time_to_add = datetime .min .time ()
335385 out_date = datetime .combine (date_metatag_value , time_to_add )
336386 else :
337- return "[rss-plugin] Incompatible date type."
387+ logger .debug (
388+ f"[rss-plugin] Incompatible date type: { type (date_metatag_value )} "
389+ )
390+ return out_date
338391 except ValueError as err :
339- return f"[rss-plugin] Incompatible date found. Trace: { err } "
392+ logger .error (
393+ f"[rss-plugin] Incompatible date found: { date_metatag_value = } "
394+ f"{ type (date_metatag_value )} . Trace: { err } "
395+ )
396+ return out_date
340397 except Exception as err :
341- return f"[rss-plugin] Unable to retrieve creation date. Trace: { err } "
398+ logger .error (
399+ f"[rss-plugin] Unable to retrieve creation date: { date_metatag_value = } "
400+ f"{ type (date_metatag_value )} . Trace: { err } "
401+ )
402+ return out_date
342403
343404 if not out_date .tzinfo :
344405 out_date = set_datetime_zoneinfo (out_date , meta_datetime_timezone )
0 commit comments