示例#1
0
 public abstract Task <int> ExecuteAsync(CommandContext ctx, T settigs, VeinProject project);
示例#2
0
        public override int Execute(CommandContext context, CompileSettings settings, VeinProject project)
        {
            Log.Info($"Project [orange]'{project.Name}'[/].");

            var targets = CompilationTask.Run(project.WorkDir, settings);


            foreach (var info in targets.SelectMany(x => x.Logs.Info).Reverse())
            {
                MarkupLine(info.TrimEnd('\n'));
            }
            foreach (var info in Log.infos)
            {
                MarkupLine(info.TrimEnd('\n'));
            }

            if (new[] { Log.errors.Count, targets.Sum(x => x.Logs.Error.Count) }.Sum() > 0)
            {
                var rule1 = new Rule($"[yellow]{Log.errors.Count} error found[/]")
                {
                    Style = Style.Parse("red rapidblink")
                };
                Write(rule1);
            }

            foreach (var target in targets.SelectMany(x => x.Logs.Error).Reverse())
            {
                MarkupLine(target);
            }

            foreach (var error in Log.errors)
            {
                MarkupLine(error);
            }

            if (new[] { Log.warnings.Count, targets.Sum(x => x.Logs.Warn.Count) }.Sum() > 0)
            {
                var rule2 = new Rule($"[yellow]{Log.warnings.Count} warning found[/]")
                {
                    Style = Style.Parse("orange rapidblink")
                };
                Write(rule2);
            }

            foreach (var warn in targets.SelectMany(x => x.Logs.Warn).Reverse())
            {
                MarkupLine(warn);
            }
            foreach (var warn in Log.warnings)
            {
                MarkupLine(warn);
            }

            if (!Log.warnings.Any() && !Log.errors.Any())
            {
                MarkupLine($"\n\n\n");
            }

            if (new[] { Log.errors.Count, targets.Sum(x => x.Logs.Error.Count) }.Sum() > 0)
            {
                var rule3 = new Rule($"[red bold]COMPILATION FAILED[/]")
                {
                    Style = Style.Parse("lime rapidblink")
                };
                Write(rule3);
                MarkupLine($"\n");
                return(-1);
            }
            else
            {
                var rule3 = new Rule($"[green bold]COMPILATION SUCCESS[/]")
                {
                    Style = Style.Parse("lime rapidblink")
                };
                Write(rule3);
                MarkupLine($"\n");
                return(0);
            }
        }
示例#3
0
 public sealed override int Execute(CommandContext ctx, T settigs, VeinProject project)
 => ExecuteAsync(ctx, settigs, project).Result;
示例#4
0
 public abstract int Execute(CommandContext ctx, T settigs, VeinProject project);