class FlashFlow::Data::Store

Public Class Methods

new(filename, git, opts={}) click to toggle source
# File lib/flash_flow/data/store.rb, line 7
def initialize(filename, git, opts={})
  @filename = filename
  @git = git
  @logger = opts[:logger] || Logger.new('/dev/null')
end

Public Instance Methods

get() click to toggle source
# File lib/flash_flow/data/store.rb, line 13
def get
  file_contents = @git.read_file_from_merge_branch(@filename)
  JSON.parse(file_contents)

rescue JSON::ParserError, Errno::ENOENT
  @logger.error "Unable to read branch info from file: #{@filename}"
  {}
end
write(branches, file=nil) click to toggle source
# File lib/flash_flow/data/store.rb, line 22
def write(branches, file=nil)
  @git.in_dir do
    file ||= File.open(@filename, 'w')
    file.puts JSON.pretty_generate(sort_branches(branches))
    file.close
  end

  @git.in_temp_merge_branch do
    @git.add_and_commit(@filename, 'Branch Info', add: {force: true})
  end
end

Private Instance Methods

sort_branches(branches) click to toggle source
# File lib/flash_flow/data/store.rb, line 36
def sort_branches(branches)
  return branches unless branches.is_a?(Hash)
  sorted_branches = {}
  branches.keys.sort.each { |key| sorted_branches[key] = sort_branches(branches[key]) }
  sorted_branches
end