15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/generators/turbo/hmr/install_generator.rb', line 15
def update_application_js
application_js_path = "app/javascript/application.js"
if File.exist?(application_js_path)
content = File.read(application_js_path)
unless content.include?('from "turbo-hmr"')
prepend_to_file application_js_path, "import { start as startTurboHmr } from \"turbo-hmr\"\n"
end
unless content.include?("startTurboHmr")
if content.match(/(?:const|let|var)\s+(\w+)\s*=.*Application\.start\(\)/)
app_var = Regexp.last_match(1)
inject_into_file application_js_path, "\nstartTurboHmr(#{app_var})\n",
after: /#{app_var}\s*=.*Application\.start\(\)/
elsif content.match(/window\.Stimulus\s*=.*Application\.start\(\)/)
inject_into_file application_js_path, "\nstartTurboHmr(window.Stimulus)\n",
after: /window\.Stimulus\s*=.*Application\.start\(\)/
else
append_to_file application_js_path, "\n// Start turbo-hmr (adjust the application variable name as needed)\n// startTurboHmr(application)\n"
end
end
else
create_file application_js_path, <<~JS
import { start as startTurboHmr } from "turbo-hmr"
import { Application } from "@hotwired/stimulus"
const application = Application.start()
startTurboHmr(application)
JS
end
end
|