class Object

Public Instance Methods

add_asset(asset_type) click to toggle source
# File set/type/mod.rb, line 24
def add_asset asset_type
  all_rule(asset_type).add_item! codename_for(asset_type).to_sym
end
all_rule(asset_type) click to toggle source
# File set/type/mod.rb, line 38
def all_rule asset_type
  Card[:all, asset_type]
end
assets_dir_exists?() click to toggle source
# File set/abstract/mod_assets.rb, line 63
def assets_dir_exists?
  path = assets_path
  path && Dir.exist?(path)
end
assets_path() click to toggle source
# File set/abstract/mod_assets.rb, line 11
def assets_path
  return unless mod&.assets_path.present?

  File.join mod&.assets_path, subpath
end
base_path() click to toggle source
# File set/abstract/local_folder_group.rb, line 17
def base_path
  left&.assets_path
end
codename_for(asset_type) click to toggle source
# File set/type/mod.rb, line 34
def codename_for asset_type
  "#{codename}_#{asset_type}"
end
compress?() click to toggle source
# File set/abstract/asset_file.rb, line 36
def compress?
  @minimize
end
content() click to toggle source
# File set/type/remote_manifest_group.rb, line 22
def content
  paths.join "\n"
end
delete_unused_items() { || ... } click to toggle source
# File set/abstract/mod_assets.rb, line 57
def delete_unused_items
  @old_items = ::Set.new item_keys
  yield
  remove_deprecated_items @old_items
end
drop_asset(asset_type, asset_card) click to toggle source
# File set/type/mod.rb, line 28
def drop_asset asset_type, asset_card
  asset_card.update codename: nil
  asset_card.delete update_referers: true
  all_rule(asset_type).drop_item! asset_card
end
ensure_item(field, type_id) click to toggle source
# File set/abstract/mod_assets.rb, line 100
def ensure_item field, type_id
  item_name = "#{name}+#{field}"
  ensure_item_content item_name

  card = Card[item_name]
  args = ensure_item_args field, type_id, item_name
  return if item_already_coded? card, args

  ensure_item_save card, args
  card.try :update_machine_output
end
ensure_item_args(field, type_id, name) click to toggle source
# File set/abstract/mod_assets.rb, line 129
def ensure_item_args field, type_id, name
  {
    type_id: type_id,
    codename: "#{mod_name}_group__#{field}",
    name: name
  }
end
ensure_item_content(item_name) click to toggle source
# File set/abstract/mod_assets.rb, line 116
def ensure_item_content item_name
  @old_items.delete item_name.to_name.key
  add_item item_name
end
ensure_item_save(card, args) click to toggle source
# File set/abstract/mod_assets.rb, line 121
def ensure_item_save card, args
  if card
    card.update args
  else
    Card.create! args
  end
end
ensure_manifest_groups_cards() click to toggle source
# File set/abstract/mod_assets.rb, line 90
def ensure_manifest_groups_cards
  with_manifest_groups { |group_name, config| new_manifest_group group_name, config }
end
ensure_mod_asset_card(asset_type, type_id) click to toggle source
# File set/type/mod.rb, line 11
def ensure_mod_asset_card asset_type, type_id
  asset_card = fetch_mod_assets_card asset_type, type_id
  return if asset_card.no_action?
  asset_card.save! if asset_card.new?

  asset_card.update_items
  if asset_card.item_cards.present?
    add_asset asset_type
  else
    drop_asset asset_type, asset_card
  end
end
ensure_mod_script_card() click to toggle source
# File set/type/mod.rb, line 1
def ensure_mod_script_card
  ensure_mod_asset_card :script, Card::ModScriptAssetsID
end
ensure_mod_style_card() click to toggle source
# File set/type/mod.rb, line 5
def ensure_mod_style_card
  ensure_mod_asset_card :style, Card::ModStyleAssetsID
end
ensure_update_items() click to toggle source
# File set/abstract/mod_assets.rb, line 49
def ensure_update_items
  if manifest_exists?
    ensure_manifest_groups_cards
  else
    ensure_item local_group_name, local_folder_group_type_id
  end
