/// <summary>
        /// Получить аргументы командной строки для проверки доступности LUA
        /// </summary>
        /// <returns>Аргументы командной строки одной строкой</returns>
        private string GetArguments(string fileName)
        {
            string pathToFile =
                Path.Combine(projectManager.OriginalCMDFilesPath, fileName);

            string[] arguments = File.ReadAllLines(pathToFile,
                                                   EncodingDetector.DetectFileEncoding(pathToFile));

            return(string.Join(connectCommandsChar, arguments));
        }
        /// <summary>
        /// Сохранить количество строк кода main.plua в SVG.
        /// </summary>
        /// <param name="folderPath">Путь к каталогу</param>
        /// <param name="locFilePath">Пусть к файлу, для которого надо
        /// сохранить LOC</param>
        private static void SaveLOC(string folderPath, string locFilePath)
        {
            const int maxLOCCount = 1000;

            folderPath  += linesOfCodeMainProgramFileName;
            locFilePath += @"\" + ProjectDescriptionSaver.MainProgramFileName;

            string[] readedFile = File.ReadAllLines(locFilePath,
                                                    EncodingDetector.DetectFileEncoding(locFilePath));
            int    loc            = readedFile.Length;
            string displayingText = $"{loc} строк кода";
            string result         = MakeStringForWriting(loc, maxLOCCount,
                                                         displayingText);

            WriteFile(result, folderPath);
        }
        /// <summary>
        /// Считывание описания.
        /// </summary>
        private int LoadDescriptionFromFile(out string LuaStr,
                                            out string errStr, string projectName, string fileName)
        {
            LuaStr = "";
            errStr = "";

            StreamReader sr   = null;
            string       path = GetPtusaProjectsPath(projectName) + projectName +
                                fileName;

            try
            {
                if (!File.Exists(path))
                {
                    errStr = "Файл описания проекта \"" + path +
                             "\" отсутствует! Создано пустое описание.";
                    Directory.CreateDirectory(Path.GetDirectoryName(path));
                    File.WriteAllText(path, string.Empty);
                }
            }
            catch (DriveNotFoundException)
            {
                errStr = "Укажите правильные настройки каталога!";
                return(1);
            }

            bool needEncoding = EncodingDetector.MainFilesEncoding == null &&
                                fileName.Contains(ProjectDescriptionSaver
                                                  .MainTechObjectsFileName);

            if (needEncoding)
            {
                EncodingDetector.MainFilesEncoding = EncodingDetector
                                                     .DetectFileEncoding(path);
            }

            sr     = new StreamReader(path, EncodingDetector.MainFilesEncoding);
            LuaStr = sr.ReadToEnd();
            sr.Close();

            return(0);
        }
        /// <summary>
        /// Загрузка шаблонов для сохраняемых файлов
        /// </summary>
        private static void LoadFilePatterns()
        {
            const string mainProgramPatternFileName = "mainPattern.plua";
            string       pathToSystemFiles          = ProjectManager.GetInstance()
                                                      .SystemFilesPath;
            string pathToMainPluaFile = Path
                                        .Combine(pathToSystemFiles, mainProgramPatternFileName);

            try
            {
                var reader = new StreamReader(pathToMainPluaFile,
                                              EncodingDetector.DetectFileEncoding(pathToMainPluaFile));
                mainProgramFilePattern = reader.ReadToEnd();
                reader.Close();
                mainProgramFilePatternIsLoaded = true;
            }
            catch
            {
                MessageBox.Show($"Не найден шаблон {mainProgramFileName}",
                                "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        /// <summary>
        /// Сохранить количество строк кода main.plua в SVG.
        /// </summary>
        /// <param name="folderPath">Путь к каталогу</param>
        /// <param name="locFilePath">Пусть к файлу, для которого надо
        /// сохранить LOC</param>
        private void SaveLOC(string folderPath, string locFilePath)
        {
            const int maxLOCCount = 1000;

            folderPath  += LinesOfCodeMainProgramFileName;
            locFilePath += @"\" + ProjectDescriptionSaver.MainProgramFileName;

            int loc = 0;

            if (File.Exists(locFilePath))
            {
                string[] readedFile = File.ReadAllLines(locFilePath,
                                                        EncodingDetector.DetectFileEncoding(locFilePath));
                loc = readedFile.Length;
            }

            string labelName = GenerateNounAfterNumber("строк", loc, "a", "и",
                                                       string.Empty);
            string displayingText = $"{loc} {labelName} кода";
            string result         = MakeStringForWriting(loc, maxLOCCount,
                                                         displayingText);

            WriteFile(result, folderPath);
        }