

def main(argv=None):
    'script main.\n\n    parses command line options in sys.argv, unless *argv* is given.\n    '
    if (not argv):
        argv = sys.argv
    parser = E.OptionParser(version='%prog version: $Id$', usage=globals()['__doc__'])
    parser.add_option('--scripts', dest='rename_scripts', type='string', help='rename scripts')
    parser.add_option('--options', dest='rename_options', type='string', help='rename command line options')
    parser.add_option('--split-prefix', dest='split_prefix', type='string', help='move scripts with prefix to subdirectory')
    parser.add_option('--suffix', dest='suffixes', action='append', type='string', help='file suffixes to use.')
    parser.add_option('-n', '--dry-run', dest='dry_run', action='store_true', help='dry run, do not implement any changes')
    parser.add_option('--restrict-regex', dest='regex_restrict', type='string', help='regular expression to restrict refactoring to')
    parser.add_option('-d', '--directories', dest='dirs', action='append', type='string', help='directories to change files in [%defaul]')
    parser.set_defaults(rename_scripts=None, rename_options=None, split_prefix=None, scriptsdir='scripts', dirs=[], suffixes=[], dry_run=False, regex_restrict=None)
    (options, args) = E.Start(parser, argv=argv)
    if (len(options.suffixes) == 0):
        raise ValueError('please supply --suffixes')
    if (len(options.dirs) == 0):
        raise ValueError('please supply --directories')
    scriptsdir = parser.scriptsdir
    counter = E.Counter()
    map_old2new = {
        
    }
    if (options.rename_scripts or options.split_prefix):
        if options.rename:
            with IOTools.openFile(options.rename_scripts, 'r') as inf:
                for line in inf:
                    if line.startswith('#'):
                        continue
                    if line.startswith('old'):
                        continue
                    try:
                        (old, new) = line[:(- 1)].split('\t')
                    except ValueError:
                        continue
                    if (not os.path.exists(os.path.join(scriptsdir, old))):
                        E.warn(('%s does not exist - no renaming' % old))
                        continue
                    map_old2new[old] = new
        elif options.split_prefix:
            if (not os.path.exists(os.path.join(scriptsdir, options.split_prefix))):
                E.warn(('destination %s does not exist - no renaming' % options.split_prefix))
                return
            scripts = glob.glob(('%s/%s_*.py' % (scriptsdir, options.split_prefix)))
            if (len(scripts) == 0):
                E.info('nothing to change')
                return
            for script in scripts:
                scriptname = os.path.basename(script)
                newname = scriptname[(len(options.split_prefix) + 1):]
                map_old2new[scriptname] = ('%s/%s' % (options.split_prefix, newname))
        if (len(map_old2new) == 0):
            E.info('nothing to change')
            return
        for (old, new) in map_old2new.items():
            statement = ('git mv %(scriptsdir)s/%(old)s %(scriptsdir)s/%(new)s' % locals())
            counter.renamed += 1
            if options.dry_run:
                E.info(statement)
            else:
                E.run(statement)
        updateFiles(options.dirs, map_old2new, counter, suffixes=options.suffixes, dry_run=options.dry_run)
    elif options.rename_options:
        table = pandas.read_csv(IOTools.openFile(options.rename_options), sep='\t')
        selected = table[(table.action == 'rename')]
        checkUnique(selected['option'])
        checkOverlap(selected['option'], selected['alternative'])
        map_old2new = dict(zip([('--%s' % x) for x in selected['option']], [('--%s' % x) for x in selected['alternative']]))
        updateFiles(options.dirs, map_old2new, counter, suffixes=options.suffixes, regex_restrict=options.regex_restrict, dry_run=options.dry_run)
    E.info(str(counter))
    E.Stop()

dataset/ETHPy150Open CGATOxford/cgat/refactor/cgat_refactor.py main/VarMisuse@294/526 `options`->`parser`