protected override void ProcessRecord() { var touchedConfigs = new List <IConfiguration>(); IItemData itemData = new ItemData(Item); var configuration = _helper.GetConfigurationsForItem(itemData).FirstOrDefault(); // if multiple configs contain item, load from first one if (configuration == null) { throw new InvalidOperationException($"{itemData.GetDisplayIdentifier()} was not part of any Unicorn configurations."); } touchedConfigs.Add(configuration); var logger = new WebConsoleLogger(new PowershellProgressStatus(Host, "Partial Sync Unicorn"), LogLevel); var helper = configuration.Resolve <SerializationHelper>(); var targetDataStore = configuration.Resolve <ITargetDataStore>(); itemData = targetDataStore.GetByPathAndId(itemData.Path, itemData.Id, itemData.DatabaseName); if (itemData == null) { throw new InvalidOperationException($"Could not do partial sync of {Item.Database.Name}:{Item.Paths.FullPath} because it was not serialized. You may need to perform initial serialization."); } try { logger.Info( $"Processing partial Unicorn configuration {itemData.GetDisplayIdentifier()} (Config: {configuration.Name})"); using (new LoggingContext(logger, configuration)) { if (Recurse.IsPresent) { helper.SyncTree(configuration, partialSyncRoot: itemData); } else { var sourceStore = configuration.Resolve <ISourceDataStore>(); var result = configuration.Resolve <IPredicate>().Includes(itemData); sourceStore.Save(itemData, result.FieldValueManipulator); } } } catch (Exception ex) { logger.Error(ex); throw; } CorePipeline.Run("unicornSyncEnd", new UnicornSyncEndPipelineArgs(new SitecoreLogger(), true, touchedConfigs.ToArray())); }
protected override void ProcessRecord() { IItemData itemData = new ItemData(Item); if (Recurse.IsPresent) { if (!_helper.ReserializeTree(itemData)) { throw new InvalidOperationException($"{itemData.GetDisplayIdentifier()} was not part of any Unicorn configuration."); } } else { if (!_helper.ReserializeItem(itemData)) { throw new InvalidOperationException($"{itemData.GetDisplayIdentifier()} was not part of any Unicorn configuration."); } } }