private static void LoadFormatDataHelper( ExtendedTypeDefinition formatData, PSPropertyExpressionFactory expressionFactory, List <XmlLoaderLoggerEntry> logEntries, ref bool success, PSSnapInTypeAndFormatErrors file, TypeInfoDataBase db, bool isBuiltInFormatData, bool isForHelp) { using (TypeInfoDataBaseLoader loader = new TypeInfoDataBaseLoader()) { if (!loader.LoadFormattingData(formatData, db, expressionFactory, isBuiltInFormatData, isForHelp)) { success = false; } foreach (XmlLoaderLoggerEntry entry in loader.LogEntries) { // filter in only errors from the current file... if (entry.entryType == XmlLoaderLoggerEntry.EntryType.Error) { string mshsnapinMessage = StringUtil.Format(FormatAndOutXmlLoadingStrings.MshSnapinQualifiedError, file.PSSnapinName, entry.message); file.Errors.Add(mshsnapinMessage); } } // now aggregate the entries... logEntries.AddRange(loader.LogEntries); } }
private static TypeInfoDataBase LoadFromFileHelper(Collection <PSSnapInTypeAndFormatErrors> files, MshExpressionFactory expressionFactory, AuthorizationManager authorizationManager, PSHost host, bool preValidated, out List <XmlLoaderLoggerEntry> logEntries, out bool success) { success = true; logEntries = new List <XmlLoaderLoggerEntry>(); TypeInfoDataBase db = new TypeInfoDataBase(); AddPreLoadInstrinsics(db); foreach (PSSnapInTypeAndFormatErrors errors in files) { if (errors.FormatData != null) { using (TypeInfoDataBaseLoader loader = new TypeInfoDataBaseLoader()) { if (!loader.LoadFormattingData(errors.FormatData, db, expressionFactory)) { success = false; } foreach (XmlLoaderLoggerEntry entry in loader.LogEntries) { if (entry.entryType == XmlLoaderLoggerEntry.EntryType.Error) { string item = StringUtil.Format(FormatAndOutXmlLoadingStrings.MshSnapinQualifiedError, errors.PSSnapinName, entry.message); errors.Errors.Add(item); } } logEntries.AddRange(loader.LogEntries); continue; } } XmlFileLoadInfo info = new XmlFileLoadInfo(Path.GetPathRoot(errors.FullPath), errors.FullPath, errors.Errors, errors.PSSnapinName); using (TypeInfoDataBaseLoader loader2 = new TypeInfoDataBaseLoader()) { if (!loader2.LoadXmlFile(info, db, expressionFactory, authorizationManager, host, preValidated)) { success = false; } foreach (XmlLoaderLoggerEntry entry2 in loader2.LogEntries) { if (entry2.entryType == XmlLoaderLoggerEntry.EntryType.Error) { string str2 = StringUtil.Format(FormatAndOutXmlLoadingStrings.MshSnapinQualifiedError, info.psSnapinName, entry2.message); info.errors.Add(str2); if (entry2.failToLoadFile) { errors.FailToLoadFile = true; } } } logEntries.AddRange(loader2.LogEntries); } } AddPostLoadInstrinsics(db); return(db); }
private static TypeInfoDataBase LoadFromFileHelper( Collection <PSSnapInTypeAndFormatErrors> files, MshExpressionFactory expressionFactory, AuthorizationManager authorizationManager, PSHost host, out List <XmlLoaderLoggerEntry> logEntries, out bool success) { success = true; logEntries = new List <XmlLoaderLoggerEntry>(); List <XmlFileLoadInfo> xmlFileLoadInfoList = new List <XmlFileLoadInfo>(); foreach (PSSnapInTypeAndFormatErrors file in files) { xmlFileLoadInfoList.Add(new XmlFileLoadInfo(Path.GetPathRoot(file.FullPath), file.FullPath, file.Errors, file.PSSnapinName)); } TypeInfoDataBase db = new TypeInfoDataBase(); TypeInfoDataBaseManager.AddPreLoadInstrinsics(db); foreach (XmlFileLoadInfo info in xmlFileLoadInfoList) { using (TypeInfoDataBaseLoader infoDataBaseLoader = new TypeInfoDataBaseLoader()) { if (!infoDataBaseLoader.LoadXmlFile(info, db, expressionFactory, authorizationManager, host)) { success = false; } foreach (XmlLoaderLoggerEntry logEntry in infoDataBaseLoader.LogEntries) { if (logEntry.entryType == XmlLoaderLoggerEntry.EntryType.Error) { string str = XmlLoadingResourceManager.FormatString("MshSnapinQualifiedError", (object)info.psSnapinName, (object)logEntry.message); info.errors.Add(str); } } logEntries.AddRange((IEnumerable <XmlLoaderLoggerEntry>)infoDataBaseLoader.LogEntries); } } TypeInfoDataBaseManager.AddPostLoadInstrinsics(db); return(db); }
/// <summary> /// it loads a database from file(s). /// </summary> /// <param name="files">*.formal.xml files to be loaded</param> /// <param name="expressionFactory">expression factory to validate script blocks</param> /// <param name="authorizationManager"> /// Authorization manager to perform signature checks before reading ps1xml files (or null of no checks are needed) /// </param> /// <param name="host"> /// Host passed to <paramref name="authorizationManager"/>. Can be null if no interactive questions should be asked. /// </param> /// <param name="preValidated"> /// True if the format data has been pre-validated (build time, manual testing, etc) so that validation can be /// skipped at runtime. /// </param> /// <param name="logEntries">list of logger entries (errors, etc.) to return to the caller</param> /// <param name="success"> true if no error occurred</param> /// <returns>a database instance loaded from file(s)</returns> private static TypeInfoDataBase LoadFromFileHelper( Collection <PSSnapInTypeAndFormatErrors> files, PSPropertyExpressionFactory expressionFactory, AuthorizationManager authorizationManager, PSHost host, bool preValidated, out List <XmlLoaderLoggerEntry> logEntries, out bool success) { success = true; // Holds the aggregated log entries for all files... logEntries = new List <XmlLoaderLoggerEntry>(); // fresh instance of the database TypeInfoDataBase db = new TypeInfoDataBase(); // prepopulate the database with any necessary overriding data AddPreLoadIntrinsics(db); var etwEnabled = RunspaceEventSource.Log.IsEnabled(); // load the XML document into a copy of the // in memory database foreach (PSSnapInTypeAndFormatErrors file in files) { // Loads formatting data from ExtendedTypeDefinition instance if (file.FormatData != null) { LoadFormatDataHelper(file.FormatData, expressionFactory, logEntries, ref success, file, db, isBuiltInFormatData: false, isForHelp: false); continue; } if (etwEnabled) { RunspaceEventSource.Log.ProcessFormatFileStart(file.FullPath); } if (!ProcessBuiltin(file, db, expressionFactory, logEntries, ref success)) { // Loads formatting data from formatting data XML file XmlFileLoadInfo info = new XmlFileLoadInfo(Path.GetPathRoot(file.FullPath), file.FullPath, file.Errors, file.PSSnapinName); using (TypeInfoDataBaseLoader loader = new TypeInfoDataBaseLoader()) { if (!loader.LoadXmlFile(info, db, expressionFactory, authorizationManager, host, preValidated)) { success = false; } foreach (XmlLoaderLoggerEntry entry in loader.LogEntries) { // filter in only errors from the current file... if (entry.entryType == XmlLoaderLoggerEntry.EntryType.Error) { string mshsnapinMessage = StringUtil.Format(FormatAndOutXmlLoadingStrings.MshSnapinQualifiedError, info.psSnapinName, entry.message); info.errors.Add(mshsnapinMessage); if (entry.failToLoadFile) { file.FailToLoadFile = true; } } } // now aggregate the entries... logEntries.AddRange(loader.LogEntries); } } if (etwEnabled) { RunspaceEventSource.Log.ProcessFormatFileStop(file.FullPath); } } // add any sensible defaults to the database AddPostLoadIntrinsics(db); return(db); }
internal ViewEntryNodeMatch(TypeInfoDataBaseLoader loader) { this._loader = loader; }
internal ExpressionNodeMatch(TypeInfoDataBaseLoader loader) { this._loader = loader; }
internal ComplexControlMatch(TypeInfoDataBaseLoader loader) { this._loader = loader; }
private static TypeInfoDataBase LoadFromFileHelper(Collection<PSSnapInTypeAndFormatErrors> files, MshExpressionFactory expressionFactory, AuthorizationManager authorizationManager, PSHost host, bool preValidated, out List<XmlLoaderLoggerEntry> logEntries, out bool success) { success = true; logEntries = new List<XmlLoaderLoggerEntry>(); TypeInfoDataBase db = new TypeInfoDataBase(); AddPreLoadInstrinsics(db); foreach (PSSnapInTypeAndFormatErrors errors in files) { if (errors.FormatData != null) { using (TypeInfoDataBaseLoader loader = new TypeInfoDataBaseLoader()) { if (!loader.LoadFormattingData(errors.FormatData, db, expressionFactory)) { success = false; } foreach (XmlLoaderLoggerEntry entry in loader.LogEntries) { if (entry.entryType == XmlLoaderLoggerEntry.EntryType.Error) { string item = StringUtil.Format(FormatAndOutXmlLoadingStrings.MshSnapinQualifiedError, errors.PSSnapinName, entry.message); errors.Errors.Add(item); } } logEntries.AddRange(loader.LogEntries); continue; } } XmlFileLoadInfo info = new XmlFileLoadInfo(Path.GetPathRoot(errors.FullPath), errors.FullPath, errors.Errors, errors.PSSnapinName); using (TypeInfoDataBaseLoader loader2 = new TypeInfoDataBaseLoader()) { if (!loader2.LoadXmlFile(info, db, expressionFactory, authorizationManager, host, preValidated)) { success = false; } foreach (XmlLoaderLoggerEntry entry2 in loader2.LogEntries) { if (entry2.entryType == XmlLoaderLoggerEntry.EntryType.Error) { string str2 = StringUtil.Format(FormatAndOutXmlLoadingStrings.MshSnapinQualifiedError, info.psSnapinName, entry2.message); info.errors.Add(str2); if (entry2.failToLoadFile) { errors.FailToLoadFile = true; } } } logEntries.AddRange(loader2.LogEntries); } } AddPostLoadInstrinsics(db); return db; }
private static void LoadFormatDataHelper( ExtendedTypeDefinition formatData, MshExpressionFactory expressionFactory, List<XmlLoaderLoggerEntry> logEntries, ref bool success, PSSnapInTypeAndFormatErrors file, TypeInfoDataBase db, bool isBuiltInFormatData, bool isForHelp) { using (TypeInfoDataBaseLoader loader = new TypeInfoDataBaseLoader()) { if (!loader.LoadFormattingData(formatData, db, expressionFactory, isBuiltInFormatData, isForHelp)) success = false; foreach (XmlLoaderLoggerEntry entry in loader.LogEntries) { // filter in only errors from the current file... if (entry.entryType == XmlLoaderLoggerEntry.EntryType.Error) { string mshsnapinMessage = StringUtil.Format(FormatAndOutXmlLoadingStrings.MshSnapinQualifiedError, file.PSSnapinName, entry.message); file.Errors.Add(mshsnapinMessage); } } // now aggregate the entries... logEntries.AddRange(loader.LogEntries); } }
/// <summary> /// it loads a database from file(s). /// </summary> /// <param name="files">*.formal.xml files to be loaded</param> /// <param name="expressionFactory">expression factory to validate script blocks</param> /// <param name="authorizationManager"> /// Authorization manager to perform signature checks before reading ps1xml files (or null of no checks are needed) /// </param> /// <param name="host"> /// Host passed to <paramref name="authorizationManager"/>. Can be null if no interactive questions should be asked. /// </param> /// <param name="preValidated"> /// True if the format data has been pre-validated (build time, manual testing, etc) so that validation can be /// skipped at runtime. /// </param> /// <param name="logEntries">list of logger entries (errors, etc.) to return to the caller</param> /// <param name="success"> true if no error occurred</param> /// <returns>a database instance loaded from file(s)</returns> private static TypeInfoDataBase LoadFromFileHelper( Collection<PSSnapInTypeAndFormatErrors> files, MshExpressionFactory expressionFactory, AuthorizationManager authorizationManager, PSHost host, bool preValidated, out List<XmlLoaderLoggerEntry> logEntries, out bool success) { success = true; // Holds the aggregated log entries for all files... logEntries = new List<XmlLoaderLoggerEntry>(); // fresh instance of the database TypeInfoDataBase db = new TypeInfoDataBase(); // prepopulate the database with any necessary overriding data AddPreLoadInstrinsics(db); var etwEnabled = RunspaceEventSource.Log.IsEnabled(); // load the XML document into a copy of the // in memory database foreach (PSSnapInTypeAndFormatErrors file in files) { // Loads formatting data from ExtendedTypeDefinition instance if (file.FormatData != null) { LoadFormatDataHelper(file.FormatData, expressionFactory, logEntries, ref success, file, db, isBuiltInFormatData: false, isForHelp: false); continue; } if (etwEnabled) RunspaceEventSource.Log.ProcessFormatFileStart(file.FullPath); if (!ProcessBuiltin(file, db, expressionFactory, logEntries, ref success)) { // Loads formatting data from formatting data XML file XmlFileLoadInfo info = new XmlFileLoadInfo(Path.GetPathRoot(file.FullPath), file.FullPath, file.Errors, file.PSSnapinName); using (TypeInfoDataBaseLoader loader = new TypeInfoDataBaseLoader()) { if (!loader.LoadXmlFile(info, db, expressionFactory, authorizationManager, host, preValidated)) success = false; foreach (XmlLoaderLoggerEntry entry in loader.LogEntries) { // filter in only errors from the current file... if (entry.entryType == XmlLoaderLoggerEntry.EntryType.Error) { string mshsnapinMessage = StringUtil.Format(FormatAndOutXmlLoadingStrings.MshSnapinQualifiedError, info.psSnapinName, entry.message); info.errors.Add(mshsnapinMessage); if (entry.failToLoadFile) { file.FailToLoadFile = true; } } } // now aggregate the entries... logEntries.AddRange(loader.LogEntries); } } if (etwEnabled) RunspaceEventSource.Log.ProcessFormatFileStop(file.FullPath); } // add any sensible defaults to the database AddPostLoadInstrinsics(db); return db; }