contrib/casesmash.py
author Pierre-Yves David <pierre-yves.david@fb.com>
Mon, 26 May 2014 11:44:58 -0700
changeset 21693 9c35f3a8cac4
parent 19378 9de689d20230
child 28351 42a7301fb4d5
permissions -rw-r--r--
merge: drop the quotes around commit description We already have a ":" after the user name to denote the start of the description. The current usage of quotes around the description is problematic as the truncation to 80 chars is likely to drop the closing quote. This may confuse syntax coloration in some editors.

import os, __builtin__
from mercurial import util

def lowerwrap(scope, funcname):
    f = getattr(scope, funcname)
    def wrap(fname, *args, **kwargs):
        d, base = os.path.split(fname)
        try:
            files = os.listdir(d or '.')
        except OSError:
            files = []
        if base in files:
            return f(fname, *args, **kwargs)
        for fn in files:
            if fn.lower() == base.lower():
                return f(os.path.join(d, fn), *args, **kwargs)
        return f(fname, *args, **kwargs)
    scope.__dict__[funcname] = wrap

def normcase(path):
    return path.lower()

os.path.normcase = normcase

for f in 'file open'.split():
    lowerwrap(__builtin__, f)

for f in "chmod chown open lstat stat remove unlink".split():
    lowerwrap(os, f)

for f in "exists lexists".split():
    lowerwrap(os.path, f)

lowerwrap(util, 'posixfile')