예제 #1
0
        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);
        }
예제 #2
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;
 }