void EmitBuildParameter(LogRotateOptionsBuilder builder, string line) { var match = Regex.Match(line, @"^\s*(?<name>\S+)(\s+(?<val>.*?))?\s*$"); if (!match.Success) { throw new InvalidOperationException("invalid config " + line); } var name = match.Groups["name"].Value; var value = match.Groups["val"].Value.TrimEnd(); builder.AddBuildParameter(name, string.IsNullOrEmpty(value) ? null : value); }
public LogRotateOptionsBuilder CreateBuilder() { var file = this.file; if (string.IsNullOrEmpty(file)) { return(new DefaultLogRotateOptionsBuilder()); } if (!File.Exists(file)) { file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, file); if (!File.Exists(file)) { return(null); } } using (var stream = File.OpenRead(file)) { var reader = new StreamReader(stream); string line = reader.ReadLine(); while (IsCommentOrEmpty(line)) { line = reader.ReadLine(); } LogRotateOptionsBuilder builder = ParseBuilder(reader, line); while (!reader.EndOfStream) { line = reader.ReadLine(); if (!IsCommentOrEmpty(line)) { throw new InvalidOperationException("config out of { - } : " + line); } } return(builder); } }
private LogRotateOptionsBuilder ParseBuilder(StreamReader reader, string line) { var root = ReadRootLine(line); var builder = new LogRotateOptionsBuilder(root); bool eof = false; while (!eof && !reader.EndOfStream) { line = reader.ReadLine(); eof = Regex.IsMatch(line, @"^\s*}\s*$"); if (!eof && !IsCommentOrEmpty(line)) { EmitBuildParameter(builder, line); } } if (!eof) { throw new InvalidOperationException("missing eof }"); } return(builder); }