Class: ActiveadminClaudeTheme::Generators::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- ActiveadminClaudeTheme::Generators::InstallGenerator
- Defined in:
- lib/generators/activeadmin_claude_theme/install/install_generator.rb
Constant Summary collapse
- AA_TW_SRC =
"app/assets/tailwind/active_admin.css"- AA_TW_SRC_LEGACY =
"app/assets/stylesheets/active_admin.css"- TW_CONF =
"tailwind-active_admin.config.js"- PACKAGE_JSON =
"package.json"- FONTS_IMPORT =
<<~CSS @import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&family=Source+Serif+4:opsz,wght@8..60,400;8..60,600&display=swap"); CSS
Instance Method Summary collapse
- #add_view_content_source ⇒ Object
- #configure_build_script ⇒ Object
- #done ⇒ Object
- #import_into_build ⇒ Object
- #patch_tailwind_config_bundle_gemfile ⇒ Object
- #relocate_active_admin_source ⇒ Object
- #vendor_theme_css ⇒ Object
Instance Method Details
#add_view_content_source ⇒ Object
59 60 61 62 63 64 65 66 67 68 |
# File 'lib/generators/activeadmin_claude_theme/install/install_generator.rb', line 59 def add_view_content_source return unless File.exist?(TW_CONF) return if File.read(TW_CONF).include?("activeadmin-claude-theme") snippet = <<~JS `${execSync('bundle show activeadmin-claude-theme', { encoding: 'utf-8' }).trim().split(/\\r?\\n/).pop()}/app/views/**/*.{erb,html,arb,rb}`, JS inject_into_file TW_CONF, snippet, after: "content: [\n" end |
#configure_build_script ⇒ Object
48 49 50 51 52 53 54 55 56 57 |
# File 'lib/generators/activeadmin_claude_theme/install/install_generator.rb', line 48 def configure_build_script return unless File.exist?(PACKAGE_JSON) package = File.read(PACKAGE_JSON) return if package.include?("app/assets/tailwind/active_admin.css") gsub_file PACKAGE_JSON, "./app/assets/stylesheets/active_admin.css", "./app/assets/tailwind/active_admin.css" end |
#done ⇒ Object
83 84 85 86 87 |
# File 'lib/generators/activeadmin_claude_theme/install/install_generator.rb', line 83 def done say "Claude theme installed.", :green say "Rebuild CSS: npm run build:css", :green say "Restart your Rails server after rebuilding.", :green end |
#import_into_build ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/generators/activeadmin_claude_theme/install/install_generator.rb', line 35 def import_into_build return unless File.exist?(AA_TW_SRC) import_line = %(@import "./activeadmin_claude_theme.css";\n) return if File.read(AA_TW_SRC).include?("activeadmin_claude_theme.css") inject_into_file AA_TW_SRC, import_line, after: /@import "tailwindcss";\n/ return if File.read(AA_TW_SRC).include?("fonts.googleapis.com") inject_into_file AA_TW_SRC, FONTS_IMPORT, before: /@import "tailwindcss";\n/ end |
#patch_tailwind_config_bundle_gemfile ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/generators/activeadmin_claude_theme/install/install_generator.rb', line 70 def patch_tailwind_config_bundle_gemfile return unless File.exist?(TW_CONF) return if File.read(TW_CONF).include?("BUNDLE_GEMFILE") inject_into_file TW_CONF, "process.env.BUNDLE_GEMFILE ||= require('path').resolve(__dirname, 'Gemfile');\n\n", before: "const activeAdminPath" rescue StandardError inject_into_file TW_CONF, "process.env.BUNDLE_GEMFILE ||= require('path').resolve(__dirname, 'Gemfile');\n\n", after: "import activeAdminPlugin from '@activeadmin/activeadmin/plugin';\n\n" end |
#relocate_active_admin_source ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/generators/activeadmin_claude_theme/install/install_generator.rb', line 23 def relocate_active_admin_source return if File.exist?(AA_TW_SRC) if File.exist?(AA_TW_SRC_LEGACY) create_file AA_TW_SRC, File.read(AA_TW_SRC_LEGACY) remove_file AA_TW_SRC_LEGACY say "Moved Active Admin Tailwind source to #{AA_TW_SRC} (keeps Propshaft from serving uncompiled CSS).", :green else say "Skipped relocate: run `rails g active_admin:assets` first.", :yellow end end |
#vendor_theme_css ⇒ Object
18 19 20 21 |
# File 'lib/generators/activeadmin_claude_theme/install/install_generator.rb', line 18 def vendor_theme_css css = ActiveadminClaudeTheme::Engine.root.join("app/assets/stylesheets/activeadmin_claude_theme.css").read create_file "app/assets/tailwind/activeadmin_claude_theme.css", css end |