File: config.rb

package info (click to toggle)
mkvtoolnix 92.0-1
  • links: PTS
  • area: main
  • in suites: trixie
  • size: 58,620 kB
  • sloc: cpp: 216,810; ruby: 11,403; xml: 8,058; ansic: 6,885; sh: 4,884; python: 1,041; perl: 191; makefile: 113; awk: 16; javascript: 4
file content (34 lines) | stat: -rw-r--r-- 1,145 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
def read_config_file file_name
  result = Hash[ *IO.readlines(file_name).collect { |line| line.chomp.gsub(/#.*/, "") }.select { |line| !line.empty? }.collect do |line|
                   parts = line.split(/\s*=\s*/, 2).collect { |part| part.gsub(/^\s+/, '').gsub(/\s+$/, '') }
                   key   = parts[0].gsub(%r{^export\s+}, '').to_sym
                   value = (parts[1] || '').gsub(%r{^"|"$}, '').gsub(%r{\\"}, '"')
                   [ key, value ]
                 end.flatten ]
  result.default = ''

  result
end

def read_build_config
  dir = File.dirname(__FILE__) + '/..'

  fail "build-config not found: please run ./configure" unless FileTest.exist?("#{dir}/build-config")

  config = read_config_file("#{dir}/build-config")
  config = config.merge(read_config_file("#{dir}/build-config.local")) if FileTest.exist?("#{dir}/build-config.local")

  config
end

def c(idx, default = '')
  idx_s = idx.to_s
  var   = (ENV[idx_s].nil? ? $config[idx.to_sym] : ENV[idx_s]).to_s
  var   = var.gsub(/\$[\({](.*?)[\)}]/) { c($1) }.gsub(/^\s+/, '').gsub(/\s+$/, '')

  var.empty? ? default : var
end

def c?(idx)
  c(idx).to_bool
end