Gentoo Archives: gentoo-commits

From: Brian Dolbec <dolsen@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
Date: Sun, 31 May 2015 05:03:23
Message-Id: 1429552184.8afad8720eea5e69c9247fe207c9cd8e20a2a0e6.dolsen@gentoo
1 commit: 8afad8720eea5e69c9247fe207c9cd8e20a2a0e6
2 Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
3 AuthorDate: Fri Jan 9 21:04:04 2015 +0000
4 Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
5 CommitDate: Mon Apr 20 17:49:44 2015 +0000
6 URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=8afad872
7
8 gkeys: remove-key refactoring
9
10 Update the remove-key action to use the proper installed db.
11 Populate the del_key, del_keydir functions in lib.py
12
13 gkeys/gkeys/actions.py | 27 +++++++++++++--------------
14 gkeys/gkeys/lib.py | 35 +++++++++++++++++++++++++++++------
15 2 files changed, 42 insertions(+), 20 deletions(-)
16
17 diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
18 index cfe69ee..22d660f 100644
19 --- a/gkeys/gkeys/actions.py
20 +++ b/gkeys/gkeys/actions.py
21 @@ -25,7 +25,6 @@ else:
22
23 from collections import defaultdict
24 from json import load
25 -from shutil import rmtree
26
27 from gkeys.lib import GkeysGPG
28 from gkeys.seedhandler import SeedHandler
29 @@ -551,7 +550,7 @@ class Actions(object):
30 keyresults = seeds.list(**kwargs)
31 self.output('', '\n Removing keys...')
32 success = True
33 - print(keyresults)
34 + #print(keyresults)
35 for gkey in sorted(keyresults):
36 if kwargs['nick'] != '*' and kwargs['nick'] not in gkey.nick:
37 messages.append(_unicode("%s does not seem to be a valid key.")
38 @@ -569,22 +568,22 @@ class Actions(object):
39 if ans in ["no", "n"]:
40 messages.append("Key removal aborted... Nothing to be done.")
41 else:
42 - ## This next code is total crap now
43 - ## re-write it from scratch
44 - ## there could be multiple keys installed in one keyring
45 - ## this code just rm's everything.
46 keyring = self.config.get_key('keyring')
47 catdir = os.path.join(keyring, args.category)
48 - rm_candidate = os.path.join(catdir, gkey.nick)
49 self.logger.debug(_unicode("ACTIONS: removekey; catdir = %s")
50 % catdir)
51 - if args.category:
52 - try:
53 - rmtree(rm_candidate)
54 - messages.append(_unicode("Done removing %s key.") % kwargs['nick'])
55 - except OSError:
56 - messages.append(_unicode("%s directory does not exist.") % rm_candidate)
57 - success = False
58 + self.gpg = GkeysGPG(self.config, catdir, self.logger)
59 + if len(gkey.keys) == 1 or args.keys == gkey.keys:
60 + success, msgs = self.gpg.del_keydir(gkey)
61 + messages.extend(msgs)
62 + elif args.keys:
63 + for key in args.keys:
64 + success, msgs = self.gpg.del_key(gkey, key)
65 + msgs.extend(msgs)
66 + else:
67 + for key in gkey.keys:
68 + success, msgs = self.gpg.del_key(gkey, key)
69 + msgs.extend(msgs)
70 return (success, messages)
71
72
73
74 diff --git a/gkeys/gkeys/lib.py b/gkeys/gkeys/lib.py
75 index 9687c24..3eb267c 100644
76 --- a/gkeys/gkeys/lib.py
77 +++ b/gkeys/gkeys/lib.py
78 @@ -19,9 +19,10 @@ with gentoo-keys specific convienience functions.
79 # for py 2.6 compatibility
80 from __future__ import print_function
81
82 -
83 +import os
84 from os.path import abspath, pardir
85 from os.path import join as pjoin
86 +from shutil import rmtree
87
88 from pyGPG.gpg import GPG
89 from gkeys.checks import KeyChecks
90 @@ -165,18 +166,40 @@ class GkeysGPG(GPG):
91 return results
92
93
94 - def del_key(self, gkey, keydir):
95 - '''Delete the specified key in the specified keydir
96 + def del_key(self, gkey, key):
97 + '''Delete the specified key
98
99 @param gkey: GKEY namedtuple with (name, nick, keydir, fingerprint)
100 + @param key: Fingerprint of the primary key to delete
101 '''
102 - return []
103 + self.set_keydir(gkey.keydir, 'del-key', reset=True)
104 + self.set_keyring('pubring.gpg', 'del-key', reset=False)
105 + self.set_keyseedfile(refresh=True)
106 + self.logger.debug("LIB: del_key, gkey: %s" % str(gkey))
107 + self.logger.debug("LIB: del_key, key: %s" % key)
108 + self.logger.debug("** Calling runGPG with: 'gpg %s --delete-keys' for: %s"
109 + % (' '.join(self.config.get_key('tasks', 'delete-keys')), str(gkey)))
110 + result = self.runGPG(task='delete-keys', inputfile=key)
111 + self.logger.info('GPG return code: ' + str(result.returncode))
112 + self.update_gkey(gkey, save=True)
113 + return (False, [])
114
115
116 - def del_keydir(self, keydir):
117 + def del_keydir(self, gkey):
118 '''Delete the specified keydir
119 +
120 + @param gkey: GKEY namedtuple with (name, nick, keydir, fingerprint)
121 '''
122 - return []
123 + rm_candidate = os.path.join(self.basedir, gkey.keydir)
124 + success = False
125 + messages = []
126 + try:
127 + rmtree(rm_candidate)
128 + messages.append("Done removing %s key." % gkey.nick)
129 + success = True
130 + except OSError:
131 + messages.append("%s directory does not exist or is a symbolic link." % rm_candidate)
132 + return (success, messages)
133
134
135 def refresh_key(self, gkey):