Class: SvelteOnRails::Generators::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- SvelteOnRails::Generators::InstallGenerator
- Defined in:
- lib/generators/svelte_on_rails/install/install_generator.rb
Constant Summary collapse
- NPM_PACKAGE_NAME =
'@csedl/svelte-on-rails'
Instance Method Summary collapse
- #add_package_json_build_script ⇒ Object
- #completed_note ⇒ Object
- #config_base ⇒ Object
- #initial_questions ⇒ Object
-
#initialize(*args) ⇒ InstallGenerator
constructor
A new instance of InstallGenerator.
- #installer_note ⇒ Object
- #npm ⇒ Object
- #npm_package ⇒ Object
- #typescript ⇒ Object
Constructor Details
#initialize(*args) ⇒ InstallGenerator
Returns a new instance of InstallGenerator.
16 17 18 19 20 21 22 |
# File 'lib/generators/svelte_on_rails/install/install_generator.rb', line 16 def initialize(*args) super (args) @utils = SvelteOnRails::Installer::Utils @template_placeholders = [] end |
Instance Method Details
#add_package_json_build_script ⇒ Object
63 64 65 66 67 |
# File 'lib/generators/svelte_on_rails/install/install_generator.rb', line 63 def add_package_json_build_script pkg_js = JSON.parse(File.read('package.json')) pkg_js['scripts'] ||= { 'build:ssr': "vite build --config vite-ssr.config.ts" } File.write('package.json', JSON.pretty_generate(pkg_js)) end |
#completed_note ⇒ Object
82 83 84 85 86 |
# File 'lib/generators/svelte_on_rails/install/install_generator.rb', line 82 def completed_note puts '-' * 80 puts ' ▶︎▶︎▶︎ INSTALLATION COMPLETE' puts '-' * 80 end |
#config_base ⇒ Object
54 55 56 57 58 59 60 61 |
# File 'lib/generators/svelte_on_rails/install/install_generator.rb', line 54 def config_base @utils.write_templates( ['config_base'], ask_for_overwrite: ![:force], placeholders: @template_placeholders, vite_dir: @vite_source_code_dir ) end |
#initial_questions ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/generators/svelte_on_rails/install/install_generator.rb', line 32 def initial_questions @vite_source_code_dir = SvelteOnRails::Lib::Utils.vite_source_code_dir if @vite_source_code_dir != 'app/frontend' say "WARNING: The Vite source code directory is «#{@vite_source_code_dir}», instead of the usual «app/frontend», in config/vite.json.", :yellow q = " Do you want to continue with «#{@vite_source_code_dir}»?" exit(0) unless @utils.ask_yn(q) end @template_placeholders.push(['$$vite-source-code-dir$$',@vite_source_code_dir]) unless @utils.write_templates(['config_base'], ask_for_overwrite: ![:force], dry_run: true) say "Installation aborted.", :red exit(0) end end |
#installer_note ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/generators/svelte_on_rails/install/install_generator.rb', line 24 def installer_note puts puts '-' * 80 puts ' ▶︎▶︎▶︎ INSTALLING SVELTE-ON-RAILS' puts " • FORCED (option --force was given)" if [:force] puts '-' * 80 end |
#npm ⇒ Object
50 51 52 |
# File 'lib/generators/svelte_on_rails/install/install_generator.rb', line 50 def npm npm_i = SvelteOnRails::Installer::Npm end |
#npm_package ⇒ Object
76 77 78 79 80 |
# File 'lib/generators/svelte_on_rails/install/install_generator.rb', line 76 def npm_package js_i = SvelteOnRails::Installer::Javascript init_stat = '@csedl/svelte-on-rails' js_i.append_import_statement(application_js_path, init_stat, "import '#{init_stat}';") end |
#typescript ⇒ Object
69 70 71 72 73 74 |
# File 'lib/generators/svelte_on_rails/install/install_generator.rb', line 69 def typescript npm_i = SvelteOnRails::Installer::Npm npm_i.install_or_update_package(NPM_PACKAGE_NAME) npm_i.install_or_update_package('typescript') npm_i.install_or_update_package('@types/node') end |