class BranchableCDNAssets::Manifest

Attributes

file_set[R]
source_file[R]

Public Class Methods

new(source_file) click to toggle source
# File lib/branchable_cdn_assets/manifest.rb, line 8
def initialize source_file
  @source_file = source_file
  @file_set    = File.exists?(source_file) ? read_source_file : Set.new
end

Public Instance Methods

files() click to toggle source

list files set as an Array @return [Array]

# File lib/branchable_cdn_assets/manifest.rb, line 15
def files
  file_set.to_a
end
merge_files(new_files) click to toggle source

add new files to the manifest set @param new_files [Array] @return [Set]

# File lib/branchable_cdn_assets/manifest.rb, line 22
def merge_files new_files
  file_set.merge Array(new_files)
end
remove_files(files_to_remove) click to toggle source

remove a set of files from the manifest @param files_to_remove [Array] @return [Set]

# File lib/branchable_cdn_assets/manifest.rb, line 29
def remove_files files_to_remove
  file_set.subtract Array(files_to_remove)
end
update_source_file!() click to toggle source

updates the manifest file with the most recent set of files @return [Void]

# File lib/branchable_cdn_assets/manifest.rb, line 36
def update_source_file!
  destroy! && return if file_set.empty?

  File.open( source_file, 'w' ) do |file|
    file.write manifest_content
  end
end

Private Instance Methods

destroy!() click to toggle source

remove the manifest source_file

# File lib/branchable_cdn_assets/manifest.rb, line 57
def destroy!
  File.delete(source_file) if File.exist?(source_file)
  true
end
manifest_content() click to toggle source

render/serialize the manifest set

# File lib/branchable_cdn_assets/manifest.rb, line 52
def manifest_content
  file_set.to_a.join("\n")
end
read_source_file() click to toggle source

read the manifest source_file

# File lib/branchable_cdn_assets/manifest.rb, line 47
def read_source_file
  IO.read(source_file).split.to_set
end