class Flowcation::Assets

Public Class Methods

copy_assets(source:, target:) click to toggle source
# File lib/flowcation/assets.rb, line 41
def self.copy_assets(source:, target:)
  FileUtils.mkdir_p(target)
  Dir.entries(source).reject {|file_name| %w(. ..).include?(file_name) }.each do |file_name|
    if File.directory? File.join(source, file_name)
      copy_assets \
        source: File.join(source, file_name), 
        target: File.join(target, file_name)
    else
      FileUtils.cp(File.join(source, file_name), target) 
    end
  end
end
from_config(config={}) click to toggle source
# File lib/flowcation/assets.rb, line 4
def self.from_config(config={})
  config&.each do |name, options|
    options['folders']&.each do |path, asset_folder_name|
      asset_folder_path = File.join(options['output'], asset_folder_name)
      FileUtils.mkdir_p(asset_folder_path)
      asset_folder = File.new(asset_folder_path)
      copy_assets \
        source: File.join(options['input'], path), 
        target: asset_folder
    end
    
    if processor = Settings.get('processor_object')
      options['post-process']&.each do |asset_path, file_process|
        asset_folder_path = File.join(options['output'], asset_path)
        file_process.each do |file_name, process_method|
          #file = File.new(File.join(asset_folder_path, file_name))
          path = File.join(asset_folder_path, file_name)
          puts "Post Process #{File.join(asset_folder_path, file_name)}"
          lines = IO.readlines(path).map do |line|
            processor.send(process_method, line)
          end
          File.open(path, 'w') do |file|
            file.puts lines
          end
        end
      end
    end
    
    options['single-files']&.each do |file_name|
      output_folder_path = File.join(options['output'])
      FileUtils.mkdir_p(output_folder_path)
      output_folder = File.new(output_folder_path)
      FileUtils.cp(File.join(options['input'], file_name), output_folder) 
    end
  end
end