コード例 #1
0
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine(Kind.GetValue() + ":");

            using (writer.Indent())
            {
                if (Branches.Length > 0)
                {
                    writer.WriteLine("branches:");
                    using (writer.Indent())
                    {
                        Branches.ForEach(x => writer.WriteLine($"- {x}"));
                    }
                }

                if (Tags.Length > 0)
                {
                    writer.WriteLine("tags:");
                    using (writer.Indent())
                    {
                        Tags.ForEach(x => writer.WriteLine($"- {x}"));
                    }
                }

                if (IncludePaths.Length > 0 || ExcludePaths.Length > 0)
                {
                    writer.WriteLine("paths:");
                    using (writer.Indent())
                    {
                        IncludePaths.ForEach(x => writer.WriteLine($"- {x}"));
                        ExcludePaths.ForEach(x => writer.WriteLine($"- !{x}"));
                    }
                }
            }
        }
コード例 #2
0
ファイル: TeamCityVcsRoot.cs プロジェクト: t081as/nuke
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine($"object {Id} : GitVcsRoot({{");
            using (writer.Indent())
            {
                writer.WriteLine($"name = {Name.DoubleQuote()}");
                writer.WriteLine($"url = {Url.DoubleQuote()}");
                writer.WriteLine($"branch = {Branch.DoubleQuote()}");
                writer.WriteLine($"pollInterval = {PollInterval}");
                if (BranchSpec != null)
                {
                    writer.WriteLine("branchSpec = \"\"\"");
                    using (writer.Indent())
                    {
                        foreach (var branchSpec in BranchSpec)
                        {
                            writer.WriteLine(branchSpec);
                        }
                    }

                    writer.WriteLine("\"\"\".trimIndent()");
                }
            }

            writer.WriteLine("})");
        }
コード例 #3
0
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine($"name: {Name}");
            writer.WriteLine();

            if (ShortTriggers.Length > 0)
            {
                writer.WriteLine($"on: [{ShortTriggers.Select(x => x.GetValue().ToLowerInvariant()).JoinComma()}]");
            }
            else
            {
                writer.WriteLine("on:");
                using (writer.Indent())
                {
                    DetailedTriggers.ForEach(x => x.Write(writer));
                }
            }

            writer.WriteLine();

            writer.WriteLine("jobs:");
            using (writer.Indent())
            {
                Jobs.ForEach(x => x.Write(writer));
            }
        }
コード例 #4
0
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine($"{Name}:");

            using (writer.Indent())
            {
                writer.WriteLine($"strategy:");
                using (writer.Indent())
                {
                    writer.WriteLine($"fail-fast: false");
                    writer.WriteLine($"matrix:");

                    using (writer.Indent())
                    {
                        var images = string.Join(", ", Images.Select(image => image.GetValue().Replace(".", "_")));
                        writer.WriteLine($"os: [{images}]");
                    }
                }

                writer.WriteLine($"runs-on: ${{{{ matrix.os }}}}");
                writer.WriteLine("steps:");
                using (writer.Indent())
                {
                    foreach (var step in Steps)
                    {
                        step.Write(writer);
                    }
                }
            }
        }
コード例 #5
0
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine($"name: {Name}");
            writer.WriteLine();

            if (ShortTriggers.Count > 0)
            {
                writer.WriteLine($"on: [{ShortTriggers.Select(x => x.GetValue().ToLowerInvariant()).JoinComma()}]");
            }
            else
            {
                writer.WriteLine("on:");
                using (writer.Indent())
                {
                    DetailedTriggers.ForEach(x => x.Write(writer));
                }
            }

            writer.WriteLine();

            writer.WriteLine("jobs:");
            using (writer.Indent())
            {
                Jobs.ForEach(x => x.Write(writer));
            }
            if (Environment?.Any() == true)
            {
                writer.WriteLine("env:");
                using (writer.Indent())
                {
                    Environment.ForEach(x => writer.WriteLine($"{x.Key}: {x.Value}"));
                }
            }
        }
コード例 #6
0
 public override void Write(CustomFileWriter writer)
 {
     using (writer.Indent())
     {
         writer.WriteLine("schedule:");
         using (writer.Indent())
         {
             writer.WriteLine($"  - cron: '{Cron}'");
         }
     }
 }
コード例 #7
0
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine("- uses: actions/upload-artifact@v1");

            using (writer.Indent())
            {
                writer.WriteLine("with:");
                using (writer.Indent())
                {
                    writer.WriteLine($"name: {Name}");
                    writer.WriteLine($"path: {Path}");
                }
            }
        }
コード例 #8
0
ファイル: GitHubActionsJob.cs プロジェクト: t081as/nuke
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine($"{Name}:");

            using (writer.Indent())
            {
                writer.WriteLine($"name: {Name}");
                writer.WriteLine($"runs-on: {Image.GetValue()}");
                writer.WriteLine("steps:");
                using (writer.Indent())
                {
                    Steps.ForEach(x => x.Write(writer));
                }
            }
        }
