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)

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

  # Store all components in site for sharing with ImgFlow tag
  return if @site.imgflow_components

  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
  }
end

Instance Method Details

#process_changed_imagesObject

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
65
66
67
68
69
70
71
72
73
# File 'lib/jekyll-imgflow/build_time_processor.rb', line 38

def process_changed_images
  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"

  # Build tasks for each original image
  original_paths.each do |path|
    original_name = File.basename(path)

    # Check if needs processing (file changed or provider changed)
    if needs_processing?(path)
      Jekyll.logger.info "🔧 Queuing default versions for: #{original_name}"

      # Build default tasks
      tasks = BatchManager.build_default_tasks(original_name, path, @config, @site)
      @batch_manager.add_tasks(tasks)
    else
      Jekyll.logger.debug "⏭️  Skipping #{original_name} - already up-to-date"
    end
  end

  # Process all queued tasks
  results = @batch_manager.process_all

  # Register completed tasks in manifest
  register_completed_tasks(@batch_manager.completed)

  # Save manifest so it's available when ImgflowTag runs
  @manifest.save

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

  results
end