0418abd7e73283d8d01455cf61ce251e8edb9b15
[gpgme.git] / lang / python / examples / howto / groups.py
1 # -*- coding: utf-8 -*-
2
3 from __future__ import absolute_import, division, unicode_literals
4
5 # Copyright (C) 2018 Ben McGinnes <ben@gnupg.org>
6 #
7 # This program is free software; you can redistribute it and/or modify it under
8 # the terms of the GNU General Public License as published by the Free Software
9 # Foundation; either version 2 of the License, or (at your option) any later
10 # version.
11 #
12 # This program is free software; you can redistribute it and/or modify it under
13 # the terms of the GNU Lesser General Public License as published by the Free
14 # Software Foundation; either version 2.1 of the License, or (at your option)
15 # any later version.
16 #
17 # This program is distributed in the hope that it will be useful, but WITHOUT
18 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
19 # FOR A PARTICULAR PURPOSE.  See the GNU General Public License and the GNU
20 # Lesser General Public License for more details.
21 #
22 # You should have received a copy of the GNU General Public License and the GNU
23 # Lesser General Public along with this program; if not, see
24 # <https://www.gnu.org/licenses/>.
25
26 import subprocess
27 import sys
28
29 """
30 Intended for use with other scripts.
31
32 Usage: from groups import group_lists
33 """
34
35 if sys.platform == "win32":
36     gpgconfcmd = "gpgconf.exe --list-options gpg"
37 else:
38     gpgconfcmd = "gpgconf --list-options gpg"
39
40 try:
41     lines = subprocess.getoutput(gpgconfcmd).splitlines()
42 except:
43     process = subprocess.Popen(gpgconfcmd.split(), stdout=subprocess.PIPE)
44     procom = process.communicate()
45     if sys.version_info[0] == 2:
46         lines = procom[0].splitlines()
47     else:
48         lines = procom[0].decode().splitlines()
49
50 for i in range(len(lines)):
51     if lines[i].startswith("group") is True:
52         line = lines[i]
53     else:
54         pass
55
56 groups = line.split(":")[-1].replace('"', '').split(',')
57
58 group_lines = []
59 group_lists = []
60
61 for i in range(len(groups)):
62     group_lines.append(groups[i].split("="))
63     group_lists.append(groups[i].split("="))
64
65 for i in range(len(group_lists)):
66     group_lists[i][1] = group_lists[i][1].split()