コード例 #1
0
        private async Task <bool> LoadAndBuildComponentEnvoyAsync(Envoy componentEnvoy)
        {
            CommandLineInterfaceApplication.WriteLineVerbose($"Resolved to {componentEnvoy.Name.Last}");

            ILockedSourceFile componentFileLock;

            try
            {
                componentFileLock = await componentEnvoy.LoadAsync();
            }
            catch (Exception e) when(ExceptionHelper.ShouldExceptionBeCaught(e))
            {
                string loadErrorMessage = DocumentExtensions.GetLoadErrorMessageForException(e, componentEnvoy.FileName());

                throw new CommandLineOperationException(loadErrorMessage, e);
            }
            using (componentFileLock)
            {
                CommandLineInterfaceApplication.WriteLineVerbose($"Loaded {componentEnvoy.Name.Last}");
                var configurationReference = componentEnvoy.GetOwningComponentConfigurationReference();
                if (ShowErrorIfSubTypeNotSupported(configurationReference))
                {
                    return(false);
                }
                bool buildSucceeded = await BuildComponentAsync(configurationReference);

                bool saveFailed = Save && !await TrySaveProjectFilesAsync(componentEnvoy.Project);

                if (!buildSucceeded || saveFailed)
                {
                    CommandLineInterfaceApplication.WriteError(
                        string.Format(
                            CultureInfo.CurrentCulture,
                            LocalizedStrings.BuildComponentTool_BuildFailed,
                            componentEnvoy.Name.Last));
                    return(false);
                }

                WriteSuccessMessage(componentEnvoy.Name.Last, configurationReference.Configuration.GetOutputDirectory());
                return(true);
            }
        }
コード例 #2
0
        /// <inheritdoc />
        protected override async Task <int> RunAsync(IEnumerable <string> extraArguments, ProjectAndHostCreator projectAndHostCreator)
        {
            if (!LongPath.IsPathRooted(ProjectPath))
            {
                ProjectPath = LongPath.GetFullPath(LongPath.Combine(Environment.CurrentDirectory, ProjectPath));
            }

            Project project = await projectAndHostCreator.OpenProjectAsync(ProjectPath);

            CommandLineInterfaceApplication.WriteLineVerbose($"Opened project at {ProjectPath}");

            Envoy componentEnvoy = await ResolveComponentToBuildAsync(project);

            if (componentEnvoy == null)
            {
                return(1);
            }

            bool buildSucceeded = await LoadAndBuildComponentEnvoyAsync(componentEnvoy);

            return(buildSucceeded ? 0 : 1);
        }