#!/usr/bin/env python

##
# Copyright (c) 2005-2014 Apple Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
##

import os
import sys

#
# Apply patches to dependent projects.
#

#projects = ("Twisted", "dateutil", "xattr")
projects = ()
cwd = os.getcwd()
libpatches = os.path.join(cwd, "lib-patches")

cmd = "/usr/bin/patch"

def applypatch(project, patch):
    stat = os.system("%s -s -d ../%s/ -p0 --forward --dry-run -i %s > /dev/null" % (cmd, project, patch, ))
    if stat == 0:
        print "+++ Patching %s with %s" % (project, patch[len(cwd) + 1:],)
        os.system("%s -s -d ../%s/ -p0 --forward -i %s" % (cmd, project, patch, ))
    else:
        print "*** Failed to patch %s with %s" % (project, patch[len(cwd) + 1:],)



def applypatches(project):

    # Iterate over each patch file in the patches directory
    path = os.path.join(libpatches, project)
    if os.path.exists(path):
        for file in os.listdir(path):
            fpath = os.path.join(path, file)
            if os.path.isfile(fpath) and fpath.endswith(".patch"):
                applypatch(project, fpath)


if __name__ == "__main__":
    try:
        for project in projects:
            applypatches(project)
    except Exception, e:
        sys.exit(str(e))