end
expected_item_keys() click to toggle source
# File set/abstract/mod_assets.rb, line 23
def expected_item_keys
  return [] unless assets_dir_exists?

  if manifest_exists?
    manifest.keys.map { |group_key| "#{name}+#{group_key}".to_name.key }
  else
    ["#{name}+#{local_group_name}".to_name.key]
  end
end
fetch_item_card(name, _args={}) click to toggle source
# File set/abstract/asset_list.rb, line 36
def fetch_item_card name, _args={}
  new_asset_file_card item_name_to_path(name)
end
fetch_mod_assets_card(asset_type, type_id) click to toggle source
# File set/type/mod.rb, line 42
def fetch_mod_assets_card asset_type, type_id
  codename = codename_for asset_type
  if Card::Codename.exists? codename
    Card[codename.to_sym]
  else
    Card.fetch [name, asset_type], new: {
      type_id: type_id,
      codename: codename
    }
  end
end
find_file(path) click to toggle source
# File set/abstract/asset_file.rb, line 15
def find_file path
  path.tap do |file_path|
    return nil if unknown_file? file_path
  end
end
group_name() click to toggle source
# File set/abstract/01_manifest_group.rb, line 1
def group_name
  codename.to_s.sub(/^.+__/, "")
end
item_already_coded?(card, args) click to toggle source
# File set/abstract/mod_assets.rb, line 112
def item_already_coded? card, args
  card&.type_id == args[:type_id] && card.codename == args[:codename]
end
item_name_to_path(name) click to toggle source
# File set/abstract/asset_list.rb, line 32
def item_name_to_path name
  name
end
item_names(_content=nil) click to toggle source
# File set/type/remote_manifest_group.rb, line 18
def item_names _content=nil
  paths
end
local() click to toggle source
# File set/abstract/asset_file.rb, line 44
def local
  @local = true
end
local?() click to toggle source
# File set/type/remote_manifest_group.rb, line 4
def local?
  @local = false
end
local_group_name() click to toggle source
# File set/abstract/mod_assets.rb, line 33
def local_group_name
  "local"
end
make_machine_output_coded(verbose=false) click to toggle source
# File set/abstract/mod_assets.rb, line 144
def make_machine_output_coded verbose=false
  item_cards.each do |item_card|
    puts "coding machine output for #{item_card.name}" if verbose
    item_card.try(:make_machine_output_coded, mod_name)
  end
end
manifest() click to toggle source
# File set/abstract/mod_assets.rb, line 80
def manifest
  @manifest ||= YAML.load_file manifest_path
end
manifest_exists?() click to toggle source
# File set/abstract/mod_assets.rb, line 68
def manifest_exists?
  manifest_path && File.exist?(manifest_path)
end
manifest_group_items(group_name) click to toggle source
# File set/abstract/mod_assets.rb, line 72
def manifest_group_items group_name
  manifest.dig(group_name, "items") || []
end
manifest_group_minimize?(group_name) click to toggle source
# File set/abstract/mod_assets.rb, line 76
def manifest_group_minimize? group_name
  manifest.dig group_name, "minimize"
end
manifest_path() click to toggle source
# File set/abstract/mod_assets.rb, line 17
def manifest_path
  return unless assets_path

  File.join(assets_path, "manifest.yml")
end
minimize() click to toggle source
# File set/abstract/asset_file.rb, line 40
def minimize
  @minimze = true
end
minimize?() click to toggle source
# File set/abstract/local_folder_group.rb, line 21
def minimize?
  @minimize = true
end
mod() click to toggle source
# File set/abstract/mod_assets.rb, line 7
def mod
  @mod ||= Cardio::Mod.dirs.fetch_mod(mod_name)
end
mod_name() click to toggle source
# File set/abstract/mod_assets.rb, line 3
def mod_name
  left&.codename.to_s.sub(/^mod_/, "")
end
new?() click to toggle source
# File set/abstract/asset_file.rb, line 32
def new?
  false
