Class: QuicksilverUI::Generators::FormGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/quicksilver_ui/form/form_generator.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details



12
13
14
# File 'lib/generators/quicksilver_ui/form/form_generator.rb', line 12

def self.banner
  "rails generate quicksilver_ui:form NAME [options]"
end

.desc(description = nil) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/generators/quicksilver_ui/form/form_generator.rb', line 22

def self.desc(description = nil)
  return super if description

  components = Dir.glob(File.join(QuicksilverUI.form_path, "*.rb"))
    .map { |f| File.basename(f, ".rb") }
    .reject { |n| n == "base_tag" }
    .sort
    .map { |c| "  #{c}" }
    .join("\n")

  "#{super}\n#{components}"
end

Instance Method Details

#add_gemsObject



50
51
52
53
54
55
56
57
# File 'lib/generators/quicksilver_ui/form/form_generator.rb', line 50

def add_gems
  all_gems.each do |gem_name|
    unless gem_installed?(gem_name)
      say "Adding #{gem_name} to Gemfile...", :yellow
      run "bundle add #{gem_name}"
    end
  end
end

#copy_form_builderObject



79
80
81
82
83
# File 'lib/generators/quicksilver_ui/form/form_generator.rb', line 79

def copy_form_builder
  source = File.join(templates_path, "app_form_builder.rb")
  dest = Rails.root.join("app/helpers/app_form_builder.rb")
  copy_file source, dest, force: options["force"]
end

#copy_form_component_filesObject



59
60
61
62
63
64
65
66
# File 'lib/generators/quicksilver_ui/form/form_generator.rb', line 59

def copy_form_component_files
  all_form_components.each do |name|
    source = File.join(self.class.source_root, "#{name}.rb")
    next unless File.exist?(source)

    copy_file source, Rails.root.join("app/views/form", "#{name}.rb"), force: options["force"]
  end
end

#copy_form_helperObject



85
86
87
88
89
# File 'lib/generators/quicksilver_ui/form/form_generator.rb', line 85

def copy_form_helper
  source = File.join(templates_path, "app_form_helper.rb")
  dest = Rails.root.join("app/helpers/app_form_helper.rb")
  copy_file source, dest, force: options["force"]
end

#copy_stylesheetsObject



68
69
70
71
72
73
74
75
76
77
# File 'lib/generators/quicksilver_ui/form/form_generator.rb', line 68

def copy_stylesheets
  all_stylesheets.each do |name|
    source = File.join(QuicksilverUI.stylesheets_path, "#{name}.css")
    next unless File.exist?(source)

    dest = Rails.root.join("app/assets/tailwind", "#{name}.css")
    copy_file source, dest, force: options["force"]
    add_css_import(name)
  end
end

#doneObject



91
92
93
94
95
96
97
98
99
# File 'lib/generators/quicksilver_ui/form/form_generator.rb', line 91

def done
  say ""
  say "#{form_component_name} form component generated!", :green

  deps = all_form_components - [file_name]
  if deps.any?
    say "  Dependencies copied: #{deps.join(", ")}", :cyan
  end
end

#generate_form_componentObject



38
39
40
41
42
43
44
45
46
47
48
# File 'lib/generators/quicksilver_ui/form/form_generator.rb', line 38

def generate_form_component
  if form_component_not_found?
    say "Form component not found: #{form_component_name}", :red
    say ""
    say "Available form components:", :green
    available_form_components.each { |c| say "  - #{c}" }
    exit 1
  end

  say "Generating #{form_component_name} form component..."
end