Sha256: 9413a869e530e0732d33af78b123f3f3af15393f821216b08ca0537811e88d1a

Contents?: true

Size: 1.18 KB

Versions: 3

Compression:

Stored size: 1.18 KB

Contents

class RemoveCustomizedBootswatchSkins < Cardio::Migration::Transform
  def up
    Card.ensure! codename: "parent", name: "parent"
    return unless Card::Codename[:customized_bootswatch_skin]

    convert_bootswatch_skins
    delete_code_card :customized_bootswatch_skin
  end

  def convert_bootswatch_skins
    Card.search(type: :customized_bootswatch_skin) do |card|
      update_args = { type_id: Card::BootswatchSkinID, skip: :asset_input_changed }
      parent = find_parent(card.name)
      if parent && parent.id != card.id
        update_args[:subcards] = { "+#{:parent.cardname}}" => { content: parent.name } }
      end
      fix_stylesheets_field card
      card.field(:variables)&.update content: ""
      card.update! update_args
    end
    Card::Cache.reset_all
  end

  def fix_stylesheets_field skin
    fld = skin.field :stylesheets
    return unless fld.real? && fld.try(:item_names).present?
    fld.content = fld.item_names.select do |i|
      fld.try(:ok_item_types)&.include? i.card&.type_code
    end
    fld.save!
  end

  def find_parent card_name
    potential_parent_name = card_name.downcase.sub("customized", "").gsub(/\d/, "").strip
    Card[potential_parent_name]
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
card-mod-bootstrap-0.18.1 data/transform/20220514141025_remove_customized_bootswatch_skins.rb
card-mod-bootstrap-0.18.0 data/transform/20220514141025_remove_customized_bootswatch_skins.rb
card-mod-bootstrap-0.17.0 data/transform/20220514141025_remove_customized_bootswatch_skins.rb