public bool TryGetTemplateFromConfigInfo(IFileSystemInfo config, out ITemplate template, IFileSystemInfo localeConfig = null, IFile hostTemplateConfigFile = null) { IFile file = config as IFile; if (file == null) { template = null; return(false); } IFile localeFile = localeConfig as IFile; try { JObject srcObject = ReadJObjectFromIFile(file); JObject localeSourceObject = null; if (localeFile != null) { localeSourceObject = ReadJObjectFromIFile(localeFile); } SimpleConfigModel templateModel = SimpleConfigModel.FromJObject(file.MountPoint.EnvironmentSettings, srcObject, localeSourceObject); template = new RunnableProjectTemplate(srcObject, this, file, templateModel, null, hostTemplateConfigFile); return(true); } catch (Exception ex) { ITemplateEngineHost host = config.MountPoint.EnvironmentSettings.Host; host.LogMessage($"Error reading template from file: {file.FullPath} | Error = {ex.ToString()}"); } template = null; return(false); }
public bool TryGetTemplateFromConfigInfo(IFileSystemInfo templateFileConfig, out ITemplate template, IFileSystemInfo localeFileConfig = null, IFile hostTemplateConfigFile = null, string baselineName = null) { IFile templateFile = templateFileConfig as IFile; if (templateFile == null) { template = null; return(false); } IFile localeFile = localeFileConfig as IFile; ITemplateEngineHost host = templateFileConfig.MountPoint.EnvironmentSettings.Host; try { JObject baseSrcObject = ReadJObjectFromIFile(templateFile); JObject srcObject = MergeAdditionalConfiguration(baseSrcObject, templateFileConfig); JObject localeSourceObject = null; if (localeFile != null) { localeSourceObject = ReadJObjectFromIFile(localeFile); } ISimpleConfigModifiers configModifiers = new SimpleConfigModifiers() { BaselineName = baselineName }; SimpleConfigModel templateModel = SimpleConfigModel.FromJObject(templateFile.MountPoint.EnvironmentSettings, srcObject, configModifiers, localeSourceObject); if (!PerformTemplateValidation(templateModel, templateFile, host)) { template = null; return(false); } if (!CheckGeneratorVersionRequiredByTemplate(templateModel.GeneratorVersions)) { // template isn't compatible with this generator version template = null; return(false); } RunnableProjectTemplate runnableProjectTemplate = new RunnableProjectTemplate(srcObject, this, templateFile, templateModel, null, hostTemplateConfigFile); if (!AreAllTemplatePathsValid(templateModel, runnableProjectTemplate)) { template = null; return(false); } template = runnableProjectTemplate; return(true); } catch (Exception ex) { host.LogMessage($"Error reading template from file: {templateFile.FullPath} | Error = {ex.Message}"); } template = null; return(false); }
public static IRunnableProjectConfig FromJObject(JObject o) { JToken extendedConfigToken; if (o.TryGetValue("config", StringComparison.OrdinalIgnoreCase, out extendedConfigToken)) { ConfigModel.FromJObject(o); } return(SimpleConfigModel.FromJObject(o)); }
public bool TryGetTemplateFromConfigInfo(IFileSystemInfo templateFileConfig, out ITemplate template, IFileSystemInfo localeFileConfig = null, IFile hostTemplateConfigFile = null, string baselineName = null) { IFile templateFile = templateFileConfig as IFile; if (templateFile == null) { template = null; return(false); } IFile localeFile = localeFileConfig as IFile; ITemplateEngineHost host = templateFileConfig.MountPoint.EnvironmentSettings.Host; try { JObject baseSrcObject = ReadJObjectFromIFile(templateFile); JObject srcObject = MergeAdditionalConfiguration(baseSrcObject, templateFileConfig); JObject localeSourceObject = null; if (localeFile != null) { localeSourceObject = ReadJObjectFromIFile(localeFile); } ISimpleConfigModifiers configModifiers = new SimpleConfigModifiers() { BaselineName = baselineName }; SimpleConfigModel templateModel = SimpleConfigModel.FromJObject(templateFile.MountPoint.EnvironmentSettings, srcObject, configModifiers, localeSourceObject); if (!PerformTemplateValidation(templateModel, templateFile, host)) { template = null; return(false); } if (!CheckGeneratorVersionRequiredByTemplate(templateModel.GeneratorVersions)) { // template isn't compatible with this generator version template = null; return(false); } RunnableProjectTemplate runnableProjectTemplate = new RunnableProjectTemplate(srcObject, this, templateFile, templateModel, null, hostTemplateConfigFile); if (!AreAllTemplatePathsValid(templateModel, runnableProjectTemplate)) { template = null; return(false); } // Record the timestamp of the template file so we // know to reload it if it changes if (templateFile.MountPoint.Info.MountPointFactoryId == FileSystemMountPointFactoryId && host.FileSystem is IFileLastWriteTimeSource timeSource) { var physicalPath = Path.Combine(templateFile.MountPoint.Info.Place, templateFile.FullPath.TrimStart('/')); runnableProjectTemplate.ConfigTimestampUtc = timeSource.GetLastWriteTimeUtc(physicalPath); } template = runnableProjectTemplate; return(true); } catch (Exception ex) { host.LogMessage($"Error reading template from file: {templateFile.FullPath} | Error = {ex.Message}"); } template = null; return(false); }