Class: BigKeeper::BigkeeperParser

Inherits:
Object
  • Object
show all
Defined in:
lib/big_keeper/util/bigkeeper_parser.rb

Overview

Bigkeeper file parser

Constant Summary collapse

@@config =
{}
@@current_user =
''

Class Method Summary collapse

Class Method Details

.configObject



239
240
241
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 239

def self.config
  @@config
end

.global_configs(key) ⇒ Object



178
179
180
181
182
183
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 178

def self.global_configs(key)
  if @@config[:configs] == nil
    return
  end
  @@config[:configs][key]
end

.home_gitObject



144
145
146
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 144

def self.home_git()
  @@config[:home][:git]
end

.home_modules_workspaceObject



148
149
150
151
152
153
154
155
156
157
158
159
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 148

def self.home_modules_workspace()
  if @@config[:home][:modules_workspace]
    home_modules_workspace = @@config[:home][:modules_workspace]
    if home_modules_workspace.rindex('/') != home_modules_workspace.length - 1
      home_modules_workspace = home_modules_workspace + '/'
    end

    home_modules_workspace
  else
    '../'
  end
end

.home_nameObject



140
141
142
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 140

def self.home_name
  @@config[:name]
end

.home_pullsObject



161
162
163
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 161

def self.home_pulls()
  @@config[:home][:pulls]
end

.module_full_path(home_path, user_name, module_name) ⇒ Object



185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 185

def self.module_full_path(home_path, user_name, module_name)
  if @@config[:users] \
    && @@config[:users][user_name] \
    && @@config[:users][user_name][:mods] \
    && @@config[:users][user_name][:mods][module_name] \
    && @@config[:users][user_name][:mods][module_name][:path]
    File.expand_path(@@config[:users][user_name][:mods][module_name][:path])
  else
    if @@config[:modules][module_name][:alias]
      File.expand_path("#{home_path}/#{home_modules_workspace}/#{@@config[:modules][module_name][:alias]}")
    else
      File.expand_path("#{home_path}/#{home_modules_workspace}/#{module_name}")
    end
  end
end

.module_git(module_name) ⇒ Object



218
219
220
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 218

def self.module_git(module_name)
  @@config[:modules][module_name][:git]
end

.module_namesObject



235
236
237
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 235

def self.module_names
  @@config[:modules].keys
end

.module_path(user_name, module_name) ⇒ Object



201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 201

def self.module_path(user_name, module_name)
  if @@config[:users] \
    && @@config[:users][user_name] \
    && @@config[:users][user_name][:mods] \
    && @@config[:users][user_name][:mods][module_name] \
    && @@config[:users][user_name][:mods][module_name][:path]
    File.expand_path(@@config[:users][user_name][:mods][module_name][:path])
  else
    p @@config[:modules][module_name]
    if @@config[:modules][module_name][:alias]
      "#{home_modules_workspace}#{@@config[:modules][module_name][:alias]}"
    else
      "#{home_modules_workspace}#{module_name}"
    end
  end
end

.module_pulls(module_name) ⇒ Object



222
223
224
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 222

def self.module_pulls(module_name)
  @@config[:modules][module_name][:pulls]
end

.parse(bigkeeper) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 48

def self.parse(bigkeeper)
  if @@config.empty?

    Logger.error("Can't find a Bigkeeper file in current directory.") if !FileOperator.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!(/source\s/, 'BigKeeper::source ')
    content.gsub!(/mod\s/, 'BigKeeper::mod ')
    content.gsub!(/modules\s/, 'BigKeeper::modules ')
    content.gsub!(/configs\s/, 'BigKeeper::configs ')
    content.gsub!(/param\s/, 'BigKeeper::param ')
    eval content
  end
end

.parse_configsObject



128
129
130
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 128

def self.parse_configs
  @@config[:configs] = {}
end

.parse_home(name, params) ⇒ Object



88
89
90
91
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 88

def self.parse_home(name, params)
  @@config[:home] = params
  @@config[:name] = name
end

.parse_mod(name, params) ⇒ Object



93
94
95
96
97
98
99
100
101
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 93

def self.parse_mod(name, params)
  if params[:path]
    parse_user_mod(name, params)
  elsif params[:git]
    parse_modules_mod(name, params)
  else
    Logger.error(%(There should be ':path =>' or ':git =>' ':alias =>' for mod #{name}))
  end
end

.parse_modulesObject



122
123
124
125
126
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 122

def self.parse_modules
  modules = @@config[:modules]
  modules = {} if modules.nil?
  @@config[:modules] = modules
end

.parse_modules_mod(name, params) ⇒ Object



113
114
115
116
117
118
119
120
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 113

def self.parse_modules_mod(name, params)
  if @@config[:source] != nil
      params[:spec] = "#{@@config[:tmp_spec]}"
  end
  modules = @@config[:modules]
  modules[name] = params
  @@config[:modules] = modules
end

.parse_param(key, value) ⇒ Object



132
133
134
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 132

def self.parse_param(key, value)
  @@config[:configs] = @@config[:configs].merge(key => value)
end

.parse_source(name) ⇒ Object



66
67
68
69
70
71
72
73
74
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 66

def self.parse_source(name)
  @@config.delete("tmp_spec")
  source_split = name.split(",") unless name.split(",").length != 2
  if source_split != nil
    sources = Hash["#{source_split[1].lstrip}" => "#{source_split[0]}"]
    @@config[:source] = sources
    @@config[:tmp_spec] = source_split[1].lstrip
  end
end

.parse_user(name) ⇒ Object



80
81
82
83
84
85
86
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 80

def self.parse_user(name)
  @@current_user = name
  users = @@config[:users]
  users = {} if users.nil?
  users[name] = {}
  @@config[:users] = users
end

.parse_user_mod(name, params) ⇒ Object



103
104
105
106
107
108
109
110
111
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 103

def self.parse_user_mod(name, params)
  users = @@config[:users]
  user = users[@@current_user]
  mods = user[:mods]
  mods = {} if mods.nil?
  mods[name] = params
  user[:mods] = mods
  @@config[:users] = users
end

.parse_version(name) ⇒ Object



76
77
78
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 76

def self.parse_version(name)
  @@config[:version] = name
end

.source_spec_name(module_name) ⇒ Object



170
171
172
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 170

def self.source_spec_name(module_name)
  spec = @@config[:modules][module_name][:spec]
end

.source_spec_path(module_name) ⇒ Object



165
166
167
168
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 165

def self.source_spec_path(module_name)
  spec = @@config[:modules][module_name][:spec]
  @@config[:source][spec]
end

.sourcesObject



174
175
176
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 174

def self.sources
  @@config[:source].keys
end

.verify_modules(modules) ⇒ Object



226
227
228
229
230
231
232
233
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 226

def self.verify_modules(modules)
  modules = [] unless modules
  modules = modules.uniq
  modules.each do |item|
    Logger.error("Can not find module #{item} in Bigkeeper file") unless @@config[:modules][item]
  end
  modules
end

.versionObject



136
137
138
# File 'lib/big_keeper/util/bigkeeper_parser.rb', line 136

def self.version
  @@config[:version]
end