]> git.phdru.name Git - ppu.git/commitdiff
Add option -r for rm.py
authorOleg Broytman <phd@phdru.name>
Sun, 9 Jul 2017 13:12:07 +0000 (16:12 +0300)
committerOleg Broytman <phd@phdru.name>
Sun, 9 Jul 2017 13:13:21 +0000 (16:13 +0300)
README.rst
TODO
docs/news.rst
scripts/rm.py
tests/test_rm.py

index ed425989ef8fa1837f972aff9062972496853121..b99b8f3a5e30b0156b26c3ac6511205ffcf08559 100644 (file)
@@ -11,7 +11,7 @@ cmp.py - compare two files.
 remove-old-files.py - remove old files. It's a portable replacement for
 `find start_dir -type f -mtime +31 -delete`.
 
-rm.py - remove files.
+rm.py - remove files and directories.
 
 which.py - find a program in PATH and print full path to it.
 
diff --git a/TODO b/TODO
index 0afd4eb33d4b7d1d26f60095f486bd5267a33dbb..27ffec30eb39a7c0df7065f11913481fadfb6386 100644 (file)
--- a/TODO
+++ b/TODO
@@ -7,7 +7,4 @@ Rename remove-old-files.py to find.py. Make options more GNU find-like.
 Add option -s for cmp.py.
 
 
-Add option -r for rm.py.
-
-
 Extend find.py: add options to find files by name, extension, path.
index 8ed59f01656252a4d6ea0587d90be1d119376752..0685da8232763c4737fd2fe781d968240fe295e2 100644 (file)
@@ -1,9 +1,11 @@
 News
 ====
 
-Version 0.4.1 (2017-06-??)
+Version 0.5.0 (2017-07-??)
 --------------------------
 
+* Add option -r for rm.py.
+
 * Use remove-old-files.py to cleanup pip cache.
 
 Version 0.4.0 (2017-06-04)
index 4278fef5beba8752cabcccb60f7649c762db7bed..b7219f6d20268d3fe8f74ba8077f3fc01a12ebfe 100755 (executable)
@@ -1,7 +1,22 @@
 #! /usr/bin/env python
 
+import argparse
 import os
-import sys
+import shutil
 
-for filename in sys.argv[1:]:
-    os.unlink(filename)
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser(description='Remove old files')
+    parser.add_argument('-r', '--recursive', action='store_true',
+                        help='remove directories recursively')
+    parser.add_argument('names', nargs='+',
+                        help='files/directories names to remove')
+    args = parser.parse_args()
+
+    for name in args.names:
+        if os.path.isdir(name):
+            if args.recursive:
+                shutil.rmtree(name)
+            else:
+                os.rmdir(name)
+        else:
+            os.unlink(name)
index 631502cfe096c4531cfd2f80364bbcaafa4f8662..4e4cd76d314412f7fc2c1215f3832965aa0a73f4 100755 (executable)
@@ -21,3 +21,22 @@ def test_rm():
         [sys.executable, test_prog_path, "test2"]) == 0
     assert_files_exist('test1')
     assert_files_not_exist('test2')
+
+    create_files(['test1', 'test2'])
+    assert_files_exist(['test1', 'test2'])
+    assert subprocess.call(
+        [sys.executable, test_prog_path, "-r", "test2"]) == 0
+    assert_files_exist('test1')
+    assert_files_not_exist('test2')
+
+
+def test_rm_recursive():
+    create_files(['test'])
+    create_files(['test'], 'subdir/subd2')
+    assert_files_exist(['test', 'subdir/subd2/test'])
+    assert subprocess.call(
+        [sys.executable, test_prog_path, "subdir"]) == 1
+    assert subprocess.call(
+        [sys.executable, test_prog_path, "-r", "subdir"]) == 0
+    assert_files_exist('test')
+    assert_files_not_exist(['subdir/subd2/test'])