예제 #1
0
        public async Task <IActionResult> GenerateDockerfile([FromQuery] string deploymentPackageName, [FromQuery] string projectName, [FromQuery] string projectLocation, [FromQuery] byte type)
        {
            // Hard-coded!!!
            string dockerfileTemplateName = type == 1 ? "DockerfileTemplateForWebApp" : "DockerfileTemplateForFunctions";

            _deploymentRepository.AddRepository(deploymentPackageName, projectName);

            var dockerTemplateFilePath = Path.Combine(_webHostEnvironment.ContentRootPath, "Templates");

            using (var fileProvider = new PhysicalFileProvider(dockerTemplateFilePath))
            {
                var stream = fileProvider.GetFileInfo(dockerfileTemplateName).CreateReadStream();
                using (var streamReader = new StreamReader(stream))
                {
                    var dockerTemplateContent = streamReader.ReadToEnd();
                    dockerTemplateContent = type == 1 ? GenerateDockerfileForWebApp(dockerTemplateContent, projectLocation)
                                                      : GenerateDockerfileForFunctions(dockerTemplateContent, projectLocation);

                    using (var outputStream = new MemoryStream())
                    {
                        using (var streamWriter = new StreamWriter(outputStream))
                        {
                            await streamWriter.WriteAsync(dockerTemplateContent);

                            streamWriter.Flush();
                            return(File(outputStream.ToArray(), "text/plain"));
                        }
                    }
                }
            }
        }