Пример #1
0
        /// <summary>
        /// Reads from the stream until the external program is ended.
        /// </summary>
        private void StreamReaderThread_Error()
        {
            try
            {
                var reader = m_StdError;

                while (true)
                {
                    var logContents = reader.ReadLine();
                    if (logContents == null)
                    {
                        break;
                    }

                    // ensure only one thread writes to the log at any time
                    lock (LockObject)
                    {
                        if (Verbose)
                        {
                            ErrorWriter.WriteLine(logContents);
                        }
                        MemoryWriter.WriteLine(logContents);
                    }
                }
                lock (LockObject)
                {
                    ErrorWriter.Flush();
                    MemoryWriter.Flush();
                }
            }
            catch (Exception)
            {
                // just ignore any errors
            }
        }
        // TODO: TBD: refactor this type of functionality to base class, i.e. ReportErrorLevel...
        private bool TryReportErrorLevel(int level)
        {
            // TODO: TBD: perhaps an indexer would be great as well...
            var descriptor = Levels.FirstOrDefault(x => x.ErrorLevel == level);

            // TODO: TBD: perhaps, CanReport property?

            // ReSharper disable once InvertIf
            if (descriptor != null && !IsNullOrEmpty(descriptor.Description))
            {
                switch (level)
                {
                case Logger.CriticalLevel:
                case Logger.ErrorLevel:
                    ErrorWriter.WriteLine(descriptor.Description);
                    break;

                default:
                    Writer.WriteLine(descriptor.Description);
                    break;
                }
            }

            // Error Level will have been Reported.
            return(level != DefaultErrorLevel);
        }
Пример #3
0
        /// <summary>
        /// Reads from the stream until the external program is ended.
        /// </summary>
        private void StreamReaderThread_Error()
        {
            StreamReader reader   = _stdError;
            bool         doAppend = OutputAppend;

            while (true)
            {
                string logContents = reader.ReadLine();
                if (logContents == null)
                {
                    break;
                }

                // ensure only one thread writes to the log at any time
                lock (_lockObject) {
                    ErrorWriter.WriteLine(logContents);
                    if (Output != null)
                    {
                        StreamWriter writer = new StreamWriter(Output.FullName, doAppend);
                        writer.WriteLine(logContents);
                        doAppend = true;
                        writer.Close();
                    }
                }
            }

            lock (_lockObject) {
                ErrorWriter.Flush();
            }
        }
Пример #4
0
 public void WriteError(string message)
 {
     HasLoggedErrors = true;
     if (ErrorWriter != null)
     {
         ErrorWriter.WriteLine(message);
         ErrorWriter.Flush();
     }
 }
Пример #5
0
        private void WriteError(FileLineParseException pex)
        {
            if (ErrorWriter == null)
            {
                return;
            }

            ErrorWriter.WriteLine(pex.Context.FileName);
            ErrorWriter.WriteLine(pex.Message);
        }
        public void Error(String contents, params object[] args)
        {
            if (enableLevel > 0)
            {
                return;
            }

            errorCount++;

            ErrorWriter.Write("compiler error:  ");
            ErrorWriter.WriteLine(contents, args);
        }
Пример #7
0
 public void Execute(ICommand command)
 {
     if (command != null)
     {
         SetUp(command);
         HandleDependenciesOf(command);
         command.Execute();
     }
     else
     {
         ErrorWriter.WriteLine(Messages.Error.NoCommandToExecute);
     }
 }
Пример #8
0
        private void ReportException(Exception ex)
        {
            var exceptionLevel = 1;

            while (ex != null)
            {
                ErrorWriter.WriteLine($"{exceptionLevel}: {ex.Message}");
                ErrorWriter.WriteLine($"{exceptionLevel}: {ex.StackTrace}");

                ex = ex.InnerException;
                exceptionLevel++;
            }
        }
Пример #9
0
        public override void Execute()
        {
            VerifyProperties();
            InitializeAdapter();

            var todaysPeople = Repository.Search(DateTime.Today.ToString());

            if (todaysPeople.Any())
            {
                PresentTodaysPeople(todaysPeople);
            }
            else
            {
                ErrorWriter.WriteLine(Messages.Error.NoBirthdaysToday);
            }
        }
Пример #10
0
        public override void Execute()
        {
            VerifyProperties();
            var indexOfPersonToDelete = AskForIndexOfPersonToDelete();
            var deleteSuccessful      = DeletePersonOnIndex(indexOfPersonToDelete);

            Writer.SkipLine();
            if (deleteSuccessful)
            {
                Writer.WriteLine(Messages.Success.DeletedPerson, _deletedPersonName);
            }
            else
            {
                ErrorWriter.WriteLine(Messages.Error.DeleteFailed);
            }
        }
Пример #11
0
 public ICommand AskForCommand()
 {
     try
     {
         TextWriter.Write(Messages.Instruction.ChooseCommand);
         var command = CommandReader.ReadCommand();
         TextWriter.WriteLine(Messages.Declaration.SelectedCommand, command.Name, command.Description);
         TextWriter.SkipLine();
         return(command);
     }
     catch (InvalidCommandException)
     {
         ErrorWriter.WriteLine(Messages.Error.InvalidCommand);
         return(null);
     }
 }
Пример #12
0
        /// <summary>
        /// Parses arguments into settings and saves them.
        /// </summary>
        /// <param name="args">The arguments to parse.</param>
        /// <param name="settings">The settings object.</param>
        /// <returns>
        /// Zero, if parsing was successful. Non-zero if there was an error while parsing.
        /// </returns>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="args"/> cannot be null.
        /// </exception>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="settings"/> cannot be null.
        /// </exception>
        public int Parse(string[] args, TSettings settings)
        {
            if (args == null)
            {
                throw new ArgumentNullException(nameof(args));
            }
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            var optionSet = new OptionSet();
            var options   = new TOptions();

            OnParsing(settings.GetType(), optionSet, options);

            try
            {
                var extraArgs = optionSet.Parse(args);
                if (extraArgs.Any())
                {
                    var first = extraArgs.First();
                    throw new OptionException($"'{first}' is not a valid option.", first);
                }
            }
            catch (OptionException ex)
            {
                ErrorWriter.WriteLine($"{EntryAssemblyFileName}: {ex.Message}");
                WriteUsage(optionSet);

                return(1);
            }

            if (options.ShowHelp)
            {
                WriteUsage(optionSet);

                return(0);
            }

            OnParsed(options, settings);

            settings.Save();
            Log.Info("Saved settings.");

            return(0);
        }
Пример #13
0
        public override void Execute()
        {
            VerifyProperties();
            InitializeAdapter();

            var query   = AskForSearchQuery();
            var results = Repository.Search(query);

            Writer.SkipLine();
            if (results.Any())
            {
                Present(results);
            }
            else
            {
                ErrorWriter.WriteLine(Messages.Error.SearchGotNoResults);
            }
        }
Пример #14
0
        public override void Execute()
        {
            VerifyProperties();
            var name     = GetPersonName();
            var birthday = GetPersonBirthday();
            var person   = new Person(GenerateGuid(), name, birthday);

            Repository.Insert(person, out bool successful);

            Writer.SkipLine();
            if (successful)
            {
                Writer.WriteLine(Messages.Success.AddedPerson);
            }
            else
            {
                ErrorWriter.WriteLine(Messages.Error.AddFailed);
            }
        }
        public void Error(String filename, LexicalPosition pos, String contents, params object[] args)
        {
            if (enableLevel > 0)
            {
                return;
            }

            errorCount++;

            if (pos.Column == 0)
            {
                ErrorWriter.Write("{0}:{1}\terror:  ", filename, pos.Line);
            }
            else
            {
                ErrorWriter.Write("{0}:{1},{2}\terror:  ", filename, pos.Line, pos.Column);
            }

            ErrorWriter.WriteLine(contents, args);
        }
Пример #16
0
 private void WriteUpdateFailedMessage()
 {
     ErrorWriter.WriteLine(Messages.Error.UpdateNameFailed);
 }
Пример #17
0
 /// <summary>
 /// Writes an error to the log
 /// </summary>
 /// <param name="message">The message to be written</param>
 public static void WriteError(ErrorData ED)
 {
     ErrorCount++;
     ErrorWriter.WriteLine($"{ErrorCount}, {ED.FileName}, {ED.Sheet}, {ED.Table}, {ED.Message}, {ED.Severity}, {DateTime.Now}");
 }
Пример #18
0
 private void WriteEmptyRepositoryMessage()
 {
     ErrorWriter.WriteLine(Messages.Error.NoPeopleAdded);
 }