コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }