in Tools/LambdaTestTool/src/Amazon.Lambda.TestTool/TestToolStartup.cs [35:118]
public static void Startup(string productName, Action<LocalLambdaOptions, bool> uiStartup, string[] args, RunConfiguration runConfiguration)
{
try
{
var commandOptions = CommandLineOptions.Parse(args);
shouldDisableLogs = Utils.ShouldDisableLogs(commandOptions);
if (!shouldDisableLogs) Utils.PrintToolTitle(productName);
if (commandOptions.ShowHelp)
{
CommandLineOptions.PrintUsage();
return;
}
var localLambdaOptions = new LocalLambdaOptions()
{
Host = commandOptions.Host,
Port = commandOptions.Port
};
var lambdaAssemblyDirectory = commandOptions.Path ?? Directory.GetCurrentDirectory();
#if NET6_0
var targetFramework = "net6.0";
#elif NET8_0
var targetFramework = "net8.0";
#elif NET9_0
var targetFramework = "net9.0";
#endif
// If running in the project directory select the build directory so the deps.json file can be found.
if (Utils.IsProjectDirectory(lambdaAssemblyDirectory))
{
lambdaAssemblyDirectory = Path.Combine(lambdaAssemblyDirectory, $"bin/Debug/{targetFramework}");
}
lambdaAssemblyDirectory = Utils.SearchLatestCompilationDirectory(lambdaAssemblyDirectory);
localLambdaOptions.LambdaRuntime = LocalLambdaRuntime.Initialize(lambdaAssemblyDirectory);
if (!shouldDisableLogs) runConfiguration.OutputWriter.WriteLine($"Loaded local Lambda runtime from project output {lambdaAssemblyDirectory}");
if (commandOptions.NoUI)
{
ExecuteWithNoUi(localLambdaOptions, commandOptions, lambdaAssemblyDirectory, runConfiguration);
}
else
{
// Look for aws-lambda-tools-defaults.json or other config files.
localLambdaOptions.LambdaConfigFiles = Utils.SearchForConfigFiles(lambdaAssemblyDirectory);
// Start the test tool web server.
uiStartup(localLambdaOptions, !commandOptions.NoLaunchWindow);
}
}
catch (CommandLineParseException e)
{
runConfiguration.OutputWriter.WriteLine($"Invalid command line arguments: {e.Message}");
runConfiguration.OutputWriter.WriteLine("Use the --help option to learn about the possible command line arguments");
if (runConfiguration.Mode == RunConfiguration.RunMode.Normal)
{
if (Debugger.IsAttached)
{
Console.WriteLine("Press any key to exit");
Console.ReadKey();
}
System.Environment.Exit(-1);
}
}
catch (Exception e)
{
runConfiguration.OutputWriter.WriteLine($"Unknown error occurred causing process exit: {e.Message}");
runConfiguration.OutputWriter.WriteLine(e.StackTrace);
if (runConfiguration.Mode == RunConfiguration.RunMode.Normal)
{
if (Debugger.IsAttached)
{
Console.WriteLine("Press any key to exit");
Console.ReadKey();
}
System.Environment.Exit(-2);
}
}
}