end
new_asset_file_card(path, name=::File.basename(path)) click to toggle source
# File set/abstract/asset_list.rb, line 40
def new_asset_file_card path, name=::File.basename(path)
  return unless (constants = new_asset_constants path)
  asset_card = Card.new(name: name, type_id: constants[:type_id], content: path)
  asset_card.include_set_module constants[:set_module]
  asset_card.minimize if @minimize
  asset_card.local if @local
  asset_card.base_path = base_path
  asset_card
end
new_manifest_group(group_name, config) click to toggle source
# File set/abstract/mod_assets.rb, line 94
def new_manifest_group group_name, config
  type_id =
    config["remote"] ? ::Card::RemoteManifestGroupID : local_manifest_group_type_id
  ensure_item group_name, type_id
end
no_action?() click to toggle source
# File set/abstract/mod_assets.rb, line 151
def no_action?
  new? && !assets_dir_exists?
end
paths() click to toggle source
# File set/abstract/local_folder_group.rb, line 1
def paths
  return [] unless (path = left&.assets_path)

  relative_paths.map { |child| ::File.join path, child }
end
refresh_output(force: false) click to toggle source
# File set/abstract/asset_list.rb, line 5
def refresh_output force: false
  update_items! if refresh_output? || force
end
refresh_output?() click to toggle source
# File set/abstract/asset_list.rb, line 9
def refresh_output?
  !output_updated_at || source_changed?(since: output_updated_at)
end
relative_paths() click to toggle source
# File set/abstract/01_manifest_group.rb, line 5
def relative_paths
  paths
end
remove_deprecated_items(items) click to toggle source

def groups_changed?

expected_items = expected_item_keys
actual_items = item_keys
difference = (expected_items + actual_items) - (expected_items & actual_items)
difference.present?

end

# File set/abstract/mod_assets.rb, line 164
def remove_deprecated_items items
  items.each do |deprecated_item|
    next unless (item_card = Card.fetch(deprecated_item))
    item_card.update codename: nil
    item_card.delete
  end
end
render_items_and_compress(format) click to toggle source
# File set/abstract/asset_list.rb, line 17
def render_items_and_compress format
  item_cards.map do |mcard|
    js = mcard.format(format)._render_core
    js = mcard.compress js if minimize?
    "// #{mcard.name}\n#{js}"
  end.join "\n"
end
self_machine_input?() click to toggle source
# File set/abstract/asset_list.rb, line 54
def self_machine_input?
  true
end
short_content() click to toggle source
# File set/abstract/asset_file.rb, line 67
def short_content
  fa_icon("exclamation-circle", class: "text-muted pr-2") +
    wrap_with(:span, "asset file", class: "text-muted")
end
source_changed?(since: difference = (relative_paths + item_names) - (relative_paths & item_names)) click to toggle source
# File set/abstract/asset_list.rb, line 62
def source_changed? since:
  difference = (relative_paths + item_names) - (relative_paths & item_names)
  difference.present? ||
    existing_source_paths.any? { |path| ::File.mtime(path) > since }
end
source_files() click to toggle source
# File set/abstract/asset_file.rb, line 11
def source_files
  [db_content]
end
source_paths() click to toggle source
# File set/abstract/asset_file.rb, line 5
def source_paths
  source_files.map do |file|
    ::File.join base_path, file
  end
end
unknown_file?(file_path) click to toggle source
# File set/abstract/asset_file.rb, line 21
def unknown_file? file_path
  return false if ::File.exist? file_path

  Rails.logger.info "couldn't locate #{file_path}"
  true
end
update_items() click to toggle source
# File set/abstract/mod_assets.rb, line 37
def update_items
  # return unless groups_changed?

  delete_unused_items do
    self.content = ""
    return unless assets_dir_exists?

    ensure_update_items
    save!
  end
end
update_items!() click to toggle source
# File set/abstract/asset_list.rb, line 25
def update_items!
  Card::Auth.as_bot do
    save!
  end
  regenerate_machine_output
end
virtual?() click to toggle source
# File set/abstract/asset_file.rb, line 28
def virtual?
  true
end
with_manifest_groups() { |key, config| ... } click to toggle source
# File set/abstract/mod_assets.rb, line 84
def with_manifest_groups
  manifest.each_pair do |key, config|
    yield key, config
  end
end