module Ariadne::ViewComponents::Commands
def compile_command(debug: false, **kwargs)
def compile_command(debug: false, **kwargs) [ executable(**kwargs), "-i", local_path("app/assets/stylesheets/ariadne_view_components.css"), "-o", "app/assets/builds/ariadne_view_components.css", "-c", local_path("tailwind.config.js"), ].tap do |command| command << "--minify" unless debug end end
def executable(
def executable( exe_path: File.expand_path(File.join(__dir__, "..", "..", "..", "exe")) ) if Ariadne::ViewComponents::Upstream::NATIVE_PLATFORMS.keys.none? { |p| Gem::Platform.match(p) } raise UnsupportedPlatformException, <<~MESSAGE ariadne_view_components does not support the #{platform} platform Please install tailwindcss following instructions at https://tailwindcss.com/docs/installation MESSAGE end exe_path = Dir.glob(File.expand_path(File.join(exe_path, "*", "tailwindcss"))).find do |f| Gem::Platform.match(File.basename(File.dirname(f))) end if exe_path.nil? raise ExecutableNotFoundException, <<~MESSAGE Cannot find the tailwindcss executable for #{platform} in #{exe_path} If you're using bundler, please make sure you're on the latest bundler version: gem install bundler bundle update --bundler Then make sure your lock file includes this platform by running: bundle lock --add-platform #{platform} bundle install See `bundle lock --help` output for details. If you're still seeing this message after taking those steps, try running `bundle config` and ensure `force_ruby_platform` isn't set to `true`. See https://github.com/rails/tailwindcss-rails#check-bundle_force_ruby_platform for more details. MESSAGE end exe_path end
def local_path(path)
def local_path(path) root = File.expand_path(File.join(__dir__, "..", "..", "..")) File.join(root, path) end
def platform
def platform [:cpu, :os].map { |m| Gem::Platform.local.send(m) }.join("-") end
def watch_command(poll: false, **kwargs)
def watch_command(poll: false, **kwargs) compile_command(**kwargs).tap do |command| command << "-w" command << "-p" if poll end end