public async Task <ApiGatewayComponent> InitializeAt( Components.ComponentTree tree, ComponentData data, ProjectSettings settings) { var configPath = Path.Combine(tree.Path.FullName, ApiGatewayComponent.ConfigFileName); if (File.Exists(configPath)) { throw new InvalidOperationException($"You can't add a new api at: \"{tree.Path.FullName}\". It already exists."); } var port = data.Port ?? ProjectSettings.GetRandomUnusedPort(); await Templates.Extract( ApiGatewayComponent.ConfigFileName, configPath, Templates.TemplateType.Infrastructure, ("API_NAME", TemplateData.SanitizeResourceName(data.Name)), ("PORT", port.ToString()), ("DEFAULT_LANGUAGE", data.DefaultLanguage), ("BASE_URL", data.BaseUrl)); return(await ApiGatewayComponent.Init(tree.Path, settings)); }
public async Task <ClientComponent> InitializeAt( Components.ComponentTree tree, ComponentData data, ProjectSettings settings) { var configFile = Path.Combine(tree.Path.FullName, ClientComponent.ConfigFileName); if (File.Exists(configFile)) { throw new InvalidOperationException($"You can't create a client at \"{tree.Path.FullName}\". It already exists."); } var clientPort = data.Port ?? ProjectSettings.GetRandomUnusedPort(); await TypeHandlers[data.ClientType](tree.Path, settings, data.Name); await Templates.Extract( ClientComponent.ConfigFileName, configFile, Templates.TemplateType.Infrastructure, ("NAME", TemplateData.SanitizeResourceName(data.Name)), ("PORT", clientPort.ToString()), ("TYPE", data.ClientType.ToString()), ("PATH", settings.GetRelativePath( tree.Path.FullName, tree.FindFirst <TerraformRootComponent>(Components.Direction.Out)?.FoundAt.Path.FullName))); return(await ClientComponent.Init(tree.Path, x => CreateBaseContainer(tree.Path, settings, x.Name), settings)); }
public async Task <ChildConfigComponent> InitializeAt(Components.ComponentTree tree, ComponentData data, ProjectSettings settings) { var configPath = new FileInfo(Path.Combine(tree.Path.FullName, $"{data.Name}.childconfig.yml")); if (configPath.Exists) { throw new InvalidOperationException($"You can't add child config {data.Name} at \"{tree.Path.FullName}\". It already exists."); } await Templates.Extract( "childconfig.yml", configPath.FullName, Templates.TemplateType.Infrastructure, ("NAME", TemplateData.SanitizeResourceName(data.Name))); return(await ChildConfigComponent.Init(configPath)); }
private static async Task <ILanguageVersion> SetupApiTrigger( string language, DirectoryInfo path, ProjectSettings settings, Components.ComponentTree componentTree, string name) { var apiComponent = componentTree.FindFirst <ApiGatewayComponent>(Components.Direction.Out); if (apiComponent == null) { throw new InvalidOperationException("Can't add a api-function outside of any api."); } var languageVersion = FunctionLanguage.Parse(language) ?? apiComponent.Component.GetDefaultLanguage(settings); Console.WriteLine("Enter url:"); var url = apiComponent.Component.GetUrl(Console.ReadLine()); Console.WriteLine("Enter method:"); var method = Console.ReadLine(); await Templates.Extract( "api-lambda-function.config.yml", settings.GetRootedPath(Path.Combine(path.FullName, LambdaFunctionComponent.ConfigFileName)), Templates.TemplateType.Infrastructure, ("NAME", name), ("FUNCTION_NAME", TemplateData.SanitizeResourceName(name)), ("FUNCTION_TYPE", "api"), ("LANGUAGE", languageVersion.ToString()), ("FUNCTION_RUNTIME", languageVersion.GetRuntimeName()), ("FUNCTION_METHOD", method), ("API_NAME", TemplateData.SanitizeResourceName(apiComponent.Component.Name)), ("URL", url), ("FUNCTION_HANDLER", languageVersion.GetHandlerName())); return(languageVersion); }
private static async Task <ILanguageVersion> SetupKinesisStreamTrigger( string language, DirectoryInfo path, ProjectSettings settings, Components.ComponentTree componentTree, string name) { var languageVersion = FunctionLanguage.GetLanguage(language, settings.GetConfiguration(FunctionLanguage.DefaultLanguageConfigurationKay)); await Templates.Extract( "kinesis-stream-lambda-function.config.yml", settings.GetRootedPath(Path.Combine(path.FullName, LambdaFunctionComponent.ConfigFileName)), Templates.TemplateType.Infrastructure, ("NAME", name), ("FUNCTION_NAME", TemplateData.SanitizeResourceName(name)), ("FUNCTION_TYPE", "kinesis-stream"), ("LANGUAGE", languageVersion.ToString()), ("FUNCTION_RUNTIME", languageVersion.GetRuntimeName()), ("FUNCTION_HANDLER", languageVersion.GetHandlerName())); return(languageVersion); }