Class: JekyllImgFlow::PictureTagPresetMigrator

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

Overview

Migrates Jekyll Picture Tag presets to ImgFlow YAML preset format

Constant Summary collapse

PICTURE_TAG_CONFIG =
"_data/picture.yml"
IMGFLOW_PRESETS_DIR =
"_data/imgflow/presets"

Instance Method Summary collapse

Constructor Details

#initialize(site_source) ⇒ PictureTagPresetMigrator

Returns a new instance of PictureTagPresetMigrator.



12
13
14
15
16
# File 'lib/jekyll-imgflow/picture_tag_preset_migrator.rb', line 12

def initialize(site_source)
  @site_source = site_source
  @picture_config_path = File.join(site_source, PICTURE_TAG_CONFIG)
  @imgflow_presets_dir = File.join(site_source, IMGFLOW_PRESETS_DIR)
end

Instance Method Details

#migrate_presetsHash

Migrate all Picture Tag presets to ImgFlow format

Returns:

  • (Hash)

    Migration results



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/jekyll-imgflow/picture_tag_preset_migrator.rb', line 20

def migrate_presets
  results = {
    migrated: [],
    skipped: [],
    errors: []
  }

  return results unless File.exist?(@picture_config_path)

  picture_config = load_picture_config
  return results unless picture_config["presets"]

  # Ensure ImgFlow presets directory exists
  FileUtils.mkdir_p(@imgflow_presets_dir)

  picture_config["presets"].each do |preset_name, preset_data|
    imgflow_preset = convert_preset_to_imgflow(preset_name, preset_data)

    if imgflow_preset
      save_imgflow_preset(preset_name, imgflow_preset)
      results[:migrated] << preset_name
    else
      results[:skipped] << { name: preset_name, reason: "No convertible operations" }
    end
  rescue StandardError => e
    results[:errors] << { name: preset_name, error: e.message }
  end

  results
end

#preview_migrationHash

Get migration summary without actually migrating

Returns:

  • (Hash)

    Preview of what would be migrated



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/jekyll-imgflow/picture_tag_preset_migrator.rb', line 53

def preview_migration
  results = {
    found: [],
    convertible: [],
    non_convertible: []
  }

  return results unless File.exist?(@picture_config_path)

  picture_config = load_picture_config
  return results unless picture_config["presets"]

  picture_config["presets"].each do |preset_name, preset_data|
    results[:found] << preset_name

    if convertible_operations?(preset_data)
      imgflow_preset = convert_preset_to_imgflow(preset_name, preset_data)
      results[:convertible] << { name: preset_name, preview: imgflow_preset }
    else
      results[:non_convertible] << { name: preset_name,
                                     reason: "No convertible operations" }
    end
  end

  results
end