module Cardio::Mod::ClassMethods
class methods for Cardio::Mod
Public Instance Methods
dependencies(name, nickname=true)
click to toggle source
# File lib/cardio/mod/class_methods.rb, line 53 def dependencies name, nickname=true return unless (spec = gem_spec name, nickname) deps = spec&.dependencies || [] dep_names = deps.map { |dep| dependencies dep.name, false } (dep_names << spec).flatten.compact.uniq end
dirs()
click to toggle source
@return an array of Rails::Path objects
# File lib/cardio/mod/class_methods.rb, line 18 def dirs @dirs ||= Mod::Dirs.new Cardio.paths["mod"].existent end
ensure_installed()
click to toggle source
# File lib/cardio/mod/class_methods.rb, line 42 def ensure_installed Card::Auth.as_bot do Card::Cache.reset_all puts "installing card mods".green ensure_asset_lists do |hash| puts "ensuring mod and asset cards" Cardio.mods.each { |mod| ensure_asset_cards mod.ensure_card, hash } end end end
ensure_uninstalled()
click to toggle source
# File lib/cardio/mod/class_methods.rb, line 34 def ensure_uninstalled leftover.each do |mod_card| Card::Auth.as_bot do delete_auto_installed_cards mod_card end end end
fetch(mod_name)
click to toggle source
# File lib/cardio/mod/class_methods.rb, line 22 def fetch mod_name dirs.fetch_mod mod_name end
gem_specs()
click to toggle source
@return [Hash] in the form{ modname(String) => Gem::Specification }
# File lib/cardio/mod/class_methods.rb, line 62 def gem_specs Bundler.definition.specs.each_with_object({}) do |gem_spec, h| h[gem_spec.name] = gem_spec if gem_spec? gem_spec end end
leftover()
click to toggle source
# File lib/cardio/mod/class_methods.rb, line 30 def leftover Card.search(type: :mod).reject { |mod_card| fetch mod_card.modname } end
load()
click to toggle source
# File lib/cardio/mod/class_methods.rb, line 7 def load return if ENV["CARD_MODS"] == "none" if Card.take Loader.load_mods else Rails.logger.warn "empty database" end end
normalize_name(name)
click to toggle source
# File lib/cardio/mod/class_methods.rb, line 26 def normalize_name name name.to_s.sub(/^card-mod-/, "") end
Private Instance Methods
auto_installed_cards(mod_card)
click to toggle source
# File lib/cardio/mod/class_methods.rb, line 95 def auto_installed_cards mod_card [mod_card].tap do |cards| mod_card.each_descendant do |card| cards.unshift card end end end
delete_auto_installed_cards(mod_card)
click to toggle source
it would be nice if this were easier…
# File lib/cardio/mod/class_methods.rb, line 88 def delete_auto_installed_cards mod_card auto_installed_cards(mod_card).each do |card| card.codename = nil card.delete! end end
ensure_asset_cards(modcard, hash)
click to toggle source
# File lib/cardio/mod/class_methods.rb, line 70 def ensure_asset_cards modcard, hash %i[script style].each do |asset_type| hash[asset_type] << modcard.ensure_mod_asset_card(asset_type) end end
ensure_asset_lists() { |hash| ... }
click to toggle source
# File lib/cardio/mod/class_methods.rb, line 76 def ensure_asset_lists hash = { script: [], style: [] } yield hash # puts "updating asset lists" Card[:all, :script].update! content: hash[:script].compact Card::Auth.as_bot # FIXME: should not be necessary Card[:style_mods].update! content: hash[:style].compact # puts "refreshing assets" Card::Assets.refresh force: true end
gem_spec(name, nickname=true)
click to toggle source
# File lib/cardio/mod/class_methods.rb, line 103 def gem_spec name, nickname=true name = "card-mod-#{name}" if nickname && !name.match?(/^card-mod/) spec = Gem::Specification.stubs_for(name)&.first gem_spec?(spec) ? spec : nil end
gem_spec?(spec)
click to toggle source
@return [True/False]
# File lib/cardio/mod/class_methods.rb, line 110 def gem_spec? spec return unless spec spec.name.match?(/^card-mod-/) || spec.metadata["card-mod"].present? end