Ejemplo n.º 1
0
        protected virtual void WriteSteps(CustomFileWriter writer)
        {
            // using (writer.WriteBlock("- task: DownloadBuildArtifacts@0"))
            // {
            //     // writer.WriteLine("displayName: Download Artifacts");
            //     using (writer.WriteBlock("inputs:"))
            //     {
            //         writer.WriteLine($"artifactName: {Name}");
            //         writer.WriteLine($"downloadPath: {Path.SingleQuote()}");
            //     }
            // }

            using (writer.WriteBlock("- task: CmdLine@2"))
            {
                var arguments = $"{InvokedTargets.JoinSpace()} --skip";
                if (PartitionName != null)
                {
                    arguments += $" --{ParameterService.GetParameterDashedName(PartitionName)} $(System.JobPositionInPhase)";
                }

                using (writer.WriteBlock("inputs:"))
                {
                    writer.WriteLine($"script: './{BuildCmdPath} {arguments}'");
                }

                if (Imports.Count > 0)
                {
                    using (writer.WriteBlock("env:"))
                    {
                        Imports.ForEach(x => writer.WriteLine($"{x.Key}: {x.Value}"));
                    }
                }
            }

            PublishArtifacts.ForEach(x =>
            {
                using (writer.WriteBlock("- task: PublishBuildArtifacts@1"))
                {
                    using (writer.WriteBlock("inputs:"))
                    {
                        writer.WriteLine($"artifactName: {x.Split('/').Last()}");
                        writer.WriteLine($"pathtoPublish: {x.SingleQuote()}");
                    }
                }
            });
        }
Ejemplo n.º 2
0
        public virtual void WriteSteps(CustomFileWriter writer)
        {
            using (writer.WriteBlock("steps"))
            {
                var arguments = $"{InvokedTargets.JoinSpace()} --skip";
                if (Partition != null)
                {
                    arguments += $" --{ParameterService.GetParameterDashedName(PartitionName)} {Partition.Part}";
                }

                using (writer.WriteBlock("exec"))
                {
                    writer.WriteLine($"path = {BuildCmdPath.DoubleQuote()}");
                    writer.WriteLine($"arguments = {arguments.DoubleQuote()}");
                }
            }
        }
Ejemplo n.º 3
0
        public virtual void WriteSteps(CustomFileWriter writer)
        {
            using (writer.WriteBlock("steps"))
            {
                var arguments = $"{InvokedTargets.JoinSpace()} --skip";
                if (Partition != null)
                {
                    arguments += $" --{ParameterService.GetParameterDashedName(PartitionName)} {Partition.Part}";
                }

                using (writer.WriteBlock("exec"))
                {
                    var path = Platform == TeamCityAgentPlatform.Windows
                        ? BuildCmdPath
                        : BuildCmdPath.Replace(".cmd", ".sh");
                    writer.WriteLine($"path = {path.DoubleQuote()}");
                    writer.WriteLine($"arguments = {arguments.DoubleQuote()}");
                }
            }
        }
Ejemplo n.º 4
0
        public virtual void WriteSteps(CustomFileWriter writer)
        {
            using (writer.WriteBlock("steps"))
            {
                var arguments = $"{InvokedTargets.JoinSpace()} --skip";
                if (Partition != null)
                {
                    arguments += $" --{ParameterService.GetParameterDashedName(PartitionName)} {Partition.Part}";
                }

                if (Platform == TeamCityAgentPlatform.Unix)
                {
                    WriteExecStep(writer, arguments);
                }
                else
                {
                    WritePowerShellStep(writer, arguments);
                }
            }
        }
Ejemplo n.º 5
0
        protected virtual void WriteSteps(CustomFileWriter writer)
        {
            // using (writer.WriteBlock("- task: DownloadBuildArtifacts@0"))
            // {
            //     // writer.WriteLine("displayName: Download Artifacts");
            //     using (writer.WriteBlock("inputs:"))
            //     {
            //         writer.WriteLine($"artifactName: {Name}");
            //         writer.WriteLine($"downloadPath: {Path.SingleQuote()}");
            //     }
            // }

            using (writer.WriteBlock("- task: PowerShell@2"))
            {
                var arguments = $"{InvokedTargets.JoinSpace()} --skip";
                if (PartitionName != null)
                {
                    arguments += $" --{ParameterService.GetParameterDashedName(PartitionName)} $(System.JobPositionInPhase)";
                }

                using (writer.WriteBlock("inputs:"))
                {
                    writer.WriteLine($"filePath: {ScriptPath.SingleQuote()}");
                    writer.WriteLine($"arguments: {arguments.SingleQuote()}");
                }
            }

            PublishArtifacts.ForEach(x =>
            {
                using (writer.WriteBlock("- task: PublishBuildArtifacts@1"))
                {
                    using (writer.WriteBlock("inputs:"))
                    {
                        writer.WriteLine($"artifactName: {x}");
                        writer.WriteLine($"pathtoPublish: {StringExtensions.SingleQuote(x)}");
                    }
                }
            });
        }
