static int Main(string[] args) { try { _logger.Information("Build process started"); var startTime = DateTime.UtcNow; var parsingResults = ArgumentsParser.Parse(args); var clientAssembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(parsingResults.AssemblyPath); InitialSetup(); var boundedContextConfig = _boundedContextLoader.Load(parsingResults.BoundedContextConfigRelativePath); var assemblyContext = AssemblyContext.From(clientAssembly); _artifactsDiscoverer = new ArtifactsDiscoverer(assemblyContext, _artifactTypes, _logger); _eventProcessorDiscoverer = new EventProcessorDiscoverer(assemblyContext, _logger); var artifacts = _artifactsDiscoverer.Artifacts; var topology = _topologyConfigurationHandler.Build(artifacts, parsingResults); var artifactsConfiguration = _artifactsConfigurationHandler.Build(artifacts, topology, parsingResults); ValidateEventProcessors(_eventProcessorDiscoverer.GetAllEventProcessors()); var events = artifacts.Where(_ => _artifactTypes.ArtifactTypes.Where(artifactType => artifactType.TypeName == "event").First().Type.IsAssignableFrom(_)); ValidateEvents(events); _topologyConfigurationHandler.Save(topology); _artifactsConfigurationHandler.Save(artifactsConfiguration); if (parsingResults.GenerateProxies) { _proxiesHandler = _bootLoaderResult.Container.Get <ProxiesHandler>(); _proxiesHandler.CreateProxies(artifacts, parsingResults, artifactsConfiguration); } var endTime = DateTime.UtcNow; var deltaTime = endTime.Subtract(startTime); _logger.Information($"Finished build process. (Took {deltaTime.TotalSeconds} seconds)"); } catch (Exception ex) { _logger.Error(ex, "Error consolidating artifacts;"); return(1); } return(0); }
/// <summary> /// Initializes a new instance of the <see cref="BuildTask"/> class. /// </summary> /// <param name="buildTarget">Current <see cref="BuildTarget"/>.</param> /// <param name="configuration">Current <see cref="BuildTaskConfiguration"/>.</param> /// <param name="boundedContextLoader"><see cref="IBoundedContextLoader"/> for loading bounded-context.json.</param> /// <param name="artifactTypes">Known <see cref="ArtifactTypes"/>.</param> /// <param name="topologyConfigurationHandler"><see cref="TopologyConfigurationHandler"/> for handling topology configuration.</param> /// <param name="artifactsConfigurationHandler"><see cref="ArtifactsConfigurationHandler"/> for handling artifacts configuration.</param> /// <param name="proxiesHandler"><see cref="ProxiesHandler"/> for dealing with proxies.</param> /// <param name="buildMessages"><see cref="IBuildMessages"/> for build messages.</param> public BuildTask( BuildTarget buildTarget, BuildTaskConfiguration configuration, IBoundedContextLoader boundedContextLoader, ArtifactTypes artifactTypes, TopologyConfigurationHandler topologyConfigurationHandler, ArtifactsConfigurationHandler artifactsConfigurationHandler, ProxiesHandler proxiesHandler, IBuildMessages buildMessages) { _configuration = configuration; _boundedContextLoader = boundedContextLoader; _artifactTypes = artifactTypes; _buildMessages = buildMessages; _topologyConfigurationHandler = topologyConfigurationHandler; _artifactsConfigurationHandler = artifactsConfigurationHandler; _proxiesHandler = proxiesHandler; _buildTarget = buildTarget; }