Class: Middleman::Extensions::ExternalPipeline
- Inherits:
-
Middleman::Extension
- Object
- Middleman::Extension
- Middleman::Extensions::ExternalPipeline
- Defined in:
- lib/middleman-core/extensions/external_pipeline.rb
Constant Summary
Constants included from Contracts
Instance Attribute Summary
Attributes inherited from Middleman::Extension
Instance Method Summary collapse
-
#initialize(app, config = {}, &block) ⇒ ExternalPipeline
constructor
A new instance of ExternalPipeline.
- #watch_command! ⇒ Object
Methods inherited from Middleman::Extension
activated_extension, #add_exposed_to_context, #after_build, #after_configuration, #after_extension_activated, after_extension_activated, #before_build, #before_configuration, clear_after_extension_callbacks, config, define_setting, expose_to_application, expose_to_config, expose_to_template, global_config, helpers, #manipulate_resource_list, option, #ready, resources
Methods included from Contracts
Constructor Details
#initialize(app, config = {}, &block) ⇒ ExternalPipeline
Returns a new instance of ExternalPipeline.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/middleman-core/extensions/external_pipeline.rb', line 10 def initialize(app, config={}, &block) super return if app.mode?(:config) require 'thread' require 'fileutils' source_path = File.([:source], app.root) # Make sure it exists, or `listen` will explode. ::FileUtils.mkdir_p(source_path) @watcher = app.files.watch :source, path: source_path, latency: [:latency], frontmatter: false logger.info "== Executing: `#{[:command]}`" if app.build? || [:disable_background_execution] watch_command! else ::Thread.new { watch_command! } end end |
Instance Method Details
#watch_command! ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/middleman-core/extensions/external_pipeline.rb', line 37 def watch_command! ::IO.popen([:command], 'r') do |pipe| while buf = pipe.gets without_newline = buf.sub(/\n$/, '') logger.info "== External: #{without_newline}" unless without_newline.empty? end end unless $?.success? logger.error '== External: Command failed with non-zero exit status' exit(1) end @watcher.poll_once! rescue ::Errno::ENOENT => e logger.error "== External: Command failed with message: #{e.}" exit(1) end |