void UpdateReadmeForYear(Calendar calendar) { var file = Path.Combine(SolverExtensions.WorkingDir(calendar.Year), "README.md"); WriteFile(file, new ReadmeGeneratorForYear().Generate(calendar)); var svg = Path.Combine(SolverExtensions.WorkingDir(calendar.Year), "calendar.svg"); WriteFile(svg, calendar.ToSvg()); }
public async Task Update(int year, int day) { var session = GetSession(); var baseAddress = new Uri("https://adventofcode.com/"); var context = BrowsingContext.New(Configuration.Default .WithDefaultLoader() .WithCss() .WithDefaultCookies() ); context.SetCookie(new Url(baseAddress.ToString()), "session=" + session); var calendar = await DownloadCalendar(context, baseAddress, year); var problem = await DownloadProblem(context, baseAddress, year, day); var dir = Dir(year, day); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } var years = Assembly.GetEntryAssembly().GetTypes() .Where(t => t.GetTypeInfo().IsClass&& typeof(Solver).IsAssignableFrom(t)) .Select(tsolver => SolverExtensions.Year(tsolver)); UpdateProjectReadme(years.Min(), years.Max()); UpdateReadmeForYear(calendar); UpdateSplashScreen(calendar); UpdateReadmeForDay(problem); UpdateInput(problem); UpdateRefout(problem); UpdateSolutionTemplate(problem); }
void UpdateSplashScreen(Calendar calendar) { var file = Path.Combine(SolverExtensions.WorkingDir(calendar.Year), "SplashScreen.cs"); WriteFile(file, new SplashScreenGenerator().Generate(calendar)); }
string Dir(int year, int day) => SolverExtensions.WorkingDir(year, day);