Ejemplo n.º 6
0
        public virtual void WriteSteps(CustomFileWriter writer)
        {
            using (writer.WriteBlock("steps"))
            {
                var arguments = $"{InvokedTargets.JoinSpace()} --skip";
                if (Partition != null)
                {
                    arguments += $" --{ParameterService.GetParameterDashedName(PartitionName)} {Partition.Part}";
                }

                void WriteConditionalExec(string path, string condition, string platform)
                {
                    using (writer.WriteBlock("exec"))
                    {
                        writer.WriteLine($"path = {path.DoubleQuote()}");
                        writer.WriteLine($"arguments = {arguments.DoubleQuote()}");
                        writer.WriteLine($"conditions {{ {condition}(\"teamcity.agent.jvm.os.name\", {platform.DoubleQuote()}) }}");
                    }
                }

                WriteConditionalExec(BuildCmdPath, "contains", "Windows");
                WriteConditionalExec(BuildCmdPath.Replace(".cmd", ".sh"), "doesNotContain", "Windows");
            }
        }
Ejemplo n.º 7
0
        public override void Write(CustomFileWriter writer)
        {
            using (writer.WriteBlock("- task: CmdLine@2"))
            {
                var arguments = $"{InvokedTargets.JoinSpace()} --skip";
                if (PartitionName != null)
                {
                    arguments += $" --{ParameterService.GetParameterDashedName(PartitionName)} $(System.JobPositionInPhase)";
                }

                using (writer.WriteBlock("inputs:"))
                {
                    writer.WriteLine($"script: './{BuildCmdPath} {arguments}'");
                }

                if (Imports.Count > 0)
                {
                    using (writer.WriteBlock("env:"))
                    {
                        Imports.ForEach(x => writer.WriteLine($"{x.Key}: {x.Value}"));
                    }
                }
            }
        }
Ejemplo n.º 8
0
        public static IEnumerable <string> GetRelevantCompletionItems(
            string words,
            IReadOnlyDictionary <string, string[]> completionItems)
        {
            completionItems = new Dictionary <string, string[]>(completionItems.ToDictionary(x => x.Key, x => x.Value), StringComparer.OrdinalIgnoreCase).AsReadOnly();
            var suggestedItems = new List <string>();

            var parts         = words.Split(separator: ' ');
            var currentWord   = parts.Last() != string.Empty ? parts.Last() : null;
            var parameters    = parts.Where(ParameterService.IsParameter).Select(ParameterService.GetParameterMemberName).ToList();
            var lastParameter = parameters.LastOrDefault();

            void AddParameters()
            {
                var useDashes = currentWord == null ||
                                currentWord.TrimStart('-').Length == 0 ||
                                currentWord.StartsWith("--");
                var items = completionItems.Keys
                            .Except(parameters, StringComparer.InvariantCultureIgnoreCase)
                            .Select(x => useDashes
                        ? $"--{ParameterService.GetParameterDashedName(x)}"
                        : $"-{x}");

                AddItems(items);
            }

            void AddTargetsOrValues(string parameter)
            {
                var passedItems = parts
                                  .Reverse()
                                  .TakeWhile(x => !ParameterService.IsParameter(x))
                                  .Select(ParameterService.GetParameterMemberName);

                var items = completionItems.GetValueOrDefault(parameter)?.Except(passedItems, StringComparer.OrdinalIgnoreCase) ??
                            new string[0];

                if (parameter.EqualsOrdinalIgnoreCase(Constants.InvokedTargetsParameterName))
                {
                    items = items.Select(x => x.SplitCamelHumpsWithSeparator("-", Constants.KnownWords));
                }

                AddItems(items);
            }

            void AddItems(IEnumerable <string> items)
            {
                foreach (var item in items)
                {
                    if (currentWord == null)
                    {
                        suggestedItems.Add(item);
                    }
                    else if (item.StartsWithOrdinalIgnoreCase(currentWord))
                    {
                        var normalizedItem = item.ReplaceRegex(currentWord, x => currentWord, RegexOptions.IgnoreCase);
                        if (normalizedItem != item)
                        {
                            var letters = currentWord.Where(char.IsLetter).ToList();
                            if (letters.All(char.IsUpper))
                            {
                                normalizedItem = normalizedItem.ToUpperInvariant();
                            }
                            else if (letters.All(char.IsLower))
                            {
                                normalizedItem = normalizedItem.ToLowerInvariant();
                            }
                        }

                        suggestedItems.Add(normalizedItem);
                    }
                }
            }

            if (lastParameter == null)
            {
                AddTargetsOrValues(Constants.InvokedTargetsParameterName);
            }
            else if (currentWord != lastParameter)
            {
                AddTargetsOrValues(lastParameter);
            }

            if (currentWord == null || ParameterService.IsParameter(currentWord))
            {
                AddParameters();
            }

            return(suggestedItems);
        }