コード例 #9
0
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine($"{Type.ToString().ToLowerInvariant()} (");
            using (writer.Indent())
            {
                writer.WriteLine($"{("env." + Name).DoubleQuote()},");
                writer.WriteLine($"label = {Name.DoubleQuote()},");

                if (Description != null)
                {
                    writer.WriteLine($"description = {Description.DoubleQuote()},");
                }

                writer.WriteLine($"value = {DefaultValue.DoubleQuote()},");

                if (AllowMultiple)
                {
                    writer.WriteLine("allowMultiple = true,");
                    writer.WriteLine($"valueSeparator = {ValueSeparator.DoubleQuote()},");
                }

                if (Options != null)
                {
                    var mappings = Options.Select(x => $"{x.Key.DoubleQuote()} to {x.Value.ToString().DoubleQuote()}");
                    writer.WriteLine($"options = listOf({mappings.JoinComma()}),");
                }

                if (Options == null)
                {
                    writer.WriteLine($"allowEmpty = {(Display != TeamCityParameterDisplay.Prompt).ToString().ToLowerInvariant()},");
                }

                writer.WriteLine($"display = ParameterDisplay.{Display.ToString().ToUpperInvariant()})");
            }
        }
コード例 #10
0
ファイル: TeamCityBuildType.cs プロジェクト: t081as/nuke
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine($"object {Id} : BuildType({{");
            using (writer.Indent())
            {
                writer.WriteLine($"name = {Name.DoubleQuote()}");

                if (Description != null)
                {
                    writer.WriteLine($"description = {Description.DoubleQuote()}");
                }

                if (IsComposite)
                {
                    writer.WriteLine("type = Type.COMPOSITE");
                }

                VcsRoot.Write(writer);
                WriteArtifacts(writer);

                if (!IsComposite)
                {
                    WriteSteps(writer);
                }

                WriteParameters(writer);
                WriteTriggers(writer);
                WriteDependencies(writer);
            }

            writer.WriteLine("})");
        }
コード例 #11
0
 public override void Write(CustomFileWriter writer)
 {
     writer.WriteLine($"- name: Cache {IncludePatterns.JoinComma()}");
     using (writer.Indent())
     {
         writer.WriteLine("uses: actions/cache@v2");
         writer.WriteLine("with:");
         using (writer.Indent())
         {
             writer.WriteLine("path: |");
             IncludePatterns.ForEach(x => writer.WriteLine($"  {x}"));
             ExcludePatterns.ForEach(x => writer.WriteLine($"  !{x}"));
             writer.WriteLine($"key: ${{{{ runner.os }}}}-${{{{ hashFiles({KeyFiles.Select(x => x.SingleQuote()).JoinComma()}) }}}}");
         }
     }
 }
コード例 #12
0
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine($"- name: Run '{Command}'");
            writer.WriteLine($"  run: {Command}");

            if (Imports.Count > 0)
            {
                using (writer.Indent())
                {
                    writer.WriteLine("env:");
                    using (writer.Indent())
                    {
                        Imports.ForEach(x => writer.WriteLine($"  {x.Key}: {x.Value}"));
                    }
                }
            }
        }
コード例 #13
0
 public override void Write(CustomFileWriter writer)
 {
     writer.WriteLine("workflow_dispatch:");
     using (writer.Indent())
     {
         writer.WriteLine("inputs:");
         using (writer.Indent())
         {
             foreach (var input in Inputs)
             {
                 writer.WriteLine($"{input}:");
                 using (writer.Indent())
                 {
                     writer.WriteLine($"description: {input.SplitCamelHumpsWithSeparator(" ", Constants.KnownWords).DoubleQuote()}");
                 }
             }
         }
     }
 }
コード例 #14
0
 public override void Write(CustomFileWriter writer)
 {
     writer.WriteLine("text(");
     using (writer.Indent())
     {
         writer.WriteLine($"{Key.DoubleQuote()},");
         writer.WriteLine($"{Value.DoubleQuote()},");
         writer.WriteLine($"display = ParameterDisplay.{TeamCityParameterDisplay.Hidden.ToString().ToUpperInvariant()})");
     }
 }
コード例 #15
0
ファイル: RunStep.cs プロジェクト: eaba/Nuke
 public override void Write(CustomFileWriter writer)
 {
     base.Write(writer);
     using (writer.Indent())
     {
         if (!string.IsNullOrWhiteSpace(Shell))
         {
             writer.WriteLine($"shell: {Shell}");
         }
         writer.WriteLine($"run: |");
         using (writer.Indent())
         {
             foreach (var line in Run.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries))
             {
                 writer.WriteLine(line.Trim());
             }
         }
     }
 }
 public static IDisposable WriteBlock(this CustomFileWriter writer, string text)
 {
     return(DelegateDisposable
            .CreateBracket(
                () => writer.WriteLine(string.IsNullOrWhiteSpace(text)
                 ? "{"
                 : $"{text} {{"),
                () => writer.WriteLine("}"))
            .CombineWith(writer.Indent()));
 }
