Example #1
0
    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());
    }
Example #2
0
    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);
    }
Example #3
0
    void UpdateSplashScreen(Calendar calendar)
    {
        var file = Path.Combine(SolverExtensions.WorkingDir(calendar.Year), "SplashScreen.cs");

        WriteFile(file, new SplashScreenGenerator().Generate(calendar));
    }
Example #4
0
 string Dir(int year, int day) => SolverExtensions.WorkingDir(year, day);