Class: JekyllImgFlow::BuildTimeProcessor

Inherits:
Object
  • Object
show all
Defined in:
lib/jekyll-imgflow/build_time_processor.rb

Overview

BuildTimeProcessor - processes images during Jekyll build Generates default image versions for all originals

Instance Method Summary collapse

Constructor Details

#initialize(site) ⇒ BuildTimeProcessor

Returns a new instance of BuildTimeProcessor.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/jekyll-imgflow/build_time_processor.rb', line 7

def initialize(site)
  @site = site
  @config = Config.new(site)
  @manifest = ManifestManager.new(site)
  @path_resolver = PathResolver.new(@config)
  @registry = ProviderRegistry.new(@config)

  # Initialize operation processor with current provider
  provider = @registry.current_provider
  @operation_processor = OperationProcessor.new(provider, @path_resolver, @manifest, @config) if provider

  # Initialize batch manager
  @batch_manager = BatchManager.new(@operation_processor)

  # Store all components in site for sharing with ImgFlow tag
  @filename_generator = JekyllImgFlow::FilenameGenerator.new

  @site.imgflow_components = {
    config: @config,
    manifest: @manifest,
    path_resolver: @path_resolver,
    filename_generator: @filename_generator,
    registry: @registry,
    provider: provider,
    operation_processor: @operation_processor,
    stats: @operation_processor&.stats,
    preset_manager: JekyllImgFlow::PresetManager.new(@site, @config)
  }
end

Instance Method Details

#process_changed_images ⇒ Object

Process all changed images in originals folder



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/jekyll-imgflow/build_time_processor.rb', line 38

def process_changed_images
  return { completed: 0, failed: 0 } unless @operation_processor

  Jekyll.logger.info "🔄 BuildTimeProcessor: Processing changed images"

  # Get all original images
  original_paths = find_original_images
  Jekyll.logger.info "📸 Found #{original_paths.length} original images"

  # Clean up manifest entries for deleted originals
  prepare_manifest(original_paths)

  # Build tasks for each original image
  queue_default_tasks(original_paths)

  # Process all queued tasks
  results = @batch_manager.process_all
  register_skipped_tasks(@batch_manager.completed)

  # Persist newly processed defaults; unchanged builds keep page-usage resets in memory
  # until post_write saves the final stable manifest.
  @manifest.save unless results[:completed].zero? && results[:failed].zero?

  Jekyll.logger.info "✅ BuildTimeProcessor complete: #{results[:completed]} completed, #{results[:failed]} failed"

  results
end