コード例 #17
0
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine("param(");
            using (writer.Indent())
            {
                writer.WriteLine($"{Key.DoubleQuote()},");
                writer.WriteLine(Value.DoubleQuote());
            }

            writer.WriteLine(")");
        }
コード例 #18
0
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine("- uses: actions/checkout@v2");

            if (Submodules.HasValue || FetchDepth.HasValue)
            {
                using (writer.Indent())
                {
                    writer.WriteLine("with:");
                    using (writer.Indent())
                    {
                        if (Submodules.HasValue)
                        {
                            writer.WriteLine($"submodules: {Submodules.ToString().ToLowerInvariant()}");
                        }
                        if (FetchDepth.HasValue)
                        {
                            writer.WriteLine($"fetch-depth: {FetchDepth}");
                        }
                    }
                }
            }
        }
コード例 #19
0
ファイル: BaseGitHubActionsStep.cs プロジェクト: eaba/Nuke
 public override void Write(CustomFileWriter writer)
 {
     writer.WriteLine($"- name: {GetStepName(StepName)}");
     using (writer.Indent())
     {
         if (!string.IsNullOrWhiteSpace(Id))
         {
             writer.WriteLine($"id: {Id}");
         }
         if (!string.IsNullOrWhiteSpace(If))
         {
             writer.WriteLine($"if: {If}");
         }
         if (Environment?.Any() == true)
         {
             writer.WriteLine("env:");
             using (writer.Indent())
             {
                 Environment.ForEach(x => { writer.WriteLine($"{x.Key}: {x.Value}"); });
             }
         }
     }
 }
コード例 #20
0
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine("workflow_dispatch:");
            using (writer.Indent())
            {
                writer.WriteLine("inputs:");
                using (writer.Indent())
                {
                    void WriteInput(string input, bool required)
                    {
                        writer.WriteLine($"{input}:");
                        using (writer.Indent())
                        {
                            writer.WriteLine($"description: {input.SplitCamelHumpsWithSeparator(" ", Constants.KnownWords).DoubleQuote()}");
                            writer.WriteLine($"required: {required.ToString().ToLowerInvariant()}");
                        }
                    }

                    OptionalInputs.ForEach(x => WriteInput(x, required: false));
                    RequiredInputs.ForEach(x => WriteInput(x, required: true));
                }
            }
        }
コード例 #21
0
        public override void Write(CustomFileWriter writer)
        {
            writer.WriteLine($"{Kind.GetValue()}:");

            void WriteValue(string value) => writer.WriteLine($"- {value.SingleQuoteIfNeeded('*', '!')}");

            using (writer.Indent())
            {
                if (Branches.Length > 0)
                {
                    writer.WriteLine("branches:");
                    using (writer.Indent())
                    {
                        Branches.ForEach(WriteValue);
                    }
                }

                if (BranchesIgnore.Length > 0)
                {
                    writer.WriteLine("branches-ignore:");
                    using (writer.Indent())
                    {
                        BranchesIgnore.ForEach(WriteValue);
                    }
                }

                if (Tags.Length > 0)
                {
                    writer.WriteLine("tags:");
                    using (writer.Indent())
                    {
                        Tags.ForEach(WriteValue);
                    }
                }

                if (TagsIgnore.Length > 0)
                {
                    writer.WriteLine("tags-ignore:");
                    using (writer.Indent())
                    {
                        TagsIgnore.ForEach(WriteValue);
                    }
                }

                if (IncludePaths.Length > 0 || ExcludePaths.Length > 0)
                {
                    writer.WriteLine("paths:");
                    using (writer.Indent())
                    {
                        IncludePaths.ForEach(WriteValue);
                        ExcludePaths.Select(x => $"!{x}").ForEach(WriteValue);
                    }
                }
            }
        }
コード例 #22
0
ファイル: TeamCityBuildType.cs プロジェクト: t081as/nuke
        public virtual void WriteArtifacts(CustomFileWriter writer)
        {
            if (!ArtifactRules?.Any() ?? true)
            {
                return;
            }

            writer.WriteLine("artifactRules = \"\"\"");
            using (writer.Indent())
            {
                foreach (var artifactRule in ArtifactRules)
                {
                    writer.WriteLine(artifactRule);
                }
            }

            writer.WriteLine("\"\"\".trimIndent()");
        }
コード例 #23
0
        public static void WriteArray(this CustomFileWriter writer, string property, string[] values)
        {
            if (!values?.Any() ?? true)
            {
                return;
            }

            if (values.Length <= 1)
            {
                writer.WriteLine($"{property} = {values.Single().DoubleQuote()}");
                return;
            }

            writer.WriteLine($"{property} = \"\"\"");
            using (writer.Indent())
            {
                foreach (var value in values)
                {
                    writer.WriteLine(value);
                }
            }

            writer.WriteLine("\"\"\"");
        }
コード例 #24
0
 public static IDisposable WriteBlock(this CustomFileWriter writer, string text)
 {
     return(DelegateDisposable
            .CreateBracket(() => writer.WriteLine(text))
            .CombineWith(writer.Indent()));
 }