public RainbowSerializationProvider(string name) : base(name) { _name = name; var config = (RainbowConfigSection)ConfigurationManager.GetSection("rainbow"); var rainbowConfigFactory = new RainbowConfigFactory(config); _formatter = rainbowConfigFactory.CreateFormatter() as YamlSerializationFormatter; }
protected override void BeginProcessing() { try { var currentDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", Path.Combine(currentDirectory, "Sitecore.Courier.dll.config")); ResetConfigMechanism(); Console.WriteLine("Items: {0}", Items); Console.WriteLine("Output: {0}", Output); RainbowSerializationProvider.Enabled = true; RainbowSerializationProvider.IncludeFiles = false; DiffGenerator.IncludeSecurity = true; var result = new StringBuilder(); var sqlGenerator = new RainbowSecuritySqlGenerator(); var config = (RainbowConfigSection)ConfigurationManager.GetSection("rainbow"); var rainbowConfigFactory = new RainbowConfigFactory(config); var formatter = rainbowConfigFactory.CreateFormatter() as YamlSerializationFormatter; var iterator = new RainbowIterator(Items, formatter); var rolesTemp = Path.GetTempPath() + Guid.NewGuid(); var usersTemp = Path.GetTempPath() + Guid.NewGuid(); Directory.CreateDirectory(rolesTemp); Directory.CreateDirectory(usersTemp); var item = iterator.Next(); while (item != null) { if (item is UserFileSystemDataItem) { File.Copy(item.ItemPath, Path.Combine(usersTemp, Path.GetFileName(item.ItemPath))); } if (item is RoleFileSystemDataItem) { File.Copy(item.ItemPath, Path.Combine(rolesTemp, Path.GetFileName(item.ItemPath))); } item = iterator.Next(); } var roleStore = new FilesystemRoleDataStore(rolesTemp, new YamlRoleSerializationFormatter()); var roles = roleStore.GetAll(); foreach (var role in roles) { Console.WriteLine("Generating SQL for role: " + role.RoleName); var clause = sqlGenerator.GenerateAddRoleStatements(role); result.Append(clause); } var userStore = new FilesystemUserDataStore(usersTemp, new YamlUserSerializationFormatter()); var users = userStore.GetAll(); foreach (var user in users) { Console.WriteLine("Generating SQL for user: "******"Dumping generated SQL script to: " + sqlScriptTemp); File.WriteAllText(sqlScriptTemp, result.ToString()); var builder = new DacPacBuilder(); builder.ConvertToDacPac(sqlScriptTemp, Output); } catch (Exception ex) { Console.WriteLine(ex.ToString()); throw ex; } }