class BigKeeper::BigkeeperParser

Bigkeeper file parser

Public Class Methods

config() click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 182
def self.config
  @@config
end
definitely_exists?(path) click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 53
def self.definitely_exists? path
  folder = File.dirname path
  filename = File.basename path
  # Unlike Ruby IO, ls, and find -f, this technique will fail to locate the file if the case is wrong:
  not %x( find "#{folder}" -name "#{filename}" ).empty?
end
home_git() click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 124
def self.home_git()
  @@config[:home][:git]
end
home_name() click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 120
def self.home_name
  @@config[:name]
end
home_pulls() click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 128
def self.home_pulls()
  @@config[:home][:pulls]
end
module_full_path(home_path, user_name, module_name) click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 140
def self.module_full_path(home_path, user_name, module_name)
  if @@config[:users] \
    && @@config[:users][user_name] \
    && @@config[:users][user_name][:pods] \
    && @@config[:users][user_name][:pods][module_name] \
    && @@config[:users][user_name][:pods][module_name][:path]
    @@config[:users][user_name][:pods][module_name][:path]
  else
    File.expand_path("#{home_path}/../#{module_name}")
  end
end
module_git(module_name) click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 164
def self.module_git(module_name)
  @@config[:modules][module_name][:git]
end
module_names() click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 178
def self.module_names
  @@config[:modules].keys
end
module_path(user_name, module_name) click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 152
def self.module_path(user_name, module_name)
  if @@config[:users] \
    && @@config[:users][user_name] \
    && @@config[:users][user_name][:pods] \
    && @@config[:users][user_name][:pods][module_name] \
    && @@config[:users][user_name][:pods][module_name][:path]
    @@config[:users][user_name][:pods][module_name][:path]
  else
    "../#{module_name}"
  end
end
module_pulls(module_name) click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 168
def self.module_pulls(module_name)
  @@config[:modules][module_name][:pulls]
end
parse(bigkeeper) click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 36
def self.parse(bigkeeper)
  if @@config.empty?

    Logger.error("Can't find a Bigkeeper file in current directory.") if !BigkeeperParser.definitely_exists?(bigkeeper)

    content = File.read bigkeeper
    content.gsub!(/version\s/, 'BigKeeper::version ')
    content.gsub!(/user\s/, 'BigKeeper::user ')
    content.gsub!(/home\s/, 'BigKeeper::home ')
    content.gsub!(/pod\s/, 'BigKeeper::pod ')
    content.gsub!(/modules\s/, 'BigKeeper::modules ')
    content.gsub!(/source\s/, 'BigKeeper::source ')
    eval content
    # p @@config
  end
end
parse_home(name, params) click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 79
def self.parse_home(name, params)
  @@config[:home] = params
  @@config[:name] = name
end
parse_modules() click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 110
def self.parse_modules
  modules = @@config[:modules]
  modules = {} if modules.nil?
  @@config[:modules] = modules
end
parse_modules_pod(name, params) click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 104
def self.parse_modules_pod(name, params)
  modules = @@config[:modules]
  modules[name] = params
  @@config[:modules] = modules
end
parse_pod(name, params) click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 84
def self.parse_pod(name, params)
  if params[:path]
    parse_user_pod(name, params)
  elsif params[:git]
    parse_modules_pod(name, params)
  else
    Logger.error(%(There should be ':path =>' or ':git =>' for pod #{name}))
  end
end
parse_source(name) click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 64
def self.parse_source(name)
  sources = []
  sources << @@config[:source]
  sources << name
  @@config[:source] = sources
end
parse_user(name) click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 71
def self.parse_user(name)
  @@current_user = name
  users = @@config[:users]
  users = {} if users.nil?
  users[name] = {}
  @@config[:users] = users
end
parse_user_pod(name, params) click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 94
def self.parse_user_pod(name, params)
  users = @@config[:users]
  user = users[@@current_user]
  pods = user[:pods]
  pods = {} if pods.nil?
  pods[name] = params
  user[:pods] = pods
  @@config[:users] = users
end
parse_version(name) click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 60
def self.parse_version(name)
  @@config[:version] = name
end
sourcemodule_path() click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 132
def self.sourcemodule_path
  if @@config[:source] == nil
    return ""
  else
    @@config[:source].join(",").reverse.chop.reverse
  end
end
verify_modules(modules) click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 172
def self.verify_modules(modules)
  modules.each do |item|
    Logger.error("Can not find module #{item} in Bigkeeper file") unless @@config[:modules][item]
  end
end
version() click to toggle source
# File lib/big_keeper/util/bigkeeper_parser.rb, line 116
def self.version
  @@config[:version]
end