123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- #!/usr/bin/env python
- """
- Pydir is mkdir for Python modules.
- Example:
- $ pydir -v myproject/module/etc
- Created directory myproject/module/etc
- Created file myproject/__init__.py
- Created file myproject/module/__init__.py
- Created file myproject/module/etc/__init__.py
- """
- from optparse import OptionParser, make_option
- import os
- import os.path
- import sys
- VERSION = (0, 2, 1)
- def version_string():
- return '.'.join(str(component) for component in VERSION)
- def main():
- usage = '%prog path [path2] [path3] [pathN]\n\n' + __doc__.strip()
- parser = OptionParser(usage=usage, option_list=(
- make_option('-v', '--verbose', default=False, action='store_true'),
- ))
-
- options, args = parser.parse_args()
-
- if len(args) == 0:
- parser.error('No paths given.')
-
- output = sys.stdout if options.verbose else None
-
- for index, path in enumerate(args):
- path = path.replace('.', os.path.sep)
-
- if output and index > 0:
- output.write('\n')
-
- try:
- pydir(path, output=output)
- except BaseException as exc:
- print ('Couldn\'t create %s: %s' % (path, exc,))
- def pydir(path, output=None):
- """
- Create a directory structure for a Python module, including __init__.py
- files. Converts existing directories into modules.
- """
-
- def info(line):
- if output:
- output.write(line)
- output.write('\n')
-
- try:
- os.makedirs(path)
- except (OSError, IOError) as exc:
- if not os.path.isdir(path):
- info('Path already exists: %s' % path)
- else:
- raise
- else:
- info('Created directory %s' % path)
-
- segments = path.split(os.path.sep)
- for i in xrange(len(segments)):
- init_filename = os.path.sep.join(segments[:i+1] + ['__init__.py'])
- if not os.path.isfile(init_filename):
- try:
- open(init_filename, 'w').close()
- except (OSError, IOError) as exc:
- raise
- else:
- info('Created file %s' % (init_filename,))
- else:
- info('File already exists: %s' % (init_filename,))
- if __name__ == '__main__':
- main()
|