import { MrConfig as MrConfigRoot } from '@cirrusct/mr-core'; import { TemplateSourceConfig } from '@cirrusct/templates'; export interface MrConfig extends MrConfigRoot { deploy?: MrDeployConfig; } export interface MrDeployConfig extends DeployConfig { deployments: { [name: string]: MrDeploymentConfig; }; } export interface DeployConfig { output: string; properties?: MrDeployConfigProperties; } export interface DeploymentLocationConfig { url: string; rewrite?: string; } export interface MrDeploymentConfigVolume { name: string; sourcePath: string; } export interface MrDeploymentConfigMountPoint { sourceVolume: string; containerPath: string; readOnly?: boolean; } export interface MrDeploymentConfig extends DeployConfig { package?: string; profile?: string; templates?: string | string[] | TemplateSourceConfig; dependsOnServers?: { [name: string]: MrDeploymentConfig; }; startCmds?: string | string[]; port?: number; portWs?: number; locations: string | DeploymentLocationConfig[]; rewrite?: string; volumes?: MrDeploymentConfigVolume[]; mountPoints?: MrDeploymentConfigMountPoint[]; } export interface MrDeployConfigAwsElasticBeanstalkProperties { application: string; environment: string; solutionStack: string; environmentType: 'SingleInstance' | 'LoadBalanced'; instanceType: string; efs?: { fileSystemId: string; mountDirectory: string; }; } export interface MrDeployConfigAwsProperties { accountId?: string; region?: string; elasticBeanstalk?: MrDeployConfigAwsElasticBeanstalkProperties; settingsSsmParam?: string; keyPairName?: string; } export interface MrDeployConfigProperties { aws?: MrDeployConfigAwsProperties; }