Class: Tramway::Generators::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
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

Instance Method Details

#ensure_agents_fileObject



194
195
196
197
198
199
200
201
202
203
204
205
206
# File 'lib/generators/tramway/install/install_generator.rb', line 194

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_dependenciesObject



208
209
210
211
212
213
214
215
216
217
218
219
220
221
# File 'lib/generators/tramway/install/install_generator.rb', line 208

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_pinObject



251
252
253
254
255
256
257
258
259
260
261
262
# File 'lib/generators/tramway/install/install_generator.rb', line 251

def ensure_importmap_pin
  return unless File.exist?(importmap_path)

  content = File.read(importmap_path)
  missing_pins = importmap_tramway_pins.reject { |pin| content.include?(pin) }
  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_registrationObject



264
265
266
267
268
269
270
271
272
273
# File 'lib/generators/tramway/install/install_generator.rb', line 264

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_stylesheetObject



236
237
238
239
240
241
242
243
244
245
246
247
248
249
# File 'lib/generators/tramway/install/install_generator.rb', line 236

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_safelistObject



223
224
225
226
227
228
229
230
231
232
233
234
# File 'lib/generators/tramway/install/install_generator.rb', line 223

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