|
17 | 17 | SCRIPT_LOCATION = Path(__file__).parent |
18 | 18 |
|
19 | 19 | # Suppress the FutureWarning from ics library |
20 | | -# NOTE: The warning arises in the store method and can be ignored safely |
| 20 | +# NOTE: The warning is raised in the `store` method and can be ignored safely |
21 | 21 | warnings.filterwarnings( |
22 | 22 | "ignore", |
23 | 23 | message="Behaviour of str\\(Component\\) will change in version 0.9", |
|
28 | 28 |
|
29 | 29 | class CalendarGenerator: |
30 | 30 | def __init__(self): |
31 | | - self.logger = self._get_logger_config(logging.INFO) |
| 31 | + load_dotenv() |
| 32 | + self.DEV_MODE = os.getenv("DEV_MODE", "false").lower() == "true" |
32 | 33 |
|
33 | | - self.logger.debug("Initializing CalendarGenerator") |
| 34 | + log_level_str = os.getenv("LOG_LEVEL", "DEBUG").upper() |
| 35 | + level_mapping = logging.getLevelNamesMapping() |
| 36 | + log_level = level_mapping.get(log_level_str, logging.INFO) |
34 | 37 |
|
| 38 | + self.logger = self._get_logger_config(log_level) |
| 39 | + self.logger.debug("Initializing CalendarGenerator") |
35 | 40 | self.logger.debug("Loading environment variables") |
36 | | - load_dotenv() |
37 | 41 |
|
38 | 42 | # Use GITHUB_WORKSPACE if available (GitHub Actions), otherwise fallback |
39 | 43 | github_workspace = os.getenv("GITHUB_WORKSPACE") |
| 44 | + posts_dir_name = os.getenv("POSTS_DIR_NAME", "_posts") |
40 | 45 | if github_workspace: |
41 | 46 | # In GitHub Actions: use workspace root + _posts |
42 | | - self.posts_dir = Path(github_workspace) / "_posts" |
| 47 | + self.posts_dir = Path(github_workspace) / posts_dir_name |
43 | 48 | self.logger.debug(f"Using GitHub workspace: {github_workspace}") |
44 | 49 | self.logger.debug(f"Posts directory set to: {self.posts_dir}") |
45 | 50 | else: |
46 | 51 | # Local development: use relative path |
47 | | - self.posts_dir = Path(SCRIPT_LOCATION).joinpath("../../_posts") |
| 52 | + if not self.DEV_MODE: |
| 53 | + self.logger.warning("DEV_MODE is not enabled.") |
| 54 | + self.posts_dir = Path(SCRIPT_LOCATION).joinpath(f"../../{posts_dir_name}") |
48 | 55 | self.logger.debug("Using relative path for local development") |
49 | 56 | self.logger.debug(f"Posts directory set to: {self.posts_dir}") |
50 | 57 |
|
51 | 58 | # Log additional debugging info |
52 | 59 | self.logger.debug(f"Posts directory exists: {self.posts_dir.exists()}") |
53 | 60 | self.logger.debug(f"Posts directory resolved: {self.posts_dir.resolve()}") |
54 | 61 |
|
| 62 | + self.md_files_extension = os.getenv("POSTS_FILE_EXTENSION", ".md") |
55 | 63 | if self.posts_dir.exists(): |
56 | | - md_files = list(self.posts_dir.glob("*.md")) |
57 | | - self.logger.debug(f"Found {len(md_files)} .md files in posts directory") |
| 64 | + md_files = list(self.posts_dir.glob(f"*{self.md_files_extension}")) |
| 65 | + self.logger.debug( |
| 66 | + f"Found {len(md_files)} {self.md_files_extension} files in posts directory" |
| 67 | + ) |
58 | 68 | else: |
59 | 69 | self.logger.critical( |
60 | 70 | f"Posts directory does not exist: {self.posts_dir}. Aborting" |
61 | 71 | ) |
62 | 72 | sys.exit(1) |
63 | 73 |
|
64 | 74 | self.output_ics_file: Path = Path(os.getenv("OUTPUT_ICS_FILE", "calendar.ics")) |
65 | | - self.organizer = Organizer( |
66 | | - common_name="DotNet UserGroup Regensburg", email="info@dotnet-regensburg.de" |
| 75 | + |
| 76 | + dotnet_ug_name = os.getenv("DOTNET_UG_NAME", "DotNet UserGroup Regensburg") |
| 77 | + dotnet_ug_email = os.getenv("DOTNET_UG_EMAIL", "info@dotnet-regensburg.de") |
| 78 | + self.organizer = Organizer(common_name=dotnet_ug_name, email=dotnet_ug_email) |
| 79 | + self.talks_url: str = os.getenv( |
| 80 | + "DOTNET_UG_ARCHIVE", "https://dotnetregensburg.github.io/archive/" |
| 81 | + ) |
| 82 | + alarm_trigger_minutes = int(os.getenv("ALARM_TRIGGER_MINUTES", -15)) |
| 83 | + self.alarm: DisplayAlarm = DisplayAlarm( |
| 84 | + trigger=datetime.timedelta(minutes=alarm_trigger_minutes) |
67 | 85 | ) |
68 | | - self.talks_url: str = "https://dotnetregensburg.github.io/archive/" |
69 | | - self.alarm: DisplayAlarm = DisplayAlarm(trigger=datetime.timedelta(minutes=15)) |
70 | 86 |
|
71 | 87 | self.logger.debug("Finished loading environment variables successfully") |
72 | 88 |
|
@@ -131,10 +147,10 @@ def create_calendar(self) -> Calendar: |
131 | 147 | return calendar |
132 | 148 |
|
133 | 149 | # Get all markdown files |
134 | | - md_files = list(self.posts_dir.rglob("*.md")) |
| 150 | + md_files = list(self.posts_dir.rglob(f"*{self.md_files_extension}")) |
135 | 151 |
|
| 152 | + # Print filenames for debugging if no *.md files found |
136 | 153 | if len(md_files) == 0: |
137 | | - # Try different patterns to debug |
138 | 154 | all_files = list(self.posts_dir.rglob("*")) |
139 | 155 | self.logger.debug(f"Total files in directory: {len(all_files)}") |
140 | 156 | if len(all_files) > 0: |
|
0 commit comments