]> git.phdru.name Git - ppu.git/commitdiff
Feat(rm.py): Ask interactively to remove read-only files or directories
authorOleg Broytman <phd@phdru.name>
Wed, 18 Oct 2017 02:54:48 +0000 (05:54 +0300)
committerOleg Broytman <phd@phdru.name>
Wed, 18 Oct 2017 02:54:48 +0000 (05:54 +0300)
TODO
docs/index.rst
docs/news.rst
scripts/rm.py

diff --git a/TODO b/TODO
index e2173e8f9bc5d9086761e1f8fa4e7875943290b1..37859bff3730f26595f0596dae36eb0309e679a0 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,7 +1,3 @@
-Test if the file is read-only in rm.py;
-ask the user if they wants to delete it.
-
-
 Add option -f for rm.py.
 
 
index 93730f546007c9625bfaf111d277ba80bec232e3..476a8a48208c7dc57ee3424a2db2cdf307b0476f 100644 (file)
@@ -48,7 +48,8 @@ Options::
 rm.py
 ~~~~~
 
-Remove files or directories.
+Remove files or directories. Ask interactively to remove read-only files or
+directories.
 
 Usage::
 
index 2503340815e56cedaeaeb01a44b99c505becf0b9..2a2b1bdbcee1d2c7777c6a166facab78f1f11644 100644 (file)
@@ -1,6 +1,11 @@
 News
 ====
 
+Version 0.6.0 (2017-10-??)
+--------------------------
+
+* rm.py ask interactively to remove read-only files or directories.
+
 Version 0.5.0 (2017-07-09)
 --------------------------
 
index 4f24b7200ab39a4ef92d57ca4a881633736097c5..8523b4397ed3b67b9b19b5c833d7b3c761a7729c 100755 (executable)
@@ -4,6 +4,12 @@ import argparse
 import os
 import shutil
 
+try:
+    raw_input
+except NameError:  # Python 3
+    raw_input = input
+
+
 if __name__ == '__main__':
     parser = argparse.ArgumentParser(description='Remove files/directories')
     parser.add_argument('-r', '--recursive', action='store_true',
@@ -13,7 +19,27 @@ if __name__ == '__main__':
     args = parser.parse_args()
 
     for name in args.names:
-        if os.path.isdir(name):
+        is_dir = os.path.isdir(name)
+        if not os.access(name, os.W_OK):
+            if is_dir:
+                ftype = 'directory'
+            else:
+                ftype = 'file'
+            try:
+                while True:
+                    rmw = raw_input(
+                        "rm.py: remove write-protected %s '%s'? [y/n] "
+                        % (ftype, name))
+                    answer = rmw[:1].lower()
+                    if answer == 'y':
+                        break
+                    elif answer == 'n':
+                        raise StopIteration
+                    else:
+                        continue
+            except StopIteration:
+                continue
+        if is_dir:
             if args.recursive:
                 shutil.rmtree(name)
             else: