public GeneratorDriver(ServiceConfiguration config, GenerationManifest generationManifest, GeneratorOptions options)
{
FilesWrittenToGeneratorFolder = new HashSet<string>();
GenerationManifest = generationManifest;
Configuration = config;
ProjectFileConfigurations = GenerationManifest.ProjectFileConfigurations;
Options = options;
// Base name in the manifest is not a reliable source of info, as if append-service
// is set 'Service' gets appended and in the case of IAM then sends us to the wrong folder.
// Instead we'll use the namespace and rip off any Amazon. prefix. This also helps us
// handle versioned namespaces too.
var serviceNameRoot = Configuration.Namespace.StartsWith("Amazon.", StringComparison.Ordinal)
? Configuration.Namespace.Substring(7)
: Configuration.Namespace;
ServiceFilesRoot = Path.Combine(Options.SdkRootFolder, SourceSubFoldername, ServicesSubFoldername, config.ServiceFolderName);
GeneratedFilesRoot = Path.Combine(ServiceFilesRoot, GeneratedCodeFoldername);
CodeAnalysisRoot = Path.Combine(Options.SdkRootFolder, CodeAnalysisFoldername, "ServiceAnalysis", serviceNameRoot);
TestFilesRoot = Path.Combine(Options.SdkRootFolder, TestsSubFoldername);
ComponentsFilesRoot = Path.Combine(Options.SdkRootFolder, XamarinComponentsSubFolderName, config.ServiceFolderName);
SampleFilesRoot = options.SamplesRootFolder;
}