Class: JAPR::Pipeline

Inherits:
Object
  • Object
show all
Defined in:
lib/japr/pipeline.rb

Overview

rubocop:disable ClassLength

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(manifest, prefix, source, destination, type, options = {}) ⇒ Pipeline

Initialize new pipeline



82
83
84
85
86
87
88
89
90
91
# File 'lib/japr/pipeline.rb', line 82

def initialize(manifest, prefix, source, destination, type, options = {})
  @manifest = manifest
  @prefix = prefix
  @source = source
  @destination = destination
  @type = type
  @options = JAPR::DEFAULTS.merge(options)

  process
end

Instance Attribute Details

#assetsObject (readonly)

Returns the value of attribute assets.



93
94
95
# File 'lib/japr/pipeline.rb', line 93

def assets
  @assets
end

#destinationObject (readonly)

Returns the value of attribute destination.



93
94
95
# File 'lib/japr/pipeline.rb', line 93

def destination
  @destination
end

#htmlObject (readonly)

Returns the value of attribute html.



93
94
95
# File 'lib/japr/pipeline.rb', line 93

def html
  @html
end

Class Method Details

.cacheObject

Cache processed pipelines



40
41
42
# File 'lib/japr/pipeline.rb', line 40

def cache
  @cache ||= {}
end

.clear_cacheObject

Empty cache



45
46
47
# File 'lib/japr/pipeline.rb', line 45

def clear_cache
  @cache = {}
end

.hash(source, manifest, options = {}) ⇒ Object

Generate hash based on manifest



6
7
8
9
10
11
12
13
14
15
16
# File 'lib/japr/pipeline.rb', line 6

def hash(source, manifest, options = {})
  options = DEFAULTS.merge(options)
  begin
    Digest::MD5.hexdigest(YAML.safe_load(manifest).map! do |path|
      "#{path}#{File.mtime(File.join(source, path)).to_i}"
    end.join.concat(options.to_s))
  rescue Exception => e
    puts "Failed to generate hash from provided manifest: #{e.message}"
    raise e
  end
end

.puts(message) ⇒ Object

Add prefix to output



61
62
63
# File 'lib/japr/pipeline.rb', line 61

def puts(message)
  $stdout.puts("Asset Pipeline: #{message}")
end

.remove_staged_assets(source, config) ⇒ Object

Remove staged assets



50
51
52
53
54
55
56
57
58
# File 'lib/japr/pipeline.rb', line 50

def remove_staged_assets(source, config)
  config = DEFAULTS.merge(config)
  staging_path = File.join(source, config['staging_path'])
  FileUtils.rm_rf(staging_path)
rescue Exception => e
  puts "Failed to remove staged assets: #{e.message}"
  # Re-raise the exception
  raise e
end

.run(manifest, prefix, source, destination, tag, type, config) ⇒ Object

Run pipeline



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/japr/pipeline.rb', line 19

def run(manifest, prefix, source, destination, tag, type, config)
  # Get hash for pipeline
  hash = hash(source, manifest, config)

  # Check if pipeline has been cached
  return cache[hash], true if cache.key?(hash)

  begin
    puts "Processing '#{tag}' manifest '#{prefix}'"
    pipeline = new(manifest, prefix, source, destination, type, config)
    process_pipeline(hash, pipeline)
  rescue Exception => e
    # Add exception to cache
    cache[hash] = e

    # Re-raise the exception
    raise e
  end
end