Class: Solrengine::Generators::ProgramGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- Solrengine::Generators::ProgramGenerator
- Defined in:
- lib/generators/solrengine/program/program_generator.rb
Instance Method Summary collapse
- #copy_idl ⇒ Object
- #create_account_models ⇒ Object
- #create_instruction_builders ⇒ Object
- #create_stimulus_controller ⇒ Object
- #parse_idl ⇒ Object
- #show_summary ⇒ Object
Instance Method Details
#copy_idl ⇒ Object
20 21 22 23 24 25 26 27 |
# File 'lib/generators/solrengine/program/program_generator.rb', line 20 def copy_idl destination = "config/idl/#{program_snake}.json" if File.exist?(File.join(destination_root, destination)) say_skipped(destination) else copy_file idl_path, destination end end |
#create_account_models ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/generators/solrengine/program/program_generator.rb', line 29 def create_account_models @idl.accounts.each do |account| destination = "app/models/#{program_snake}/#{account.name.underscore}.rb" if File.exist?(File.join(destination_root, destination)) say_skipped(destination) else @account = account @program_id = @idl.program_id template "account.rb.erb", destination end end end |
#create_instruction_builders ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/generators/solrengine/program/program_generator.rb', line 42 def create_instruction_builders @idl.instructions.each do |instruction| destination = "app/services/#{program_snake}/#{instruction.name}_instruction.rb" if File.exist?(File.join(destination_root, destination)) say_skipped(destination) else @instruction = instruction @program_id = @idl.program_id template "instruction.rb.erb", destination end end end |
#create_stimulus_controller ⇒ Object
55 56 57 58 59 60 61 62 63 |
# File 'lib/generators/solrengine/program/program_generator.rb', line 55 def create_stimulus_controller destination = "app/javascript/controllers/#{program_snake}_controller.js" if File.exist?(File.join(destination_root, destination)) say_skipped(destination) else @idl_instance = @idl template "stimulus_controller.js.erb", destination end end |
#parse_idl ⇒ Object
11 12 13 14 15 16 17 18 |
# File 'lib/generators/solrengine/program/program_generator.rb', line 11 def parse_idl unless File.exist?(idl_path) raise Thor::Error, "IDL file not found: #{idl_path}" end @idl = Solrengine::Programs::IdlParser.parse_file(idl_path) say "Parsed IDL: #{@idl.name} (#{@idl.instructions.size} instructions, #{@idl.accounts.size} accounts)" end |
#show_summary ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/generators/solrengine/program/program_generator.rb', line 65 def show_summary say "" say "Program '#{program_class}' generated successfully!", :green say "" say "Generated files:" say " config/idl/#{program_snake}.json" @idl.accounts.each do |acct| say " app/models/#{program_snake}/#{acct.name.underscore}.rb" end @idl.instructions.each do |ix| say " app/services/#{program_snake}/#{ix.name}_instruction.rb" end say " app/javascript/controllers/#{program_snake}_controller.js" say "" say "Next steps:" say " 1. Add custom query methods to your account models" say " 2. Register the Stimulus controller in your index.js" say " 3. Create Rails controller endpoints for instruction building" end |