示例#1
0
        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.");
                }
            }
        }