瀏覽代碼

Add option to print just the password field

a better fix for #50
Oz N Tiram 6 年之前
父節點
當前提交
9f68914922
共有 3 個文件被更改,包括 29 次插入9 次删除
  1. 3 0
      pwman/__init__.py
  2. 21 8
      pwman/ui/baseui.py
  3. 5 1
      pwman/ui/cli.py

+ 3 - 0
pwman/__init__.py

@@ -87,6 +87,9 @@ def parser_options(formatter_class=argparse.HelpFormatter):  # pragma: no cover
 
     printer = subparsers.add_parser('p', help='print password entry')
     printer.add_argument("node", type=int)
+
+    copy = subparsers.add_parser('cp', help='print password entry')
+    copy.add_argument("node", type=int)
     return parser
 
 

+ 21 - 8
pwman/ui/baseui.py

@@ -292,6 +292,19 @@ class BaseUtilsMixin:
         for i in nodes:
             self._db.removenodes([i])
 
+    def _get_node(self, nodeid):
+        if not nodeid.isdigit():
+            print("print accepts only a single ID ...")
+            return
+
+        nodes = self._db.getnodes([nodeid])
+        if not nodes:  # pragma: no cover
+            print("Node not found ...")
+            return
+
+        node = self._db_entries_to_nodes(nodes)[0]
+        return node
+
 
 class BaseCommands(HelpUIMixin, AliasesMixin, BaseUtilsMixin):
 
@@ -461,16 +474,16 @@ class BaseCommands(HelpUIMixin, AliasesMixin, BaseUtilsMixin):
         # should call _do_* method which is testable
         self._do_new(args)
 
+    def do_pp(self, args):
+
+        node = self._get_node(args)
+
+        print(node.password)
+
     def do_print(self, args):
-        if not args.isdigit():
-            print("print accepts only a single ID ...")
-            return
-        nodes = self._db.getnodes([args])
-        if not nodes:  # pragma: no cover
-            print("Node not found ...")
-            return
 
-        node = self._db_entries_to_nodes(nodes)[0]
+        node = self._get_node(args)
+
         print(node)
         flushtimeout = self.config.get_value('Global', 'cls_timeout')
         flushtimeout = int(flushtimeout) if flushtimeout else 10

+ 5 - 1
pwman/ui/cli.py

@@ -135,7 +135,11 @@ def main():
     cli = PwmanCli(db, xselpath, CLICallback, config)
 
     if args.cmd == "p":
-        cli.onecmd("p %s" % args.node)
+        cli.onecmd("pp %s" % args.node)
+        sys.exit(1)
+
+    if args.cmd == "cp":
+        cli.onecmd("cp %s" % args.node)
         sys.exit(1)
 
     try: