static void Main(string[] args) { Logger.LogMessage($"Page Generator started with args: {string.Join(", ", args)}"); Logger.LogMessage($"Starting in: {Environment.CurrentDirectory}"); var root = BuildConfiguration(args); var env = root.GetSection(k_EnvironmentPath).Value; if (!string.IsNullOrEmpty(env)) { Environment.CurrentDirectory = env; } var source = root.GetSection(k_SourcePathArg).Value; var destination = root.GetSection(k_DestinationPathArg).Value; var libraries = root.GetSection(k_LibrariesPathArg).Value; var interactive = GetSectionFromLongOrShortVersion(root, k_InteractiveArg); var clean = GetSectionFromLongOrShortVersion(root, k_CleanArg); var rebuild = GetSectionFromLongOrShortVersion(root, k_RebuildArg); var build = GetSectionFromLongOrShortVersion(root, k_BuildArg); var help = GetSectionFromLongOrShortVersion(root, k_HelpArg); if (help) { PrintHelpMessage(); return; } // Convert to absolute paths, since environment dir will be changed later var gen = new PageGenerator(new TagCollector()) { SourceFolder = string.IsNullOrEmpty(source) ? "" : Path.GetFullPath(source), DestinationFolder = string.IsNullOrEmpty(destination) ? "" : Path.GetFullPath(destination), LibrariesFolder = string.IsNullOrEmpty(libraries) ? "" : Path.GetFullPath(libraries) }; // Print current paths for easier debugging Console.WriteLine(); Logger.LogMessage($"Source directory set to: {source} ('{gen.SourceFolder}')"); Logger.LogMessage($"Destination directory set to: {destination} ('{gen.DestinationFolder}')"); Logger.LogMessage($"Libraries directory set to: {libraries} ('{gen.LibrariesFolder}')"); if (!Directory.Exists(gen.DestinationFolder)) { Logger.LogError($"Destination directory not found: {gen.DestinationFolder}"); gen.ReportErrors(); return; } // Change environment current directory try { Environment.CurrentDirectory = gen.SourceFolder; Logger.LogMessage($"Current directory changed to: {Environment.CurrentDirectory}"); } catch { Logger.LogError($"Source directory not found: {gen.SourceFolder}"); gen.ReportErrors(); return; } Console.WriteLine(); RunGenerator(gen, interactive, clean, rebuild, build); gen.ReportErrors(); }