Class: Guard::Mirror
Instance Method Summary collapse
-
#initialize(watchers = [], options = {}) ⇒ Mirror
constructor
A new instance of Mirror.
- #run_all(compress = true) ⇒ Object
- #run_on_changes(paths) ⇒ Object
- #start ⇒ Object
Constructor Details
#initialize(watchers = [], options = {}) ⇒ Mirror
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 |
# File 'lib/guard/mirror.rb', line 15 def initialize watchers = [], = {} super = { notify: true }.merge @env = ::Sprockets::Environment.new # CoffeeScript is baked into sprockets so we can skip that, but register # these other guys. @env.register_mime_type 'text/html', '.html' # The problem (awesomeness) with Jade is that it can export HTML or an # anonymous function for use as a JST. Use `.html.jade` for HTML and # `.jst.jade` for a jade template. @env.register_engine '.jade', ::Jade::Template @env.register_engine '.styl', ::Tilt::StylusTemplate # Turn on nib on demand Stylus.use :nib if [:nib] [:paths].each { |path| @env.append_path path } enable_compression if [:compress] == true end |
Instance Method Details
#run_all(compress = true) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/guard/mirror.rb', line 49 def run_all compress = true compress = (compress && [:compress] == :run_all) || [:compress] == true UI.info "Mirroring #{compress ? 'and compressing ' : ''}all files..." if [:target] paths = [[:target]] else paths = @env.paths.map do |path| Dir[File.join path, '**{,/*/**}.*'].map do |file| file[path.length + 1 .. -1] end end.flatten end enable_compression if compress run_on_changes paths disable_compression unless [:compress] == true end |
#run_on_changes(paths) ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/guard/mirror.rb', line 67 def run_on_changes paths ([:target] ? [[:target]] : paths).each do |path| dest = src_to_dest path dirname = File.dirname dest UI.info "IN -> #{path}..." FileUtils.mkdir_p dirname unless File.directory? dirname File.open(dest, 'w') do |f| f.write( begin @env[path] rescue => e if [:notify] Notifier.notify e., title: 'guard-mirror', image: :failed end UI.error e. e. end ) end UI.info "OUT -> #{dest}" end end |
#start ⇒ Object
44 45 46 47 |
# File 'lib/guard/mirror.rb', line 44 def start UI.info 'A mirror has started.' run_all false end |