Пример #1
0
        /// <summary>
        /// Выполняет деплой модуля.
        /// </summary>
        /// <param name="deployInfo"></param>
        internal override bool Deploy(DeployInfo deployInfo)
        {
            if (deployInfo == null)
            {
                throw new ArgumentNullException(nameof(deployInfo));
            }

            OptionItem item = this.CustomerComboBox.SelectedItem as OptionItem;

            if (item == null)
            {
                throw new NotificationException("Не выбрана папка комплекта");
            }

            //получение папки
            string todayDirName   = DateTime.Now.ToString("yyyy.MM.dd");
            string readmeFilePath = null;

            string[]      dateFolders = Directory.GetDirectories(item.DirectoryPath).Where(x => Regex.IsMatch(x, @"[\d\.]+")).ToArray();
            string        todayDir    = dateFolders.FirstOrDefault(x => x.EndsWith("\\" + todayDirName));
            DirectoryInfo dir;

            if (todayDir == null)
            {
                dir = Directory.CreateDirectory(Path.Combine(item.DirectoryPath, todayDirName));
            }
            else
            {
                dir            = new DirectoryInfo(todayDir);
                readmeFilePath = Directory.GetFiles(dir.FullName, "readme.txt", SearchOption.TopDirectoryOnly).FirstOrDefault();
            }

            if (readmeFilePath == null)
            {
                //получаем уже существующий файл readme
                IOrderedEnumerable <string> orderedDirectories = dateFolders.OrderByDescending(x => x);
                readmeFilePath = orderedDirectories
                                 .Select(d => Directory.GetFiles(d, "readme.txt", SearchOption.TopDirectoryOnly).FirstOrDefault())
                                 .FirstOrDefault(x => x != null);
            }

            //формируем комплект
            return(this.CreatePackage(deployInfo, dir, readmeFilePath));
        }
Пример #2
0
        /// <summary>
        /// Выполняет действия при инициализации контролов для данного вида деплоя.
        /// </summary>
        internal override void OnInit()
        {
            //пытаемся автоматически выбрать подходящую папку
            bool?  projectSelected        = null;
            string projectNameStartPatter = "wssc.v4.dms.";
            string projectName            = this.Form.Command.DTEInfo.SelectedProject.Name.ToLower();

            if (!String.IsNullOrEmpty(projectName) && projectName.StartsWith(projectNameStartPatter))
            {
                projectName = projectName.Substring(projectNameStartPatter.Length);
                int dotIndex = projectName.IndexOf('.');
                if (dotIndex != -1)
                {
                    projectName = projectName.Substring(0, dotIndex - 1);
                }
                projectSelected = false;
            }

            int selectIndex = -1;

            //заполняем варианты папок для деплоя
            string[] directories = Directory.GetDirectories(this.Form.Command.Options.PackageFolderPath, "*", SearchOption.TopDirectoryOnly);
            if (directories.Length > 0)
            {
                foreach (string directory in directories)
                {
                    OptionItem optionItem = new OptionItem(directory);
                    this.CustomerComboBox.Items.Add(optionItem);
                    if (selectIndex == -1 &&
                        projectSelected.HasValue &&
                        projectSelected.Value == false &&
                        optionItem.DisplayName.ToLower().StartsWith(projectName))
                    {
                        selectIndex     = this.CustomerComboBox.Items.Count - 1;
                        projectSelected = true;
                    }
                }
                this.CustomerComboBox.SelectedIndex = projectSelected == true ? selectIndex : 0;
            }
        }
Пример #3
0
        /// <summary>
        /// Выкладывание в тестирование.
        /// </summary>
        /// <param name="switcher"></param>
        /// <param name="testComboBox">Выбор папки с папками тестирования.</param>
        /// <param name="deployPackageDestinationForm"></param>
        public TestDeploy(RadioButton switcher, ComboBox testComboBox, ComboBox testFoldersBox, DeployPackageDestinationForm deployPackageDestinationForm)
            : base(switcher, new Control[] { testComboBox, testFoldersBox }, deployPackageDestinationForm)
        {
            this.TestComboBox = testComboBox ?? throw new ArgumentNullException(nameof(testComboBox));
            TestFoldersBox    = testFoldersBox ?? throw new ArgumentNullException(nameof(testFoldersBox));

            // Определяем поведение при выборе папки тестирования
            this.TestComboBox.SelectedIndexChanged += (s, e) =>
            {
                OptionItem item = this.TestComboBox.SelectedItem as OptionItem;
                int        year = DateTime.Now.Year;

                this.TestFoldersBox.Items.Clear();
                this.TestFoldersBox.Items.AddRange(

                    // Берём подпапки выбранной папки тестирования
                    Directory.EnumerateDirectories(item.DirectoryPath, $"{year}*", SearchOption.TopDirectoryOnly)

                    // Получаем информацию по папкам
                    .Select(path => new DirectoryInfo(path))

                    // На всякий случай отсеиваем несуществующие
                    .Where(dir => dir.Exists)

                    // Сортируем по названию
                    .OrderByDescending(dir => dir.Name)

                    // Берём первые 10
                    .Take(10)

                    // Формируем варианты выбора для списка
                    .Select(x => new OptionItem(x)).ToArray()
                    );
                this.TestFoldersBox.Text = this.FolderTemplateName;
            };
        }