private CourseYearConfig ParseCourseYear(Course course, string yearDir) { try { var yearConfig = Path.Combine(yearDir, "config.yaml"); var settingsConfig = Path.Combine(yearDir, "settings.yaml"); var groupsConfig = Path.Combine(yearDir, "groups.yaml"); var year = new CourseYearConfig { Year = Path.GetFileName(yearDir) }; // 1) required config.yaml if (!File.Exists(yearConfig)) { return(null); } (year.Problems, year.Yaml) = YamlRead.ReadFromFile <List <CourseProblem> >(yearConfig); // 2) optional settings.yaml if (File.Exists(settingsConfig)) { var settConf = YamlRead.ReadFromFile <SettingsConfig>(settingsConfig); year.SettingsConfig = settConf.data; } else { year.SettingsConfig = new SettingsConfig(); } // 3) optional groups.yaml if (File.Exists(groupsConfig)) { var groupConf = YamlRead.ReadFromFile <CourseGroup>(groupsConfig); year.CourseGroup = groupConf.data; } else { year.CourseGroup = new CourseGroup(); } return(year); } catch (DetailedException e) { var msg = $"Error while parsing file {e.File}: "; course.Errors.Add(msg); course.Errors.AddRange(e.Messages); Console.Error.WriteLine(msg); return(null); } }
public static SettingsConfig CreateDummySettingsConfig(CourseYearConfig courseYearConfig) { var dummy = new SettingsConfig(); var course = courseYearConfig.Course; dummy.Teachers = course.CourseConfig.Teachers .Select(i => new SettingsConfigTeacher { Id = i.id, Tags = i.Tags, Students = course.CourseConfig.Students, Problems = courseYearConfig.Problems.Select(j => j.Id).ToList(), }).ToList(); return(dummy); }
private void ParseCourseYear(string yearDir, List <CourseYearConfig> result) { var yearConfig = Path.Combine(yearDir, "config.yaml"); var settingsConfig = Path.Combine(yearDir, "settings.yaml"); if (File.Exists(yearConfig)) { // parse config.yaml var cfg = new CourseYearConfig { Year = Path.GetFileName(yearDir) }; (cfg.Problems, cfg.Yaml) = YamlRead.ReadFromFile <List <CourseProblem> >(yearConfig); cfg.SettingsConfig = ParseSettingConfigOrDefault(settingsConfig); result.Add(cfg); } }