using System;
using System.Collections.Generic;
using Amazon.Common.DotNetCli.Tools;
using Amazon.Common.DotNetCli.Tools.Options;
using ThirdParty.Json.LitJson;
namespace Amazon.Lambda.Tools
{
///
/// This class gives access to the default values for the CommandOptions defined in the project's default json file.
///
public class LambdaToolsDefaults : DefaultConfigFile
{
public const string DEFAULT_FILE_NAME = "aws-lambda-tools-defaults.json";
public LambdaToolsDefaults()
{
}
public LambdaToolsDefaults(string sourceFile)
: this(new JsonData(), sourceFile)
{
}
public LambdaToolsDefaults(JsonData data, string sourceFile)
: base(data, sourceFile)
{
}
public override string DefaultConfigFileName => DEFAULT_FILE_NAME;
public string Profile => GetValueAsString(CommonDefinedCommandOptions.ARGUMENT_AWS_PROFILE);
public string Region => GetValueAsString(CommonDefinedCommandOptions.ARGUMENT_AWS_REGION);
public string FunctionHandler => GetValueAsString(LambdaDefinedCommandOptions.ARGUMENT_FUNCTION_HANDLER);
public string FunctionName => GetValueAsString(LambdaDefinedCommandOptions.ARGUMENT_FUNCTION_NAME);
public string FunctionRuntime => GetValueAsString(LambdaDefinedCommandOptions.ARGUMENT_FUNCTION_RUNTIME);
public string FunctionArchitecture => GetValueAsString(LambdaDefinedCommandOptions.ARGUMENT_FUNCTION_ARCHITECTURE);
public string FunctionRole => GetValueAsString(LambdaDefinedCommandOptions.ARGUMENT_FUNCTION_ROLE);
public int? FunctionMemory
{
get
{
var data = GetValue(LambdaDefinedCommandOptions.ARGUMENT_FUNCTION_MEMORY_SIZE);
if (data != null && data.IsInt)
{
return (int)data;
}
return null;
}
}
public int? FunctionTimeout
{
get
{
var data = GetValue(LambdaDefinedCommandOptions.ARGUMENT_FUNCTION_TIMEOUT);
if (data != null && data.IsInt)
{
return (int)data;
}
return null;
}
}
public string CloudFormationTemplate => GetValueAsString(LambdaDefinedCommandOptions.ARGUMENT_CLOUDFORMATION_TEMPLATE);
public IDictionary CloudFormationTemplateParameters
{
get
{
var str = GetValueAsString(LambdaDefinedCommandOptions.ARGUMENT_CLOUDFORMATION_TEMPLATE_PARAMETER);
if (string.IsNullOrEmpty(str))
return null;
try
{
return Utilities.ParseKeyValueOption(str);
}
catch (Exception)
{
return null;
}
}
}
public IDictionary EnvironmentVariables
{
get
{
var str = GetValueAsString(LambdaDefinedCommandOptions.ARGUMENT_ENVIRONMENT_VARIABLES);
if (string.IsNullOrEmpty(str))
return null;
try
{
return Utilities.ParseKeyValueOption(str);
}
catch (Exception)
{
return null;
}
}
}
public string[] FunctionSubnets
{
get
{
var str = GetValueAsString(LambdaDefinedCommandOptions.ARGUMENT_FUNCTION_SUBNETS);
if (string.IsNullOrEmpty(str))
return null;
try
{
return str.SplitByComma();
}
catch (Exception)
{
return null;
}
}
}
public string[] FunctionSecurityGroups
{
get
{
var str = GetValueAsString(LambdaDefinedCommandOptions.ARGUMENT_FUNCTION_SECURITY_GROUPS);
if (string.IsNullOrEmpty(str))
return null;
try
{
return str.SplitByComma();
}
catch (Exception)
{
return null;
}
}
}
public string KMSKeyArn => GetValueAsString(LambdaDefinedCommandOptions.ARGUMENT_KMS_KEY_ARN);
public string StackName => GetValueAsString(LambdaDefinedCommandOptions.ARGUMENT_STACK_NAME);
public string S3Bucket => GetValueAsString(LambdaDefinedCommandOptions.ARGUMENT_S3_BUCKET);
public string S3Prefix => GetValueAsString(LambdaDefinedCommandOptions.ARGUMENT_S3_PREFIX);
public string Configuration => GetValueAsString(CommonDefinedCommandOptions.ARGUMENT_CONFIGURATION);
public string Framework => GetValueAsString(CommonDefinedCommandOptions.ARGUMENT_FRAMEWORK);
public string DeadLetterTargetArn => GetValueAsString(LambdaDefinedCommandOptions.ARGUMENT_DEADLETTER_TARGET_ARN);
public string TracingMode => GetValueAsString(LambdaDefinedCommandOptions.ARGUMENT_TRACING_MODE);
public string ImageRepo
{
get
{
if (LambdaImageTagData.TryParse(GetValueAsString(LambdaDefinedCommandOptions.ARGUMENT_IMAGE_TAG), out var data))
return data.Repo;
return null;
}
}
public string ImageTag
{
get
{
if (LambdaImageTagData.TryParse(GetValueAsString(LambdaDefinedCommandOptions.ARGUMENT_IMAGE_TAG), out var data))
return data.Tag;
return null;
}
}
public string ImageCommand => GetValueAsString(LambdaDefinedCommandOptions.ARGUMENT_IMAGE_COMMAND);
public string PackageType => GetValueAsString(LambdaDefinedCommandOptions.ARGUMENT_PACKAGE_TYPE);
}
}