]> git.phdru.name Git - ppu.git/blob - scripts/rm.py
Feat(rm.py): Ask interactively to remove read-only files or directories
[ppu.git] / scripts / rm.py
1 #! /usr/bin/env python
2
3 import argparse
4 import os
5 import shutil
6
7 try:
8     raw_input
9 except NameError:  # Python 3
10     raw_input = input
11
12
13 if __name__ == '__main__':
14     parser = argparse.ArgumentParser(description='Remove files/directories')
15     parser.add_argument('-r', '--recursive', action='store_true',
16                         help='remove directories recursively')
17     parser.add_argument('names', nargs='+',
18                         help='files/directories names to remove')
19     args = parser.parse_args()
20
21     for name in args.names:
22         is_dir = os.path.isdir(name)
23         if not os.access(name, os.W_OK):
24             if is_dir:
25                 ftype = 'directory'
26             else:
27                 ftype = 'file'
28             try:
29                 while True:
30                     rmw = raw_input(
31                         "rm.py: remove write-protected %s '%s'? [y/n] "
32                         % (ftype, name))
33                     answer = rmw[:1].lower()
34                     if answer == 'y':
35                         break
36                     elif answer == 'n':
37                         raise StopIteration
38                     else:
39                         continue
40             except StopIteration:
41                 continue
42         if is_dir:
43             if args.recursive:
44                 shutil.rmtree(name)
45             else:
46                 os.rmdir(name)
47         else:
48             os.unlink(name)