X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/47d1fdfe8a1d7c4275f9b97f7ddf932e6671f0af..675794872a5d064cf0a8177d662555c04b0dae51:/docker/build_tools/config.rb?ds=inline diff --git a/docker/build_tools/config.rb b/docker/build_tools/config.rb index a31895baf5..ddf923736e 100755 --- a/docker/build_tools/config.rb +++ b/docker/build_tools/config.rb @@ -34,41 +34,40 @@ Dir.glob('*/generated/*') do |stale_file| File.delete(stale_file) end +File.umask(022) Dir.glob('*/*.in') do |template_file| generated_dir = File.join(File.dirname(template_file), 'generated') Dir.mkdir(generated_dir) unless Dir.exists? generated_dir output_path = File.join(generated_dir, File.basename(template_file, '.in')) - output = File.open(output_path, "w") - File.open(template_file) do |input| - input.each_line do |line| + File.open(output_path, "w") do |output| + File.open(template_file) do |input| + input.each_line do |line| - @count = 0 - while @count < 10 - @out = line.gsub!(/@@(.*?)@@/) do |var| - if config.key?(Regexp.last_match[1]) - config[Regexp.last_match[1]] - else - var.gsub!(/@@/, '@_NOT_FOUND_@') + # This count is used to short-circuit potential + # infinite loops of variable substitution. + @count = 0 + while @count < 10 + @out = line.gsub!(/@@(.*?)@@/) do |var| + if config.key?(Regexp.last_match[1]) + config[Regexp.last_match[1]] + else + var.gsub!(/@@/, '@_NOT_FOUND_@') + end end + break if @out.nil? + @count += 1 end - break if @out.nil? - @count += 1 - end - output.write(line) + output.write(line) + end end end - # Copy the owner's read+execute bits to group and other. - owner_perms = output.stat.mode & 0700 - group_perms = (owner_perms & 0500) >> 3 - output.chmod(owner_perms | group_perms | (group_perms >> 3)) - output.close end # Copy the ssh public key file to base/generated (if a path is given) generated_dir = File.join('base/generated') Dir.mkdir(generated_dir) unless Dir.exists? generated_dir -if (config['PUBLIC_KEY_PATH'] != nil and +if (!config['PUBLIC_KEY_PATH'].nil? and File.readable? config['PUBLIC_KEY_PATH']) FileUtils.cp(config['PUBLIC_KEY_PATH'], File.join(generated_dir, 'id_rsa.pub'))