annotate scripts/schema-dump.py @ 6524:f961dbbc3573

issue2551167 roundup issues when using pip install Running pip install generates a wheel install. This places locale, template and man pages under site-packages/usr/share/.... These changes make roundup look there for templates (affecting admin.py) and locale (affecting i18n.py) files. This also makes it work better in virtual environment and containers (docker). There is also a commented out bit of code in setup.py that prevents it from making a bdist_wheel forcing a regular install with files put under /usr/locale etc. This can be re-enabled if needed for 2.2 if there are still issues with roundup that aren't solved by then.
author John Rouillard <rouilj@ieee.org>
date Sun, 07 Nov 2021 01:49:03 -0400
parents ed5c19fca083
children b5fffd2a64af
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4937
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
1 #!/usr/bin/env python
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
3 """
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
4 Use recently documented XML-RPC API to dump
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
5 Roundup data schema in human readable form.
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
6
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
7 Future development may cover:
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
8 [ ] unreadable dump formats
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
9 [ ] access to local database
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
10 [ ] lossless dump/restore cycle
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
11 [ ] data dump and filtering with preserved
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
12 """
5936
ed5c19fca083 __future__ import was failing, not first command in file.
John Rouillard <rouilj@ieee.org>
parents: 5487
diff changeset
13 from __future__ import print_function
ed5c19fca083 __future__ import was failing, not first command in file.
John Rouillard <rouilj@ieee.org>
parents: 5487
diff changeset
14
4937
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
15 __license__ = "Public Domain"
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
16 __version__ = "1.0"
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
17 __authors__ = [
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
18 "anatoly techtonik <techtonik@gmail.com>"
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
19 ]
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
20
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
21 import os
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
22 import sys
5408
e46ce04d5bbc Python 3 preparation: update xmlrpclib / SimpleXMLRPCServer imports.
Joseph Myers <jsm@polyomino.org.uk>
parents: 4938
diff changeset
23 from roundup.anypy import xmlrpc_
4937
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
24 import pprint
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
25 import textwrap
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
26 from optparse import OptionParser
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
27
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
28 sname = os.path.basename(sys.argv[0])
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
29 usage = """\
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
30 usage: %s [options] URL
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
31
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
32 URL is XML-RPC endpoint for your tracker, such as:
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
33
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
34 http://localhost:8917/demo/xmlrpc
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
35
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
36 options:
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
37 --pprint (default)
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
38 --json
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
39 --yaml
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
40 --raw
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
41
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
42 -h --help
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
43 --version
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
44 """ % sname
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
45
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
46 def format_pprint(var):
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
47 return pprint.pformat(var)
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
48
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
49 def format_json(var):
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
50 jout = pprint.pformat(var)
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
51 jout = jout.replace('"', "\\'") # " to \'
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
52 jout = jout.replace("'", '"') # ' to "
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
53 jout = jout.replace('\\"', "'") # \" to '
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
54 return jout
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
55
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
56 def format_yaml(var):
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
57 out = pprint.pformat(var)
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
58 out = out.replace('{', ' ')
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
59 out = out.replace('}', '')
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
60 out = textwrap.dedent(out)
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
61 out = out.replace("'", '')
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
62 out = out.replace(' [[', '\n [')
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
63 out = out.replace(']]', ']')
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
64 out = out.replace('],', '')
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
65 out = out.replace(']', '')
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
66 out2 = []
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
67 for line in out.splitlines():
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
68 if '[' in line:
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
69 line = ' ' + line.lstrip(' [')
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
70 line = line.replace('>', '')
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
71 line = line.replace('roundup.hyperdb.', '')
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
72 # expandtabs(16) with limit=1
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
73 n, v = line.split(', <')
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
74 if len(n) > 14:
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
75 indent = 0
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
76 else:
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
77 indent = 14 - len(n)
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
78 line = line.replace(', <', ': '+' '*indent)
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
79 line.split(",")
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
80 out2.append(line)
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
81 out = '\n'.join(out2)
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
82 return out
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
83
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
84 if __name__ == "__main__":
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
85 if len(sys.argv) < 2 or "-h" in sys.argv or "--help" in sys.argv:
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
86 sys.exit(usage)
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
87 if "--version" in sys.argv:
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
88 sys.exit(sname + " " + __version__)
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
89
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
90 parser = OptionParser()
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
91 parser.add_option("--raw", action='store_true')
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
92 parser.add_option("--yaml", action='store_true')
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
93 parser.add_option("--json", action='store_true')
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
94 (options, args) = parser.parse_args()
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
95
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
96 url = args[0]
5408
e46ce04d5bbc Python 3 preparation: update xmlrpclib / SimpleXMLRPCServer imports.
Joseph Myers <jsm@polyomino.org.uk>
parents: 4938
diff changeset
97 roundup_server = xmlrpc_.client.ServerProxy(url, allow_none=True)
4937
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
98 schema = roundup_server.schema()
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
99 if options.raw:
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
100 print(str(schema))
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
101 elif options.yaml:
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
102 print(format_yaml(schema))
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
103 elif options.json:
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
104 print(format_json(schema))
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
105 else:
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
106 print(format_pprint(schema))
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
107
9369ade6c24b scripts/schema-dump.py: New script to dump schema from tracker through XML-RPC
anatoly techtonik <techtonik@gmail.com>
parents:
diff changeset
108 print("")

Roundup Issue Tracker: http://roundup-tracker.org/