示例#1
0
        public async Task <StepActionResult> Publish(Guid id, SyncPublisherAction action, ActionArguments args)
        {
            if (args?.Options == null)
            {
                throw new ArgumentNullException(nameof(args));
            }

            if (id == Guid.Empty)
            {
                id = Guid.NewGuid();
            }

            var dependencies = outgoingService.GetItemDependencies(args.Options.Items, args.Callbacks);

            MoveToNextStep(action, args);

            // generate the razor for all the pages
            GenerateHtml(dependencies, id, args);
            MoveToNextStep(action, args);

            // grab all the media that is referenced in all the pages
            GatherMedia(dependencies, id, args);
            MoveToNextStep(action, args);

            // get the system files (css/scripts/etc)
            GatherFiles(dependencies, id, args);
            MoveToNextStep(action, args);


            // put this somewhere
            Publish(id, args);

            return(await Task.FromResult(new StepActionResult(true, id, args.Options, Enumerable.Empty <uSyncAction>())));
        }
        public override object BeginPublish(Guid id, string syncRoot, SyncPublisherAction action, ActionArguments args, IPublisherSearchConfig config)
        {
            var baseUri  = HttpContext.Current.Request.Url;
            var basePath = Path.GetFullPath(Path.Combine(syncRoot, id.ToString()));

            return(new Context(baseUri, basePath));
        }
示例#3
0
        public override object BeginPublish(Guid id, string syncRoot, SyncPublisherAction action, ActionArguments args, IPublisherSearchConfig searchConfig)
        {
            var config = new ExtensionContext
            {
                Config        = searchConfig,
                DeployedItems = args.Options.Items.ToList(),
                Id            = id,
                SyncRoot      = syncRoot
            };

            return(config);
        }
        public Task <StepActionResult> Publish(
            Guid id,
            SyncPublisherAction action,
            ActionArguments args)
        {
            if (args?.Options == null)
            {
                throw new ArgumentNullException(nameof(args));
            }

            try
            {
                if (id == Guid.Empty)
                {
                    id = Guid.NewGuid();
                }

                var config = _publisherSearchConfigs.ConfigsByServerName.TryGetValue(args.Target, out var sc) ? sc : null;
                _staticSitePublisherExtensions.Keys.ToList().ForEach(e => _staticSitePublisherExtensions[e] = e.BeginPublish(id, _syncRoot, action, args, config));
                var itemDependencies = _outgoingService.GetItemDependencies(args.Options.Items, args.Callbacks)?.ToList() ?? new List <uSyncDependency>();
                var itemPaths        = new Dictionary <string, string>(itemDependencies.Count)
                {
                    [new GuidUdi(Umbraco.Core.Constants.UdiEntityType.Document, Guid.Empty).ToString()] = "/"
                };
                RunExtension((e, s) => e.AddCustomDependencies(s, itemDependencies));

                MoveToNextStep(action, args);
                GenerateHtml(itemDependencies, id, args, itemPaths);
                MoveToNextStep(action, args);
                GatherMedia(itemDependencies, id, args);
                MoveToNextStep(action, args);
                GatherFiles(id, args);
                RunExtension((e, s) => e.BeforeFinalPublish(s));
                MoveToNextStep(action, args);
                Publish(id, args, config, itemPaths);
                RunExtension((e, s) => e.EndPublish(s));

                var result = new StepActionResult(true, id, args.Options, Enumerable.Empty <uSyncAction>());
                return(Task.FromResult(result));
            }
            catch (Exception ex)
            {
                logger.Error <ExtensibleStaticPublisher>(ex, $"Could not publish");
                throw;
            }
        }
示例#5
0
 public virtual object BeginPublish(Guid id, string syncRoot, SyncPublisherAction action, ActionArguments args, IPublisherSearchConfig config) => null;