/// <summary> /// Compiles a D project. /// </summary> public BuildResult Build(DProject Project, ConfigurationSelector BuildConfigurationSelector) { this.Project = Project; BuildConfig = Project.GetConfiguration(BuildConfigurationSelector) as DProjectConfiguration; commonMacros = new PrjPathMacroProvider { slnPath = Project.ParentSolution != null?EnsureCorrectPathSeparators(Project.ParentSolution.BaseDirectory) : "" }; BuiltObjects.Clear(); if (Compiler == null) { var targetBuildResult = new BuildResult(); targetBuildResult.AddError("Project compiler \"" + Project.UsedCompilerVendor + "\" not found"); targetBuildResult.FailedBuildCount++; return(targetBuildResult); } if (!Directory.Exists(AbsoluteObjectDirectory)) { Directory.CreateDirectory(AbsoluteObjectDirectory); } if (CanDoOneStepBuild) { return(DoOneStepBuild()); } else { return(DoStepByStepBuild()); } }
/// <summary> /// Compiles a D project. /// </summary> public BuildResult Build(DProject Project, ConfigurationSelector BuildConfigurationSelector) { this.Project = Project; BuildConfig = Project.GetConfiguration(BuildConfigurationSelector) as DProjectConfiguration; if (Ide.IdeApp.Workbench == null) { _currentConfig = BuildConfig.Selector; } if (BuildConfig.Project != Project) { throw new InvalidOperationException("Wrong project configuration"); } commonMacros = new PrjPathMacroProvider { slnPath = Project.ParentSolution != null?EnsureCorrectPathSeparators(Project.ParentSolution.BaseDirectory) : "" }; BuiltObjects.Clear(); if (Compiler == null) { var targetBuildResult = new BuildResult(); targetBuildResult.AddError("Project compiler \"" + Project.UsedCompilerVendor + "\" not found"); targetBuildResult.FailedBuildCount++; _currentConfig = null; return(targetBuildResult); } var absDir = AbsoluteObjectDirectory(BuildConfig); if (!Directory.Exists(absDir)) { Directory.CreateDirectory(absDir); } BuildResult result; if (CanDoOneStepBuild) { result = DoOneStepBuild(); } else { result = DoStepByStepBuild(); } _currentConfig = null; return(result); }
/// <summary> /// Scans through RawArgumentString for macro uses (e.g. -of"$varname") and replace found variable matches with values provided by MacroProvider /// </summary> public static string FillInMacros(string RawArgumentString, IArgumentMacroProvider MacroProvider) { var returnArgString = RawArgumentString; var macros = new Dictionary <string, string> (); MacroProvider.ManipulateMacros(macros); string tempId = ""; char c = '\0'; for (int i = RawArgumentString.Length - 1; i >= 0; i--) { c = RawArgumentString [i]; if (char.IsLetterOrDigit(c) || c == '_') { tempId = c + tempId; } else if (c == '$' && tempId.Length > 0) { string surrogate = ""; //ISSUE: Replace unknown macros with ""? macros.TryGetValue(tempId, out surrogate); returnArgString = returnArgString.Substring(0, i) + surrogate + returnArgString.Substring(i + tempId.Length + 1); // "+1" because of the initially skipped '$' tempId = ""; } else { tempId = ""; } } return(returnArgString); }
/// <summary> /// Scans through RawArgumentString for macro uses (e.g. -of"$varname") and replace found variable matches with values provided by MacroProvider /// </summary> public static string FillInMacros(string RawArgumentString, IArgumentMacroProvider MacroProvider) { var returnArgString = RawArgumentString; string tempId = ""; char c = '\0'; for (int i = RawArgumentString.Length - 1; i >= 0; i--) { c = RawArgumentString[i]; if (char.IsLetterOrDigit(c) || c == '_') { tempId = c + tempId; } else if (c == '$' && tempId.Length > 0) { var replacement = MacroProvider.Replace(tempId); //ISSUE: Replace undefined variables with nothing? if (replacement == tempId || replacement == null) { replacement = ""; } returnArgString = returnArgString.Substring(0, i) + replacement + returnArgString.Substring(i + tempId.Length + 1); // "+1" because of the initially skipped '$' tempId = ""; } else { tempId = ""; } } return(returnArgString); }
/// <summary> /// Compiles a D project. /// </summary> public BuildResult Build(DProject Project, ConfigurationSelector BuildConfigurationSelector) { this.Project = Project; BuildConfig = Project.GetConfiguration (BuildConfigurationSelector) as DProjectConfiguration; commonMacros = new PrjPathMacroProvider { slnPath = Project.ParentSolution.BaseDirectory }; BuiltObjects.Clear (); if (Compiler == null) { var targetBuildResult = new BuildResult (); targetBuildResult.AddError ("Project compiler \"" + Project.UsedCompilerVendor + "\" not found"); targetBuildResult.FailedBuildCount++; return targetBuildResult; } if (Path.IsPathRooted (BuildConfig.ObjectDirectory)) AbsoluteObjectDirectory = BuildConfig.ObjectDirectory; else AbsoluteObjectDirectory = Path.Combine (Project.BaseDirectory, EnsureCorrectPathSeparators (BuildConfig.ObjectDirectory)); if (!Directory.Exists (AbsoluteObjectDirectory)) Directory.CreateDirectory (AbsoluteObjectDirectory); if (CanDoOneStepBuild) return DoOneStepBuild (); else return DoStepByStepBuild (); }
/// <summary> /// Scans through RawArgumentString for macro uses (e.g. -of"$varname") and replace found variable matches with values provided by MacroProvider /// </summary> public static string FillInMacros(string RawArgumentString, IArgumentMacroProvider MacroProvider) { var returnArgString = RawArgumentString; var macros = new Dictionary<string, string> (); MacroProvider.ManipulateMacros (macros); string tempId = ""; char c = '\0'; for (int i = RawArgumentString.Length - 1; i >= 0; i--) { c = RawArgumentString [i]; if (char.IsLetterOrDigit (c) || c == '_') tempId = c + tempId; else if (c == '$' && tempId.Length > 0) { string surrogate = ""; //ISSUE: Replace unknown macros with ""? macros.TryGetValue (tempId, out surrogate); returnArgString = returnArgString.Substring (0, i) + surrogate + returnArgString.Substring (i + tempId.Length + 1); // "+1" because of the initially skipped '$' tempId = ""; } else tempId = ""; } return returnArgString; }
/// <summary> /// Scans through RawArgumentString for macro uses (e.g. -of"$varname") and replace found variable matches with values provided by MacroProvider /// </summary> public static string FillInMacros(string RawArgumentString, IArgumentMacroProvider MacroProvider) { var returnArgString = RawArgumentString; string tempId = ""; char c='\0'; for (int i = RawArgumentString.Length - 1; i >= 0; i--) { c = RawArgumentString[i]; if (char.IsLetterOrDigit(c) || c == '_') tempId = c+tempId; else if (c == '$' && tempId.Length>0) { var replacement = MacroProvider.Replace(tempId); //ISSUE: Replace undefined variables with nothing? if (replacement == tempId || replacement == null) replacement = ""; returnArgString = returnArgString.Substring(0, i) + replacement + returnArgString.Substring(i + tempId.Length +1); // "+1" because of the initially skipped '$' tempId = ""; } else tempId = ""; } return returnArgString; }
/// <summary> /// Compiles a D project. /// </summary> public BuildResult Build(DProject Project, ConfigurationSelector BuildConfigurationSelector) { this.Project = Project; BuildConfig = Project.GetConfiguration (BuildConfigurationSelector) as DProjectConfiguration; if(Ide.IdeApp.Workbench == null) _currentConfig = BuildConfig.Selector; if (BuildConfig.Project != Project) throw new InvalidOperationException ("Wrong project configuration"); commonMacros = new PrjPathMacroProvider { slnPath = Project.ParentSolution != null ? EnsureCorrectPathSeparators(Project.ParentSolution.BaseDirectory) : "" }; BuiltObjects.Clear (); if (Compiler == null) { var targetBuildResult = new BuildResult (); targetBuildResult.AddError ("Project compiler \"" + Project.UsedCompilerVendor + "\" not found"); targetBuildResult.FailedBuildCount++; _currentConfig = null; return targetBuildResult; } var absDir = AbsoluteObjectDirectory (BuildConfig); if (!Directory.Exists (absDir)) Directory.CreateDirectory (absDir); BuildResult result; if (CanDoOneStepBuild) result = DoOneStepBuild (); else result = DoStepByStepBuild (); _currentConfig = null; return result; }