in src/AWS.Deploy.CLI/Commands/CommandFactory.cs [398:479]
private Command BuildDeploymentProjectCommand()
{
var deploymentProjectCommand = new Command("deployment-project",
"Save the deployment project inside a user provided directory path.");
var generateDeploymentProjectCommand = new Command("generate",
"Save the deployment project inside a user provided directory path without proceeding with a deployment");
lock (s_child_command_lock)
{
generateDeploymentProjectCommand.Add(_optionOutputDirectory);
generateDeploymentProjectCommand.Add(_optionDiagnosticLogging);
generateDeploymentProjectCommand.Add(_optionProjectPath);
generateDeploymentProjectCommand.Add(_optionProjectDisplayName);
}
generateDeploymentProjectCommand.Handler = CommandHandler.Create(async (GenerateDeploymentProjectCommandHandlerInput input) =>
{
try
{
_toolInteractiveService.Diagnostics = input.Diagnostics;
var projectDefinition = await _projectParserUtility.Parse(input.ProjectPath ?? "");
var saveDirectory = input.Output;
var projectDisplayName = input.ProjectDisplayName;
OrchestratorSession session = new OrchestratorSession(projectDefinition);
var targetApplicationFullPath = new DirectoryInfo(projectDefinition.ProjectPath).FullName;
if (!string.IsNullOrEmpty(saveDirectory))
{
var targetApplicationDirectoryFullPath = new DirectoryInfo(targetApplicationFullPath).Parent!.FullName;
saveDirectory = Path.GetFullPath(saveDirectory, targetApplicationDirectoryFullPath);
}
var generateDeploymentProject = new GenerateDeploymentProjectCommand(
_toolInteractiveService,
_consoleUtilities,
_cdkProjectHandler,
_commandLineWrapper,
_directoryManager,
_fileManager,
session,
_deploymentManifestEngine,
targetApplicationFullPath);
await generateDeploymentProject.ExecuteAsync(saveDirectory, projectDisplayName);
return CommandReturnCodes.SUCCESS;
}
catch (Exception e) when (e.IsAWSDeploymentExpectedException())
{
if (input.Diagnostics)
_toolInteractiveService.WriteErrorLine(e.PrettyPrint());
else
{
_toolInteractiveService.WriteErrorLine(string.Empty);
_toolInteractiveService.WriteErrorLine(e.Message);
}
// bail out with an non-zero return code.
return CommandReturnCodes.USER_ERROR;
}
catch (Exception e)
{
// This is a bug
_toolInteractiveService.WriteErrorLine(
"Unhandled exception. This is a bug. Please copy the stack trace below and file a bug at https://github.com/aws/aws-dotnet-deploy. " +
e.PrettyPrint());
return CommandReturnCodes.UNHANDLED_EXCEPTION;
}
});
lock (s_child_command_lock)
{
deploymentProjectCommand.Add(generateDeploymentProjectCommand);
}
return deploymentProjectCommand;
}