Added AssemblyDataPostProcessor with an implementation WriteToFileAssemblyDataPostProcessor to allow post process generated and reference asssemblies during the pipeline.
Dll's are written out to LibrarySets folder, but are not included in the repo
A record keeps track of the files so they are deleted on the next round.
Optional setting --dll to specify the output folder. If not set, the dlls are not written out
Add back all conversions, as these failed during integration tests
Note the new output folders for Assemblies
Application Dependencies (excl Logger and Options)
classDiagram
direction TB
%% HACK: Mermaid doesnt support commas withing generic, so use a similar looking character (﹐)
namespace CSharpCode_Generate_And_Compile {
class AssemblyCompiler {
%% Compile(librarySet : LibrarySet,definitions : DefinitionDictionary~LambdaExpression~? = null) IDictionary~string, AssemblyData~
}
class CSharpLibrarySetToStreamsWriter {
}
class CSharpCodeStreamPostProcessor {
ProcessStream(name : string, stream : Stream) void
}
class WriteToFileCSharpCodeStreamPostProcessor {
}
class AssemblyDataPostProcessor {
ProcessAssemblyData(name : string, assemblyData : AssemblyData) void
}
class WriteToFileAssemblyDataPostProcessor {
}
}
namespace Expression_Building {
class LibrarySetExpressionBuilder {
ProcessLibrarySet(librarySet : LibrarySet) DefinitionDictionary<LambdaExpression>
}
class OperatorsBinder {
}
class CqlOperatorsBinder {
}
class ContextBinder{
}
class CqlContextBinder{
}
class TypeConverter {
}
class ModelInspector {
}
class CqlCompilerFactory {
}
}
namespace Fhir_Resource_Building {
class ResourcePackager {
%% PackageResources(elmDirectory : DirectoryInfo, cqlDirectory : DirectoryInfo, resourceCanonicalRootUrl : string? = null) IReadOnlyCollection~Resource~
}
class FhirResourcePostProcessor {
%% ProcessResource(resource : Resource) void
}
class WriteToFileFhirResourcePostProcessor {
}
}
namespace Cql_To_Resource_Pipeline {
class CqlToResourcePackagingPipeline {
}
}
namespace Application {
class PackagerCliProgram {
}
class OptionsConsoleDumper {
}
}
%% namespace Dependencies {
class TypeManager {
get_TypeResolver() TypeResolver
get_TupleTypes() IEnumerable~Type~
}
class TypeResolver {
}
%% }
%% Inheritance
CqlOperatorsBinder --> OperatorsBinder : inherits
CqlContextBinder --> ContextBinder : inherits
WriteToFileCSharpCodeStreamPostProcessor --> CSharpCodeStreamPostProcessor : inherits
WriteToFileAssemblyDataPostProcessor --> AssemblyDataPostProcessor : inherits
WriteToFileFhirResourcePostProcessor --> FhirResourcePostProcessor : inherits
%% Injected Dependencies
AssemblyDataPostProcessor ..> AssemblyCompiler : injected\n(optional)
CSharpCodeStreamPostProcessor ..> AssemblyCompiler : injected\n(optional)
CSharpLibrarySetToStreamsWriter ..> AssemblyCompiler : injected
TypeManager ..> AssemblyCompiler : injected
AssemblyCompiler ..> CqlToResourcePackagingPipeline : injected
ILibrarySetExpressionBuilder ..> CqlToResourcePackagingPipeline : injected
ResourcePackager ..> CqlToResourcePackagingPipeline : injected
OptionsConsoleDumper ..> PackagerCliProgram : injected
CqlToResourcePackagingPipeline ..> PackagerCliProgram : injected
TypeResolver ..> CqlOperatorsBinder : injected
TypeConverter ..> CqlOperatorsBinder : injected
ModelInspector ..> TypeConverter : injected
TypeResolver ..> TypeManager : injected
TypeResolver ..> ResourcePackager : injected
FhirResourcePostProcessor ..> ResourcePackager : injected\n(optional)
TypeResolver ..> CSharpLibrarySetToStreamsWriter : injected
ℹ️Work for issue #337
AssemblyDataPostProcessor
with an implementationWriteToFileAssemblyDataPostProcessor
to allow post process generated and reference asssemblies during the pipeline.--dll
to specify the output folder. If not set, the dlls are not written outNote the new output folders for Assemblies
Application Dependencies (excl Logger and Options)