Mercurial > libervia-backend
annotate frontends/src/jp/output_std.py @ 2213:1010054cf771
jp (base): added msg and exit_code argument to errback so it's more generic
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 29 Mar 2017 19:42:44 +0200 |
parents | 322948499db0 |
children | bf998d8626d9 |
rev | line source |
---|---|
1950 | 1 #! /usr/bin/python |
2 # -*- coding: utf-8 -*- | |
3 | |
4 # jp: a SàT command line tool | |
5 # Copyright (C) 2009-2016 Jérôme Poisson (goffi@goffi.org) | |
6 | |
7 # This program is free software: you can redistribute it and/or modify | |
8 # it under the terms of the GNU Affero General Public License as published by | |
9 # the Free Software Foundation, either version 3 of the License, or | |
10 # (at your option) any later version. | |
11 | |
12 # This program is distributed in the hope that it will be useful, | |
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 # GNU Affero General Public License for more details. | |
16 | |
17 # You should have received a copy of the GNU Affero General Public License | |
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
19 """Standard outputs""" | |
20 | |
21 | |
22 from sat_frontends.jp.constants import Const as C | |
2194
322948499db0
jp (output dict): added color and no-header option
Goffi <goffi@goffi.org>
parents:
2186
diff
changeset
|
23 from sat.tools.common.ansi import ANSI as A |
1950 | 24 import json |
25 | |
2156
8f96c242fa89
jp (outputs): added OUTPUT_COMPLEX type for data which are more complex than key/value dictionaries
Goffi <goffi@goffi.org>
parents:
1950
diff
changeset
|
26 __outputs__ = ["Simple", "Json"] |
8f96c242fa89
jp (outputs): added OUTPUT_COMPLEX type for data which are more complex than key/value dictionaries
Goffi <goffi@goffi.org>
parents:
1950
diff
changeset
|
27 SIMPLE = u'simple' |
1950 | 28 JSON = u'json' |
29 JSON_RAW = u'json_raw' | |
30 | |
31 | |
2156
8f96c242fa89
jp (outputs): added OUTPUT_COMPLEX type for data which are more complex than key/value dictionaries
Goffi <goffi@goffi.org>
parents:
1950
diff
changeset
|
32 class Simple(object): |
1950 | 33 """Default outputs""" |
34 | |
2161
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
35 def __init__(self, host): |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
36 self.host = host |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
37 host.register_output(C.OUTPUT_TEXT, SIMPLE, self.simple_print) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
38 host.register_output(C.OUTPUT_LIST, SIMPLE, self.list) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
39 host.register_output(C.OUTPUT_DICT, SIMPLE, self.dict) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
40 host.register_output(C.OUTPUT_COMPLEX, SIMPLE, self.simple_print) |
1950 | 41 |
2156
8f96c242fa89
jp (outputs): added OUTPUT_COMPLEX type for data which are more complex than key/value dictionaries
Goffi <goffi@goffi.org>
parents:
1950
diff
changeset
|
42 def simple_print(self, data): |
2186
9061c7247964
jp (std output): force unicode on simple output
Goffi <goffi@goffi.org>
parents:
2161
diff
changeset
|
43 self.host.disp(unicode(data)) |
1950 | 44 |
45 def list(self, data): | |
2161
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
46 self.host.disp(u'\n'.join(data)) |
1950 | 47 |
2156
8f96c242fa89
jp (outputs): added OUTPUT_COMPLEX type for data which are more complex than key/value dictionaries
Goffi <goffi@goffi.org>
parents:
1950
diff
changeset
|
48 def dict(self, data): |
2194
322948499db0
jp (output dict): added color and no-header option
Goffi <goffi@goffi.org>
parents:
2186
diff
changeset
|
49 options = self.host.parse_output_options() |
322948499db0
jp (output dict): added color and no-header option
Goffi <goffi@goffi.org>
parents:
2186
diff
changeset
|
50 self.host.check_output_options({u'no-header'}, options) |
322948499db0
jp (output dict): added color and no-header option
Goffi <goffi@goffi.org>
parents:
2186
diff
changeset
|
51 show_header = not u'no-header' in options |
322948499db0
jp (output dict): added color and no-header option
Goffi <goffi@goffi.org>
parents:
2186
diff
changeset
|
52 for k, v in data.iteritems(): |
322948499db0
jp (output dict): added color and no-header option
Goffi <goffi@goffi.org>
parents:
2186
diff
changeset
|
53 if show_header: |
322948499db0
jp (output dict): added color and no-header option
Goffi <goffi@goffi.org>
parents:
2186
diff
changeset
|
54 header = A.color(A.BOLD, A.FG_YELLOW, k) + u': ' |
322948499db0
jp (output dict): added color and no-header option
Goffi <goffi@goffi.org>
parents:
2186
diff
changeset
|
55 else: |
322948499db0
jp (output dict): added color and no-header option
Goffi <goffi@goffi.org>
parents:
2186
diff
changeset
|
56 header = u'' |
322948499db0
jp (output dict): added color and no-header option
Goffi <goffi@goffi.org>
parents:
2186
diff
changeset
|
57 |
322948499db0
jp (output dict): added color and no-header option
Goffi <goffi@goffi.org>
parents:
2186
diff
changeset
|
58 self.host.disp((u'{header}{value}'.format(header=header, value=v))) |
2156
8f96c242fa89
jp (outputs): added OUTPUT_COMPLEX type for data which are more complex than key/value dictionaries
Goffi <goffi@goffi.org>
parents:
1950
diff
changeset
|
59 |
1950 | 60 |
61 class Json(object): | |
62 """outputs in json format""" | |
63 | |
2161
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
64 def __init__(self, host): |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
65 self.host = host |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
66 host.register_output(C.OUTPUT_TEXT, JSON, self.dump) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
67 host.register_output(C.OUTPUT_LIST, JSON, self.dump_pretty) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
68 host.register_output(C.OUTPUT_LIST, JSON_RAW, self.dump) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
69 host.register_output(C.OUTPUT_DICT, JSON, self.dump_pretty) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
70 host.register_output(C.OUTPUT_DICT, JSON_RAW, self.dump) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
71 host.register_output(C.OUTPUT_COMPLEX, JSON, self.dump_pretty) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
72 host.register_output(C.OUTPUT_COMPLEX, JSON_RAW, self.dump) |
1950 | 73 |
74 def dump(self, data): | |
2161
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
75 self.host.disp(json.dumps(data, default=str)) |
1950 | 76 |
77 def dump_pretty(self, data): | |
2161
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
78 self.host.disp(json.dumps(data, indent=4, default=str)) |