public void Save(RhetosBuildEnvironment rhetosBuildEnvironment, RhetosTargetEnvironment rhetosTargetEnvironment, RhetosProjectAssets rhetosProjectAssets) { var rhetosProjectContent = new RhetosProjectContent { RhetosBuildEnvironment = rhetosBuildEnvironment, RhetosTargetEnvironment = rhetosTargetEnvironment, RhetosProjectAssets = rhetosProjectAssets }; string serialized = JsonConvert.SerializeObject(rhetosProjectContent, _serializerSettings); string oldSerializedData = File.Exists(ProjectAssetsFilePath) ? File.ReadAllText(ProjectAssetsFilePath, Encoding.UTF8) : ""; if (!Directory.Exists(Path.GetDirectoryName(ProjectAssetsFilePath))) { _filesUtility.SafeCreateDirectory(Path.GetDirectoryName(ProjectAssetsFilePath)); } if (oldSerializedData != serialized) { File.WriteAllText(ProjectAssetsFilePath, serialized, Encoding.UTF8); _logger.Info($"{nameof(RhetosProjectAssets)} updated."); } else { _logger.Info($"{nameof(RhetosProjectAssets)} is already up-to-date."); } }
public InitialDomCodeGenerator( PluginInfoCollection plugins, DatabaseSettings databaseSettings, RhetosBuildEnvironment rhetosBuildEnvironment) { _plugins = plugins; _databaseSettings = databaseSettings; _rhetosBuildEnvironment = rhetosBuildEnvironment; }
public override bool Execute() { var resolvedProjectContentFiles = ProjectContentFiles.Select(x => new { x.ItemSpec, FullPath = x.GetMetadata("FullPath") }); var invalidProjectContentFiles = resolvedProjectContentFiles.Where(x => string.IsNullOrEmpty(x.FullPath)); if (invalidProjectContentFiles.Any()) { throw new FrameworkException("Could not resolve the full path for the Rhetos input files " + string.Join(", ", invalidProjectContentFiles.Select(x => x.ItemSpec)).Limit(1000)); } var assembliesInReferencedProjects = Assemblies.Where(x => !string.IsNullOrEmpty(x.GetMetadata("Project"))).Select(x => new { x.ItemSpec, FullPath = x.GetMetadata("FullPath") }); var invalidAssembliesInReferencedProjects = assembliesInReferencedProjects.Where(x => string.IsNullOrEmpty(x.FullPath)); if (invalidAssembliesInReferencedProjects.Any()) { throw new FrameworkException("Could not resolve the full path for the referenced assemblies " + string.Join(", ", invalidAssembliesInReferencedProjects.Select(x => x.ItemSpec)).Limit(1000)); } var nuget = new NuGetUtilities(ProjectDirectory, resolvedProjectContentFiles.Select(x => x.FullPath), new NuGetLogger(Log), null); var packagesAssemblies = nuget.GetRuntimeAssembliesFromPackages(); var rhetosBuildEnvironment = new RhetosBuildEnvironment { ProjectFolder = Path.GetFullPath(ProjectDirectory), OutputAssemblyName = AssemblyName, CacheFolder = Path.GetFullPath(Path.Combine(ProjectDirectory, IntermediateOutputFolder)), GeneratedAssetsFolder = Path.GetFullPath(Path.Combine(ProjectDirectory, GeneratedAssetsFolder)), GeneratedSourceFolder = Path.GetFullPath(Path.Combine(ProjectDirectory, IntermediateOutputFolder, "Source")), }; var rhetosTargetEnvironment = new RhetosTargetEnvironment { TargetPath = Path.GetFullPath(Path.Combine(ProjectDirectory, TargetPath)), TargetAssetsFolder = Path.GetFullPath(Path.Combine(ProjectDirectory, TargetAssetsFolder)), }; var rhetosProjectAssets = new RhetosProjectAssets { InstalledPackages = new InstalledPackages { Packages = nuget.GetInstalledPackages() }, Assemblies = packagesAssemblies.Union(assembliesInReferencedProjects.Select(x => x.FullPath)), }; var rhetosProjectAssetsFileProvider = new RhetosProjectContentProvider(ProjectDirectory, new VSLogProvider(Log)); rhetosProjectAssetsFileProvider.Save(rhetosBuildEnvironment, rhetosTargetEnvironment, rhetosProjectAssets); //The file touch is added to notify the language server that something has happened even if the file has not been changed. //This is a problem when in a referenced project we implement a new concept, the RhetosProjectAssetsFile remains the same but the language server //must be restarted to take into account the new concept FilesUtility.SafeTouch(rhetosProjectAssetsFileProvider.ProjectAssetsFilePath); return(true); }
public EntityFrameworkMappingGenerator( ICodeGenerator codeGenerator, IPluginsContainer <IConceptMapping> plugins, RhetosBuildEnvironment rhetosBuildEnvironment, ILogProvider logProvider) { _plugins = plugins; _codeGenerator = codeGenerator; _performanceLogger = logProvider.GetLogger("Performance." + GetType().Name); _rhetosBuildEnvironment = rhetosBuildEnvironment; }
public MvcModelGenerator( IPluginsContainer <IMvcModelGeneratorPlugin> plugins, ICodeGenerator codeGenerator, ILogProvider logProvider, RhetosBuildEnvironment rhetosBuildEnvironment ) { _plugins = plugins; _codeGenerator = codeGenerator; _rhetosBuildEnvironment = rhetosBuildEnvironment; _performanceLogger = logProvider.GetLogger("Performance"); }
public ConceptDataMigrationGenerator( ILogProvider logProvider, IDslModel dslModel, RhetosBuildEnvironment rhetosBuildEnvironment, IPluginsContainer <IConceptDataMigration> plugins) { _performanceLogger = logProvider.GetLogger("Performance." + GetType().Name); _logger = logProvider.GetLogger(GetType().Name); _dslModel = dslModel; _plugins = plugins; _rhetosBuildEnvironment = rhetosBuildEnvironment; }
public AssemblyGenerator(ILogProvider logProvider, BuildOptions buildOptions, RhetosBuildEnvironment buildEnvironment, FilesUtility filesUtility, ISourceWriter sourceWriter) { _performanceLogger = logProvider.GetLogger("Performance." + GetType().Name); _logger = logProvider.GetLogger("AssemblyGenerator"); _buildOptions = buildOptions; _errorReportLimit = buildOptions.AssemblyGeneratorErrorReportLimit; _buildEnvironment = buildEnvironment; _sourceWriter = sourceWriter; _cacheUtility = new CacheUtility(typeof(AssemblyGenerator), buildEnvironment, filesUtility); }
public AppSettingsGenerator( RhetosBuildEnvironment rhetosBuildEnvironment, RhetosTargetEnvironment rhetosTargetEnvironment, LegacyPathsOptions legacyPathsOptions, ILogProvider logProvider, BuildOptions buildOptions) { _rhetosBuildEnvironment = rhetosBuildEnvironment; _rhetosTargetEnvironment = rhetosTargetEnvironment; _legacyPathsOptions = legacyPathsOptions; _logger = logProvider.GetLogger(GetType().Name); _buildOptions = buildOptions; }
/// <summary> /// If assemblyName is not null, the assembly will be saved on disk. /// If assemblyName is null, the assembly will be generated in memory. /// </summary> public DomGenerator( IPluginsContainer <IConceptCodeGenerator> plugins, ICodeGenerator codeGenerator, IAssemblyGenerator assemblyGenerator, RhetosBuildEnvironment buildEnvironment, ISourceWriter sourceWriter) { _pluginRepository = plugins; _codeGenerator = codeGenerator; _assemblyGenerator = assemblyGenerator; _buildEnvironment = buildEnvironment; _sourceWriter = sourceWriter; }
public ResourcesGenerator( InstalledPackages installedPackages, ILogProvider logProvider, BuildOptions buildOptions, RhetosBuildEnvironment rhetosBuildEnvironment) { _installedPackages = installedPackages; _logProvider = logProvider; _buildOptions = buildOptions; _rhetosBuildEnvironment = rhetosBuildEnvironment; _logger = logProvider.GetLogger(GetType().Name); _performanceLogger = logProvider.GetLogger("Performance." + GetType().Name); }
public DslSyntax Load() { if (!IsValidProjectRootPath(ProjectRootPath)) { throw new InvalidOperationException($"Can't load {nameof(DslSyntax)} from '{ProjectRootPath}', because it is not a valid project root path."); } var rhetosBuildEnvironment = new RhetosBuildEnvironment() { CacheFolder = BuildCacheFolder(ProjectRootPath) }; return(new DslSyntaxFile(rhetosBuildEnvironment, logProvider).Load()); }
/// <summary> /// It searches for type implementations in the provided list of assemblies. /// </summary> /// <param name="pluginAssemblies">List of DLL file paths that will be searched for plugins when invoking the method <see cref="FindPlugins"/>.</param> public PluginScanner(IEnumerable <string> pluginAssemblies, RhetosBuildEnvironment buildEnvironment, ILogProvider logProvider, PluginScannerOptions pluginScannerOptions) { if (string.IsNullOrEmpty(buildEnvironment.CacheFolder)) { throw new ArgumentException($"Configuration setting '{OptionsAttribute.GetConfigurationPath<RhetosBuildEnvironment>()}:{nameof(RhetosBuildEnvironment.CacheFolder)}' in not provided."); } _pluginsByExport = new Lazy <MultiDictionary <string, PluginInfo> >(() => GetPluginsByExport(pluginAssemblies), LazyThreadSafetyMode.ExecutionAndPublication); _pluginScannerCache = new PluginScannerCache(buildEnvironment.CacheFolder, logProvider, new FilesUtility(logProvider)); _performanceLogger = logProvider.GetLogger("Performance." + GetType().Name); _logger = logProvider.GetLogger(GetType().Name); var ignoreList = pluginScannerOptions.PredefinedIgnoreAssemblyFiles.Concat(pluginScannerOptions.IgnoreAssemblyFiles ?? Array.Empty <string>()).Distinct().ToList(); _ignoreAssemblyFiles = new HashSet <string>(ignoreList.Where(name => !name.EndsWith("*")), StringComparer.OrdinalIgnoreCase); _ignoreAssemblyPrefixes = ignoreList.Where(name => name.EndsWith("*")).Select(name => name.Trim('*')).ToArray(); }
public CaptionsResourceGenerator( IPluginsContainer <ICaptionsResourceGeneratorPlugin> plugins, CaptionsInitialCodePlugin initialCodePlugin, ICodeGenerator codeGenerator, ILogProvider logProvider, RhetosBuildEnvironment rhetosBuildEnvironment, FilesUtility filesUtility, MvcModelGeneratorOptions options) { _plugins = plugins; _initialCodePlugin = initialCodePlugin; _codeGenerator = codeGenerator; _logger = logProvider.GetLogger("CaptionsResourceGenerator"); _performanceLogger = logProvider.GetLogger($"Performance.{nameof(CaptionsResourceGenerator)}"); _rhetosBuildEnvironment = rhetosBuildEnvironment; _options = options; _cacheUtility = new CacheUtility(typeof(CaptionsResourceGenerator), rhetosBuildEnvironment, filesUtility); }
public ApplicationGenerator( ILogProvider logProvider, IDslModel dslModel, IPluginsContainer <IGenerator> generatorsContainer, RhetosBuildEnvironment buildEnvironment, FilesUtility filesUtility, ISourceWriter sourceWriter, BuildOptions buildOptions) { _logProvider = logProvider; _logger = logProvider.GetLogger(GetType().Name); _performanceLogger = logProvider.GetLogger("Performance." + GetType().Name); _dslModel = dslModel; _generatorsContainer = generatorsContainer; _buildEnvironment = buildEnvironment; _filesUtility = filesUtility; _sourceWriter = sourceWriter; _buildOptions = buildOptions; }
public DslDocumentation LoadDocumentation() { if (!IsValidProjectRootPath(ProjectRootPath)) { throw new InvalidOperationException($"Can't load {nameof(DslDocumentation)} from '{ProjectRootPath}', because it is not a valid project root path."); } // for now we are not sure if documentation file is a mandatory output file for Rhetos build process // we assume it is not and in case of failure we silently return null try { var rhetosBuildEnvironment = new RhetosBuildEnvironment() { CacheFolder = BuildCacheFolder(ProjectRootPath) }; return(new DslDocumentationFile(rhetosBuildEnvironment).Load()); } catch (Exception) { return(null); } }
public MacroOrderRepository(RhetosBuildEnvironment buildEnvironment) { _cacheFilePath = Path.Combine(buildEnvironment.CacheFolder, "MacroOrder.json"); }
public DataStructureEdmxCodeGenerator(RhetosBuildEnvironment rhetosBuildEnvironment) { _rhetosBuildEnvironment = rhetosBuildEnvironment; }
public SourceWriter(RhetosBuildEnvironment buildEnvironment, ILogProvider logProvider, FilesUtility filesUtility) { _logger = logProvider.GetLogger(GetType().Name); _buildEnvironment = buildEnvironment; _filesUtility = filesUtility; }
public DomInitializationCodeGenerator(RhetosBuildEnvironment buildEnvironment, CommonConceptsOptions commonConceptsOptions, CommonConceptsDatabaseSettings databaseSettings) { _buildEnvironment = buildEnvironment; _commonConceptsOptions = commonConceptsOptions; _databaseSettings = databaseSettings; }
public DslSyntaxFile(RhetosBuildEnvironment rhetosBuildEnvironment) { _rhetosBuildEnvironment = rhetosBuildEnvironment; }
public AfterDeployGenerator(InstalledPackages installedPackages, ILogProvider logProvider, RhetosBuildEnvironment rhetosBuildEnvironment, FilesUtility filesUtility) { _installedPackages = installedPackages; _afterDeployScriptsProvider = new AfterDeployScriptsProvider(logProvider, rhetosBuildEnvironment); _filesUtility = filesUtility; }
public CacheUtility(Type generatorType, RhetosBuildEnvironment buildEnvironment, FilesUtility filesUtility) { _filesUtility = filesUtility; _sha256 = SHA256.Create(); _cacheDirectory = Path.Combine(buildEnvironment.CacheFolder, generatorType.Name); }
public DslDocumentationFile(RhetosBuildEnvironment rhetosBuildEnvironment) { _rhetosBuildEnvironment = rhetosBuildEnvironment; }