#!/usr/bin/ruby # Copyright (c) 2012 Apple Inc. All Rights Reserved. # # IMPORTANT NOTE: This file is licensed only for use on Apple-branded # computers and is subject to the terms and conditions of the Apple Software # License Agreement accompanying the package this file is a part of. # You may not port this file to another platform without Apple's written consent. # Wrapper script for postgres; waits for dataPath to be mounted before proceeding # Reads additional arguments from a plist specified by optional # "--apple-configuration" flag. These args are appended to the original ARGV, and # the --apple-configuration args are removed, before handing the final set of args # to the real postgres executable. postgres_real_path = "@PATH_TEMPLATE@" PLIST_BUDDY = "/usr/libexec/PlistBuddy" config_file_index = ARGV.index("--apple-configuration") if !config_file_index.nil? config_path = ARGV[config_file_index + 1] if config_path.nil? puts "Error: missing required argument for --apple-configuration" exit(1) end ARGV.delete_at(config_file_index+1) ARGV.delete_at(config_file_index) if !FileTest.exists?(config_path) puts "Error: missing configuration file at #{config_path}" exit(1) end config_lines = `#{PLIST_BUDDY} -c 'Print :ProgramArguments' #{config_path}` config_lines.each do |line| if (line =~ /^Array \{/) || (line =~ /^\}/) next end line.chomp! line = line.sub(/^\s+/, '') ARGV.push(line) end end dataPathArgIndicatorIndex = ARGV.index("-D") if !dataPathArgIndicatorIndex.nil? dataPathArg = ARGV[dataPathArgIndicatorIndex + 1] system("/bin/wait4path", dataPathArg) unless dataPathArg.nil? end nargv = ["#{postgres_real_path}", ARGV].flatten exec(*nargv) exit(0)