annotate piecrust/osutil.py @ 526:9b8b47fb1068

bug: Forgot to add a new file like a big n00b.
author Ludovic Chabant <ludovic@chabant.com>
date Tue, 28 Jul 2015 21:36:59 -0700
parents
children fa9eb8f866cd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
526
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1 import os
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2 import sys
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3 import glob as _glob
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4 import unicodedata
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 if sys.platform == 'darwin':
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8 def walk(top, **kwargs):
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
9 for dirpath, dirnames, filenames in os.walk(top, **kwargs):
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
10 dirpath = _from_osx_fs(dirpath)
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11 dirnames = list(map(_from_osx_fs, dirnames))
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
12 filenames = list(map(_from_osx_fs, filenames))
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13 yield dirpath, dirnames, filenames
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
14
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15 def listdir(path='.'):
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
16 for name in os.listdir(path):
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17 name = _from_osx_fs(name)
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
18 yield name
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
19
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
20 def glob(pathname):
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21 pathname = _to_osx_fs(pathname)
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 matches = _glob.glob(pathname)
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
23 return list(map(_from_osx_fs, matches))
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
24
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25 def _from_osx_fs(s):
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26 return unicodedata.normalize('NFC', s)
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28 def _to_osx_fs(s):
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29 return unicodedata.ucd_3_2_0.normalize('NFD', s)
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
30
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31 else:
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
32 walk = sys.walk
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33 listdir = sys.listdir
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34 glob = _glob.glob
9b8b47fb1068 bug: Forgot to add a new file like a big n00b.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35