Class: Avo::TailwindBuilder
- Inherits:
-
Object
- Object
- Avo::TailwindBuilder
- Defined in:
- lib/avo/tailwind_builder.rb
Class Method Summary collapse
- .build ⇒ Object
- .custom_build_exists? ⇒ Boolean
- .procfile_has_avo_tailwind_watcher? ⇒ Boolean
- .tailwindcss_available? ⇒ Boolean
- .watch ⇒ Object
Instance Method Summary collapse
Class Method Details
.build ⇒ Object
5 6 7 |
# File 'lib/avo/tailwind_builder.rb', line 5 def self.build new.build end |
.custom_build_exists? ⇒ Boolean
20 21 22 23 24 |
# File 'lib/avo/tailwind_builder.rb', line 20 def self.custom_build_exists? return false unless defined?(Rails) Rails.root.join("app", "assets", "builds", "avo.tailwind.css").exist? end |
.procfile_has_avo_tailwind_watcher? ⇒ Boolean
26 27 28 29 30 31 |
# File 'lib/avo/tailwind_builder.rb', line 26 def self.procfile_has_avo_tailwind_watcher? path = Rails.root.join("Procfile.dev") return false unless path.exist? File.read(path).include?("avo:tailwindcss") end |
.tailwindcss_available? ⇒ Boolean
13 14 15 16 17 18 |
# File 'lib/avo/tailwind_builder.rb', line 13 def self.tailwindcss_available? require "tailwindcss/ruby" true rescue LoadError false end |
.watch ⇒ Object
9 10 11 |
# File 'lib/avo/tailwind_builder.rb', line 9 def self.watch new.watch end |
Instance Method Details
#build ⇒ Object
33 34 35 36 37 38 39 40 |
# File 'lib/avo/tailwind_builder.rb', line 33 def build return true unless self.class.tailwindcss_available? generate_input_file success = run_tailwindcss("--minify") log_build_failure unless success success end |
#watch ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/avo/tailwind_builder.rb', line 42 def watch return unless self.class.tailwindcss_available? generate_input_file signature = host_avo_stylesheets_signature pid = spawn_tailwindcss("--minify", "--watch") begin loop do _, status = Process.waitpid2(pid, Process::WNOHANG) break if status new_signature = host_avo_stylesheets_signature if new_signature != signature signature = new_signature generate_input_file end sleep 1 end rescue Interrupt Process.kill("TERM", pid) raise end end |