Exemple #1
0
        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);
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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);
        }