Class: Tramway::Generators::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- Tramway::Generators::InstallGenerator
- Includes:
- InstallGeneratorHelpers
- Defined in:
- lib/generators/tramway/install/install_generator.rb
Overview
Running ‘rails generate tramway:install` will invoke this generator
Instance Method Summary collapse
- #ensure_agents_file ⇒ Object
- #ensure_dependencies ⇒ Object
- #ensure_importmap_pin ⇒ Object
- #ensure_stimulus_controller_registration ⇒ Object
- #ensure_tailwind_application_stylesheet ⇒ Object
- #ensure_tailwind_safelist ⇒ Object
Instance Method Details
#ensure_agents_file ⇒ Object
245 246 247 248 249 250 251 252 253 254 255 256 257 |
# File 'lib/generators/tramway/install/install_generator.rb', line 245 def ensure_agents_file with_agents_update_fallback do return create_file(agents_file_path, "#{codex_agents_instruction}\n") unless File.exist?(agents_file_path) content = File.read(agents_file_path) return if content.include?(codex_agents_instruction) updated = append_codex_agents_instruction(content) return if updated == content File.write(agents_file_path, updated, mode: 'w:UTF-8') end end |
#ensure_dependencies ⇒ Object
259 260 261 262 263 264 265 266 267 268 269 270 271 272 |
# File 'lib/generators/tramway/install/install_generator.rb', line 259 def ensure_dependencies missing_dependencies = gem_dependencies.reject do |dependency| gemfile_contains?(dependency[:name]) end return if missing_dependencies.empty? append_to_file 'Gemfile', <<~GEMS # Tramway dependencies #{missing_dependencies.pluck(:declaration).join("\n")} GEMS end |
#ensure_importmap_pin ⇒ Object
302 303 304 305 306 307 308 309 310 311 312 313 314 |
# File 'lib/generators/tramway/install/install_generator.rb', line 302 def ensure_importmap_pin return unless File.exist?(importmap_path) content = remove_legacy_importmap_pins(File.read(importmap_path)) missing_pins = importmap_tramway_pins.reject { |pin| content.include?(pin) } File.write(importmap_path, content) if content != File.read(importmap_path) return if missing_pins.empty? File.open(importmap_path, 'a') do |file| file.write("\n") unless content.empty? || content.end_with?("\n") file.write("#{missing_pins.join("\n")}\n") end end |
#ensure_stimulus_controller_registration ⇒ Object
316 317 318 319 320 321 322 323 324 325 |
# File 'lib/generators/tramway/install/install_generator.rb', line 316 def ensure_stimulus_controller_registration return unless File.exist?(controllers_index_path) content = File.read(controllers_index_path) updated = append_missing_imports(content) updated = append_missing_registrations(updated) return if updated == content File.write(controllers_index_path, updated) end |
#ensure_tailwind_application_stylesheet ⇒ Object
287 288 289 290 291 292 293 294 295 296 297 298 299 300 |
# File 'lib/generators/tramway/install/install_generator.rb', line 287 def ensure_tailwind_application_stylesheet path = tailwind_application_stylesheet_path FileUtils.mkdir_p(File.dirname(path)) return create_file(path, "#{tailwind_css_import_line}\n") unless File.exist?(path) content = File.read(path) return if content.include?(tailwind_css_import_line) File.open(path, 'a') do |file| file.write("\n") unless content.empty? || content.end_with?("\n") file.write("#{tailwind_css_import_line}\n") end end |
#ensure_tailwind_safelist ⇒ Object
274 275 276 277 278 279 280 281 282 283 284 285 |
# File 'lib/generators/tramway/install/install_generator.rb', line 274 def ensure_tailwind_safelist return create_tailwind_config unless File.exist?(tailwind_config_path) source_entries = extract_safelist_entries(File.read(gem_tailwind_config_path)) target_content = File.read(tailwind_config_path) target_entries = extract_safelist_entries(target_content) missing_entries = source_entries - target_entries return if missing_entries.empty? File.write(tailwind_config_path, insert_entries(target_content, missing_entries)) end |