/**
  * Cleanup anything this build may leave behind and inform the user
  */
 private void HandleFailure(String FailureMessage)
 {
     try
     {
         if (WorkingCL != -1)
         {
             P4.RevertAll(WorkingCL);
             P4.DeleteChange(WorkingCL);
         }
         SendCompletionMessage(false, FailureMessage);
     }
     catch (P4Exception P4Ex)
     {
         LogError("Failed to clean up P4 changelist: " + P4Ex.Message);
     }
     catch (Exception SendMailEx)
     {
         LogError("Failed to notify that build succeeded: " + SendMailEx.Message);
     }
 }
Beispiel #2
0
    public override void ExecuteBuild()
    {
        Log("************************* UpdateCopyright");

        var Wildcards = new List <string>()
        {
            "*.h", "*.cpp", "*.inl", "*.cs"
        };

        var Dirs = new List <string>();

        Dirs.Add(CombinePaths(CmdEnv.LocalRoot, "Engine", "Plugins"));

        {
            DirectoryInfo DirInfo      = new DirectoryInfo(CmdEnv.LocalRoot);
            var           TopLevelDirs = DirInfo.GetDirectories();

            foreach (var TopLevelDir in TopLevelDirs)
            {
                if (DirectoryExists_NoExceptions(CombinePaths(TopLevelDir.FullName, "Source")))
                {
                    Dirs.Add(CombinePaths(TopLevelDir.FullName, "Source"));
                    Dirs.Add(CombinePaths(TopLevelDir.FullName, "Build", "Scripts"));
                }
            }
        }
        {
            DirectoryInfo DirInfo      = new DirectoryInfo(CombinePaths(CmdEnv.LocalRoot, "Samples", "SampleGames"));
            var           TopLevelDirs = DirInfo.GetDirectories();

            foreach (var TopLevelDir in TopLevelDirs)
            {
                if (DirectoryExists_NoExceptions(CombinePaths(TopLevelDir.FullName, "Source")))
                {
                    Dirs.Add(CombinePaths(TopLevelDir.FullName, "Source"));
                    Dirs.Add(CombinePaths(TopLevelDir.FullName, "Build", "Scripts"));
                }
            }
        }
        {
            DirectoryInfo DirInfo      = new DirectoryInfo(CombinePaths(CmdEnv.LocalRoot, "Samples", "Showcases"));
            var           TopLevelDirs = DirInfo.GetDirectories();

            foreach (var TopLevelDir in TopLevelDirs)
            {
                if (DirectoryExists_NoExceptions(CombinePaths(TopLevelDir.FullName, "Source")))
                {
                    Dirs.Add(CombinePaths(TopLevelDir.FullName, "Source"));
                    Dirs.Add(CombinePaths(TopLevelDir.FullName, "Build", "Scripts"));
                }
            }
        }
        {
            DirectoryInfo DirInfo      = new DirectoryInfo(CombinePaths(CmdEnv.LocalRoot, "Templates"));
            var           TopLevelDirs = DirInfo.GetDirectories();

            foreach (var TopLevelDir in TopLevelDirs)
            {
                if (DirectoryExists_NoExceptions(CombinePaths(TopLevelDir.FullName, "Source")))
                {
                    Dirs.Add(CombinePaths(TopLevelDir.FullName, "Source"));
                    Dirs.Add(CombinePaths(TopLevelDir.FullName, "Build", "Scripts"));
                }
            }
        }
        var AllFiles = new List <string>();

        foreach (var Dir in Dirs)
        {
            foreach (var Wildcard in Wildcards)
            {
                foreach (var ThisFile in CommandUtils.FindFiles_NoExceptions(Wildcard, true, Dir))
                {
                    if (!ThisFile.Contains(@"\ThirdParty\"))
                    {
                        Log("Source File: {0}", ThisFile);
                        AllFiles.Add(ThisFile);
                    }
                }
            }
        }

        int WorkingCL = -1;

        if (P4Enabled)
        {
            WorkingCL = P4.CreateChange(P4Env.Client, "Stat code surgery");
            Log("Working in {0}", WorkingCL);
        }
        else
        {
            throw new AutomationException("this command needs to run with P4.");
        }

        foreach (var ToCheckOut in AllFiles)
        {
            if (P4.Edit_NoExceptions(WorkingCL, ToCheckOut))
            {
                Log("Checked out {0}", ToCheckOut);
            }
            else if (ToCheckOut.Contains("CodeSurgery"))
            {
                Log("Couldn't check out {0}", ToCheckOut);
            }
            else
            {
                P4.RevertAll(WorkingCL);
                throw new AutomationException("Couldn't check out {0}", ToCheckOut);
            }
        }

        var Normal  = new HashSet <string>();
        var Missing = new HashSet <string>();


        foreach (var ThisFile in AllFiles)
        {
            var FileText = ReadAllText(ThisFile);
            if (FileText.Contains("2013 Epic Games, Inc. All Rights Reserved."))
            {
                FileText = FileText.Replace("2013 Epic Games, Inc. All Rights Reserved.", "2014 Epic Games, Inc. All Rights Reserved.");
                WriteAllText(ThisFile, FileText);
                Normal.Add(ThisFile);
            }
            else
            {
                var Lines = new List <string>(ReadAllLines(ThisFile));
                Lines.Insert(0, "// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved.");
                WriteAllLines(ThisFile, Lines.ToArray());
                Missing.Add(ThisFile);
            }
        }
        Log("Normal Copyright *************************");
        foreach (var ThisFile in Normal)
        {
            Log("  {0}", ThisFile);
        }
        Log("Missing Copyright *************************");
        foreach (var ThisFile in Missing)
        {
            Log("  {0}", ThisFile);
        }
    }