ServiceClientGenerator.GeneratorDriver.GenerateXamarinComponents C# (CSharp) Method

GenerateXamarinComponents() public method

public GenerateXamarinComponents ( ) : void
return void
        void GenerateXamarinComponents()
        {
            var coreVersion = GenerationManifest.CoreVersion;

            // we're generating services only, so can automatically add the core runtime
            // as a dependency
            var awsDependencies = new Dictionary<string, string>(StringComparer.Ordinal);

            if (Configuration.ServiceDependencies != null)
            {
                var dependencies = Configuration.ServiceDependencies;
                foreach (var kvp in dependencies)
                {
                    var service = kvp.Key;
                    var version = kvp.Value;
                    var dependentService = GenerationManifest.ServiceConfigurations.FirstOrDefault(x => string.Equals(x.Namespace, "Amazon." + service, StringComparison.InvariantCultureIgnoreCase));

                    string previewFlag;
                    if (dependentService != null && dependentService.InPreview)
                    {
                        previewFlag = GenerationManifest.PreviewLabel;
                    }
                    else if (string.Equals(service, "Core", StringComparison.InvariantCultureIgnoreCase) && GenerationManifest.DefaultToPreview)
                    {
                        previewFlag = GenerationManifest.PreviewLabel;
                    }
                    else
                    {
                        previewFlag = string.Empty;
                    }

                    var verTokens = version.Split('.');
                    var versionRange = string.Format("[{0}{3}, {1}.{2}{3})", version, verTokens[0], int.Parse(verTokens[1]) + 1, previewFlag);

                    awsDependencies.Add(string.Format("AWSSDK.{0}", service), string.Format("{0}{1}", version, previewFlag));
                }
            }

            var assemblyVersion = Configuration.ServiceFileVersion;
            var assemblyName = Configuration.Namespace.Replace("Amazon.", "AWSSDK.");
            var assemblyTitle = "AWSSDK - " + Configuration.ServiceModel.ServiceFullName;
            var componentTitle = assemblyTitle;
            bool componentUsesAlternateLicense = !string.IsNullOrEmpty(Configuration.LicenseUrl) && Configuration.LicenseUrl != GenerationManifest.ApacheLicenseURL;
            if (!string.IsNullOrEmpty(Configuration.NugetPackageTitleSuffix))
                componentTitle += " " + Configuration.NugetPackageTitleSuffix;

            if (string.IsNullOrEmpty(Configuration.ServiceModel.Customizations.XamarinSolutionSamplePath))
                throw new Exception("Xamarin component flag enabled but samples are missing");

            var session = new Dictionary<string, object>
            {
                { "AssemblyName", assemblyName },
                { "AssemblyTitle",  assemblyTitle },
                { "ComponentTitle",  componentTitle },
                { "AssemblyDescription", Configuration.AssemblyDescription },
                { "AssemblyVersion", assemblyVersion },
                { "AWSDependencies", awsDependencies },
                { "BaseName", this.Configuration.BaseName },
                { "ProjectFileConfigurations", this.ProjectFileConfigurations},
                { "Documentation",string.IsNullOrEmpty(Configuration.ServiceModel.Documentation)?Configuration.Synopsis:Configuration.ServiceModel.Documentation },
                { "SolutionFilePath", string.IsNullOrEmpty(Configuration.ServiceModel.Customizations.XamarinSolutionSamplePath)?"":Path.Combine(SampleFilesRoot,Configuration.ServiceModel.Customizations.XamarinSolutionSamplePath) },
                { "UsesAlternateLicense", componentUsesAlternateLicense },
                { "Synopsis", Configuration.Synopsis},
                { "ExtraTags", Configuration.Tags.Count == 0 ? string.Empty : " " + string.Join(" ", Configuration.Tags) }
            };

            session["NuGetPreviewFlag"] = Configuration.InPreview ? this.GenerationManifest.PreviewLabel : "";

            var componentGenerator = new Component { Session = session };
            var text = componentGenerator.TransformText();
            var yamlFilename = "component.yaml";
            WriteFile(ComponentsFilesRoot, string.Empty, yamlFilename, text);

            var detailsMarkdownGenerator = new Details { Session = session };
            text = ConvertHtmlToMarkDown(detailsMarkdownGenerator.TransformText());

            // sanitize the line endings from the markup generation, as we can get
            // odd combinations of line endings
            var lines = text.Split(new[] { "\r\n", "\n", "\r" }, StringSplitOptions.None);
            var normalizedText = string.Join(Environment.NewLine, lines);

            var detailsFileName = "Details.md";
            WriteFile(ComponentsFilesRoot, string.Empty, detailsFileName, normalizedText);

            var gettingStartedMarkdownGenerator = new GettingStarted { Session = session };
            text = ConvertHtmlToMarkDown(gettingStartedMarkdownGenerator.TransformText());
            var gettingStartedFileName = "GettingStarted.md";
            WriteFile(ComponentsFilesRoot, string.Empty, gettingStartedFileName, text);
        }