Mercurial > libervia-backend
comparison frontends/src/jp/cmd_merge_request.py @ 2551:b27165bf160c
jp (merge-request/set): if service and node are not specified, URIFinder is now used + ask confirmation before publishing
author | Goffi <goffi@goffi.org> |
---|---|
date | Sat, 31 Mar 2018 18:23:06 +0200 |
parents | 2df1ca79cb30 |
children | 39b10475f56b |
comparison
equal
deleted
inserted
replaced
2550:1d754bc14381 | 2551:b27165bf160c |
---|---|
20 | 20 |
21 import base | 21 import base |
22 from sat.core.i18n import _ | 22 from sat.core.i18n import _ |
23 from sat_frontends.jp.constants import Const as C | 23 from sat_frontends.jp.constants import Const as C |
24 from sat_frontends.jp import xmlui_manager | 24 from sat_frontends.jp import xmlui_manager |
25 from sat_frontends.jp import common | |
25 from functools import partial | 26 from functools import partial |
26 import os.path | 27 import os.path |
27 | 28 |
28 __commands__ = ["MergeRequest"] | 29 __commands__ = ["MergeRequest"] |
29 | 30 |
30 | 31 |
31 class Set(base.CommandBase): | 32 class Set(base.CommandBase): |
32 | 33 |
33 def __init__(self, host): | 34 def __init__(self, host): |
34 base.CommandBase.__init__(self, host, 'set', use_pubsub=True, help=_(u'publish or update a merge request')) | 35 base.CommandBase.__init__(self, host, 'set', use_pubsub=True, |
36 pubsub_defaults = {u'service': _(u'auto'), u'node': _(u'auto')}, | |
37 help=_(u'publish or update a merge request')) | |
35 self.need_loop=True | 38 self.need_loop=True |
36 | 39 |
37 def add_parser_options(self): | 40 def add_parser_options(self): |
38 self.parser.add_argument("-i", "--item", type=base.unicode_decoder, default=u'', help=_(u"id or URL of the request to update, or nothing for a new one")) | 41 self.parser.add_argument("-i", "--item", type=base.unicode_decoder, default=u'', help=_(u"id or URL of the request to update, or nothing for a new one")) |
39 self.parser.add_argument("-r", "--repository", metavar="PATH", type=base.unicode_decoder, default=u'.', help=_(u"path of the repository (DEFAULT: current directory)")) | 42 self.parser.add_argument("-r", "--repository", metavar="PATH", type=base.unicode_decoder, default=u'.', help=_(u"path of the repository (DEFAULT: current directory)")) |
43 self.parser.add_argument("-f", "--force", action="store_true", help=_(u"publish merge request without confirmation")) | |
40 | 44 |
41 def mergeRequestSetCb(self, published_id): | 45 def mergeRequestSetCb(self, published_id): |
42 if published_id: | 46 if published_id: |
43 self.disp(u"Merge request published at {pub_id}".format(pub_id=published_id)) | 47 self.disp(u"Merge request published at {pub_id}".format(pub_id=published_id)) |
44 else: | 48 else: |
45 self.disp(u"Merge request published") | 49 self.disp(u"Merge request published") |
46 self.host.quit(C.EXIT_OK) | 50 self.host.quit(C.EXIT_OK) |
47 | 51 |
48 def start(self): | 52 def sendRequest(self): |
49 repository = os.path.expanduser(os.path.abspath(self.args.repository)) | |
50 extra = {'update': 'true'} if self.args.item else {} | 53 extra = {'update': 'true'} if self.args.item else {} |
51 self.host.bridge.mergeRequestSet( | 54 self.host.bridge.mergeRequestSet( |
52 self.args.service, | 55 self.args.service, |
53 self.args.node, | 56 self.args.node, |
54 repository, | 57 self.repository, |
55 u'auto', | 58 u'auto', |
56 {}, | 59 {}, |
57 u'', | 60 u'', |
58 self.args.item, | 61 self.args.item, |
59 extra, | 62 extra, |
60 self.profile, | 63 self.profile, |
61 callback=self.mergeRequestSetCb, | 64 callback=self.mergeRequestSetCb, |
62 errback=partial(self.errback, | 65 errback=partial(self.errback, |
63 msg=_(u"can't create merge request: {}"), | 66 msg=_(u"can't create merge request: {}"), |
64 exit_code=C.EXIT_BRIDGE_ERRBACK)) | 67 exit_code=C.EXIT_BRIDGE_ERRBACK)) |
68 | |
69 def askConfirmation(self): | |
70 if not self.args.force: | |
71 message = _(u"You are going to publish your changes to service [{service}], are you sure ?").format( | |
72 service=self.args.service) | |
73 self.host.confirmOrQuit(message, _(u"merge request publication cancelled")) | |
74 self.sendRequest() | |
75 | |
76 def start(self): | |
77 self.repository = os.path.expanduser(os.path.abspath(self.args.repository)) | |
78 common.URIFinder(self, self.repository, 'merge requests', self.askConfirmation) | |
65 | 79 |
66 | 80 |
67 class Get(base.CommandBase): | 81 class Get(base.CommandBase): |
68 | 82 |
69 def __init__(self, host): | 83 def __init__(self, host): |