Exemplo n.º 1
0
 public FlubuConfiguration(
     TravisOptions travisOptions,
     AzurePipelineOptions azureOptions,
     GitHubActionsOptions gitHubActionsOptions,
     AppVeyorOptions appVeyorOptions,
     JenkinsOptions jenkinsOptions)
 {
     TravisOptions        = travisOptions;
     AzurePipelineOptions = azureOptions;
     GitHubActionsOptions = gitHubActionsOptions;
     AppVeyorOptions      = appVeyorOptions;
     JenkinsOptions       = jenkinsOptions;
 }
        public void Initialize()
        {
            IsLoading             = Visibility.Hidden;
            IsTabProjectsSelected = true;

            var eventManager = ServiceProvider.GetService <SEventManager, IEventManager>();

            _options = eventManager.AppVeyorOptions;
            _options.OptionsChanged += OnOptionsChanged;

            if (string.IsNullOrWhiteSpace(_options.ApiToken))
            {
                Telemetry.Instance.TrackEvent("API Token empty error");
                var message =
                    string.Format(
                        "Please input API token from your AppVeyor account in Tools | Options | AppVeyor.{0}Token can be found on API token page under your AppVeyor account.",
                        Environment.NewLine);
                ShowMessageOnUI(message);
                StopPollingForProjects();
                Projects = null;
            }
            else
            {
                _repository = new Repository(_options.ApiToken);
                IsLoading   = Visibility.Visible;
                Projects    = new ObservableCollection <Project>();
                IsTabEnvironmentsVisible = false;
                IsTabUsersVisible        = false;
                ShowMessageOnUI("Loading...Please wait!");
                //await GetDataFromServerAsync();
                var metrics = new Dictionary <string, double>
                {
                    { "ProjectsCount", Projects.Count }
                };
                var properties = new Dictionary <string, string>();
                Telemetry.Instance.TrackEvent("GetProjectsFromServer", properties, metrics);
                StartPollingForProjects();
                IsLoading = Visibility.Collapsed;
            }
        }
        public void FromOptions(AppVeyorOptions options)
        {
            CloneDepth = options.CloneDepth;

            if (options.Images.IsNullOrEmpty())
            {
                options.SetVirtualMachineImage(AppVeyorImage.VisualStudio2019, AppVeyorImage.Ubuntu1804);
            }

            Image = options.Images;

            if (!options.SkipCommitsFiles.IsNullOrEmpty())
            {
                SkipCommits = new SkipCommits
                {
                    Files = options.SkipCommitsFiles
                };
            }

            if (!options.Services.IsNullOrEmpty())
            {
                Services = options.Services;
            }

            For = new List <For>();

            foreach (var image in options.Images)
            {
                For f = new For();

                var matrix = new Matrix();
                matrix.Only = new List <Only>
                {
                    new Only {
                        Image = image
                    }
                };

                f.BeforeBuild.Add(CreateCommand("dotnet tool install --global FlubuCore.Tool --version 5.1.8", image));

                foreach (var beforeBuild in options.BeforeBuilds)
                {
                    if (beforeBuild.image.Equals("all", StringComparison.OrdinalIgnoreCase) || beforeBuild.image == image)
                    {
                        f.BeforeBuild.Add(CreateCommand(beforeBuild.beforeScript, beforeBuild.image));
                    }
                }

                if (!string.IsNullOrEmpty(options.WorkingDirectory))
                {
                    f.BuildScript.Add(CreateCommand($"cd {options.WorkingDirectory}", image));
                }

                foreach (var script in options.CustomScriptsBeforeTarget)
                {
                    if (script.image.Equals("all", StringComparison.OrdinalIgnoreCase) || script.image == image)
                    {
                        f.BuildScript.Add(CreateCommand(script.script, script.image));
                    }
                }

                bool customTargetAddedForImage = false;

                foreach (var target in options.Targets)
                {
                    if (target.image.Equals("all", StringComparison.OrdinalIgnoreCase) || target.image == image)
                    {
                        f.BuildScript.Add(CreateCommand($"flubu {target.target}", target.image));
                        customTargetAddedForImage = true;
                    }
                }

                if (!customTargetAddedForImage)
                {
                    f.BuildScript.Add(CreateCommand($"flubu {string.Join(" ", options.TargetNames)}", image));
                }

                foreach (var script in options.CustomScriptsAfterTarget)
                {
                    if (script.image.Equals("all", StringComparison.OrdinalIgnoreCase) || script.image == image)
                    {
                        f.BuildScript.Add(CreateCommand(script.script, script.image));
                    }
                }

                f.Matrix = matrix;
                For.Add(f);
            }
        }