public CompilationDatabaseSettings GetMostCurrentCdbForSolution(string solutionPath) { CompilationDatabaseSettings result = null; try { List <CompilationDatabaseSettings> candidates = GetCdbsForSolution(solutionPath); System.DateTime youngest = System.DateTime.MinValue; foreach (CompilationDatabaseSettings cdb in candidates) { if (cdb.LastUpdated >= youngest) { youngest = cdb.LastUpdated; result = cdb; } } } catch (Exception e) { Logging.Logging.LogError("Failed to find cdb: " + e.Message); } return(result); }
public void AppendOrUpdate(CompilationDatabaseSettings cdb) { if (_settings.Exists(item => item.Name == cdb.Name && item.Directory == cdb.Directory) == false) { _settings.Add(cdb); } else { int idx = _settings.FindIndex(item => item.Name == cdb.Name && item.Directory == cdb.Directory); _settings[idx] = cdb; } }
private CreationResult CreateCdb() { CreationResult result = new CreationResult(); result._cdbSettings = null; result._cdbDirectory = ""; result._cdbName = ""; Logging.Logging.LogInfo("Starting to create CDB"); SolutionParser.CompilationDatabaseSettings cdbSettings = null; try { System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch(); watch.Start(); CreateCompilationDatabase(); watch.Stop(); Logging.Logging.LogInfo("Finished creating CDB, elapsed time: " + watch.ElapsedMilliseconds.ToString() + " ms"); cdbSettings = new CompilationDatabaseSettings(); cdbSettings.Name = _fileName; cdbSettings.Directory = _targetDir; cdbSettings.SourceProject = _solutionDir; cdbSettings.LastUpdated = DateTime.Now; cdbSettings.ConfigurationName = _configurationName; cdbSettings.PlatformName = _platformName; cdbSettings.AdditionalClangOptions = _additionalClangOptions; cdbSettings.NonSystemIncludesUseAngleBrackets = _nonSystemIncludesUseAngleBrackets; cdbSettings.IncludedProjects = new List <string>(); foreach (EnvDTE.Project p in _projects) { cdbSettings.IncludedProjects.Add(p.Name); } } catch (Exception e) { Logging.Logging.LogError("Failed to create CDB: " + e.Message); } result._cdbSettings = cdbSettings; result._cdbDirectory = _targetDir; result._cdbName = _fileName; Logging.Logging.LogInfo("Done creating CDB"); return(result); }
public bool CheckCdbForSolutionExists(string solutionPath) { try { CompilationDatabaseSettings cdb = GetCdbForSolution(solutionPath); if (cdb != null && System.IO.File.Exists(cdb.Directory + "\\" + cdb.Name + ".json")) { return(true); } } catch (Exception e) { Logging.Logging.LogError("Failed to check cdb: " + e.Message); } return(false); }
public void Refresh() { List <CompilationDatabaseSettings> cdbs = new List <CompilationDatabaseSettings>(); try { string data = Utility.DataUtility.GetInstance().GetData(); cdbs = CompilationDatabaseSettings.ParseCdbsMetaData(data); foreach (CompilationDatabaseSettings cdb in cdbs) { cdb.CheckCdbExists(); } } catch (Exception e) { Logging.Logging.LogError("Failed to aquire data: " + e.Message); } _settings = cdbs; }