Sha256: dee87eccb598105d5acab67a03863b41008948f098efde916ea021b3bfa80f85
Contents?: true
Size: 1.64 KB
Versions: 2
Compression:
Stored size: 1.64 KB
Contents
# frozen_string_literal: true require "active_support" require "pathname" require "rake/tasklib" module RbsDiscard class RakeTask < Rake::TaskLib attr_accessor :name, :signature_root_dir def initialize(name = :"rbs:discard", &block) super() @name = name @signature_root_dir = Rails.root / "sig/discard" block&.call(self) define_clean_task define_generate_base_class_task define_generate_task define_setup_task end def define_setup_task desc "Run all tasks of rbs_discard" deps = [:"#{name}:clean", :"#{name}:base_class:generate", :"#{name}:generate"] task("#{name}:setup" => deps) end def define_generate_base_class_task desc "Generate RBS files for base classes" task "#{name}:base_class:generate": :environment do signature_root_dir.mkpath basedir = Pathname(__FILE__).dirname FileUtils.cp basedir / "sig/discard.rbs", signature_root_dir end end def define_generate_task desc "Generate RBS files for discardable models" task "#{name}:generate" do require "rbs_discard" # load RbsDraper lazily Rails.application.eager_load! RbsDiscard::Discard.all.each do |klass| rbs = RbsDiscard::Discard.class_to_rbs(klass) path = signature_root_dir / "app/models/#{klass.name.to_s.underscore}.rbs" path.dirname.mkpath path.write(rbs) end end end def define_clean_task desc "Clean RBS files for discardable models" task "#{name}:clean" do signature_root_dir.rmtree if signature_root_dir.exist? end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rbs_discard-1.0.1 | lib/rbs_discard/rake_task.rb |
rbs_discard-1.0.0 | lib/rbs_discard/rake_task.rb |