Пример #1
0
            public bool Run(BuildPipeline.BuildContext context)
            {
                var commandOutput = new StringBuilder();
                var buildOutput   = new StringBuilder();
                var buildProgress = BeeTools.Run("ProjectFiles", commandOutput, buildOutput, context.OutputDirectory);

                while (buildProgress.MoveNext())
                {
                    context.ProgressBar?.Update(buildProgress.Current.Info, buildProgress.Current.Progress);
                }
                return(buildProgress.Current.ExitCode == 0);
            }
Пример #2
0
            public bool Run(BuildPipeline.BuildContext context)
            {
                var commandOutput = new StringBuilder();
                var buildOutput   = new StringBuilder();

                const string commandExt =
#if UNITY_EDITOR_WIN
                    ".bat";
#else
                    ".sh";
#endif

                var result = false;
                try
                {
                    var buildProgress = BeeTools.Run(ResolveEditorToolsTargetName() + " " + context.BeeTargetName, commandOutput, buildOutput, context.OutputDirectory);
                    while (buildProgress.MoveNext())
                    {
                        context.ProgressBar?.Update(buildProgress.Current.Info, buildProgress.Current.Progress);
                    }

                    result = buildProgress.Current.ExitCode == 0;
                }
                finally
                {
                    // Write runbuild file
                    var runBuildFile = context.OutputDirectory.GetFile("runbuild" + commandExt);
                    runBuildFile.UpdateAllText(commandOutput.ToString());

                    // Write build log file
                    var buildLogFile = context.OutputDirectory.GetFile("build.log");
                    buildLogFile.WriteAllText(buildOutput.ToString(), Encoding.UTF8);

                    // Log build error to Unity console
                    if (!result)
                    {
                        if (buildLogFile.Exists)
                        {
                            var logLines  = buildLogFile.ReadAllLines(Encoding.UTF8);
                            var lineIndex = logLines.Length - 1;
                            for (; lineIndex >= 0; --lineIndex)
                            {
                                if (logLines[lineIndex] == "##### ExitCode")
                                {
                                    break;
                                }
                            }
                            var buildLogTail = new StringBuilder($"Build failed. Open {buildLogFile.FullName.HyperLink()} for more details.{Environment.NewLine}");
                            for (var i = Math.Max(0, lineIndex); i < logLines.Length; ++i)
                            {
                                buildLogTail.AppendLine(logLines[i]);
                            }
                            Debug.LogError(buildLogTail);
                        }
                        else
                        {
                            Debug.LogError("Build failed, no build.log file found.");
                        }
                    }
                }

                return(result);
            }