Ethan Dalool
4a9051e617
With pathclass.glob_many, we can clean up and feel more confident about many programs that use pipeable to take glob patterns. Added return 0 to all programs that didn't have it, so we have consistent and explicit command line return values. Other linting and whitespace.
43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
'''
|
|
Given a target string to replace, rename files by prompting the user for input.
|
|
'''
|
|
import argparse
|
|
import os
|
|
import sys
|
|
|
|
from voussoirkit import pathclass
|
|
from voussoirkit import pipeable
|
|
from voussoirkit import spinal
|
|
|
|
@pipeable.ctrlc_return1
|
|
def inputrename_argparse(args):
|
|
if args.recurse:
|
|
files = (file for file in spinal.walk('.') if args.keyword in file.basename)
|
|
else:
|
|
files = (file for file in pathclass.cwd().listdir() if args.keyword in file.basename)
|
|
prev = None
|
|
for file in files:
|
|
pipeable.stderr(file.relative_path)
|
|
this = input('> ')
|
|
if this == '' and prev is not None:
|
|
this = prev
|
|
if this:
|
|
new_name = file.basename.replace(args.keyword, this)
|
|
new_name = file.parent.with_child(new_name)
|
|
os.rename(file.absolute_path, new_name.absolute_path)
|
|
prev = this
|
|
|
|
return 0
|
|
|
|
def main(argv):
|
|
parser = argparse.ArgumentParser(description=__doc__)
|
|
|
|
parser.add_argument('keyword')
|
|
parser.add_argument('--recurse', action='store_true')
|
|
parser.set_defaults(func=inputrename_argparse)
|
|
|
|
args = parser.parse_args(argv)
|
|
return args.func(args)
|
|
|
|
if __name__ == '__main__':
|
|
raise SystemExit(main(sys.argv[1:]))
|