protected override void Compile (BuildLogger logger, BuildConfig config, string cloneDirectory, GitHub_Commit commit) { MainClass.Plugins.ForEachPlugin ((plugin) => { plugin.BeforeCompile (this, logger, config, cloneDirectory, commit); }); //Print info Run (logger, MonoPath, $"--version", cloneDirectory); Run (logger, XbuildPath, $"/version", cloneDirectory); //Post build commands - Default: restore packages if (config == null || config.PreBuild == null || config.PreBuild.Length == 0) { Console.WriteLine ("No config pre-build commands"); Run (logger, "nuget", $"restore \"{config.SolutionFile}\"", cloneDirectory); } else { foreach (var command in config.PreBuild) { var line = command.Replace ("{mono-path}", MonoPath); var firstSpace = line.IndexOf (' '); var cmd = line.Substring (0, firstSpace); var args = line.Remove (0, firstSpace + 1); Run (logger, cmd, args, cloneDirectory); } } //Compile if (String.IsNullOrEmpty (config.BuildArgs)) { Run (logger, XbuildPath, $"\"{config.SolutionFile}\"", cloneDirectory); } else { Run (logger, XbuildPath, config.BuildArgs, cloneDirectory); } MainClass.Plugins.ForEachPlugin ((plugin) => { plugin.AfterCompile (this, logger, config, cloneDirectory, commit); }); }
protected abstract void Compile(BuildLogger logger, BuildConfig config, string cloneDirectory, GitHub_Commit commit);
protected virtual void Clone(BuildLogger logger, string cloneDirectory, GitHub_Commit commit) { //Touch the directory if (!System.IO.Directory.Exists (WorkingDirectory)) System.IO.Directory.CreateDirectory (WorkingDirectory); #if !TESTING //If for some reason the clone directory exists, then it must be removed for git will crash and burn. if (System.IO.Directory.Exists (cloneDirectory)) System.IO.Directory.Delete (cloneDirectory, true); //Clone from github into the target directory Run (logger, "git", $"clone --depth=50 --branch=master {_repository.CloneUrl} {cloneDirectory}"); #endif //Checkout the target commit Run (logger, "git", $"checkout -qf {commit.CommitId}", cloneDirectory); //Initialise sub modules Run (logger, "git", $"submodule init", cloneDirectory ); }
public void SheduleCompile(GitHub_Commit commit) { _pending.Enqueue (commit); Start (); }
public virtual void OnPass(IProjectCompiler compiler, string cloneDirectory, GitHub_Commit commit, BuildConfig config) { }
/// <summary> /// Called before any compilation steps are performed. /// </summary> /// <param name="compiler">Compiler being used.</param> /// <param name="logger">The build log.</param> /// <param name="config">Config.</param> /// <param name="cloneDirectory">Clone directory.</param> /// <param name="commit">Commit details.</param> public virtual void BeforeCompile(IProjectCompiler compiler, BuildLogger logger, BuildConfig config, string cloneDirectory, GitHub_Commit commit) { }