hgext/logtoprocess.py
changeset 40620 b2e5a554bc7b
parent 40619 fbac323eb625
child 40622 d2c997b8001f
equal deleted inserted replaced
40619:fbac323eb625 40620:b2e5a554bc7b
    32 
    32 
    33 """
    33 """
    34 
    34 
    35 from __future__ import absolute_import
    35 from __future__ import absolute_import
    36 
    36 
    37 import itertools
       
    38 import os
    37 import os
    39 
    38 
       
    39 from mercurial import (
       
    40     pycompat,
       
    41 )
    40 from mercurial.utils import (
    42 from mercurial.utils import (
    41     procutil,
    43     procutil,
    42 )
    44 )
    43 
    45 
    44 # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
    46 # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
    68                         # Failed to apply the arguments, ignore
    70                         # Failed to apply the arguments, ignore
    69                         formatted = msg[0]
    71                         formatted = msg[0]
    70                     messages = (formatted,) + msg[1:]
    72                     messages = (formatted,) + msg[1:]
    71                 else:
    73                 else:
    72                     messages = msg
    74                     messages = msg
       
    75                 env = {
       
    76                     b'EVENT': event,
       
    77                     b'HGPID': os.getpid(),
       
    78                 }
    73                 # positional arguments are listed as MSG[N] keys in the
    79                 # positional arguments are listed as MSG[N] keys in the
    74                 # environment
    80                 # environment
    75                 msgpairs = (
    81                 env.update((b'MSG%d' % i, m) for i, m in enumerate(messages, 1))
    76                     ('MSG{0:d}'.format(i), m)
       
    77                     for i, m in enumerate(messages, 1))
       
    78                 # keyword arguments get prefixed with OPT_ and uppercased
    82                 # keyword arguments get prefixed with OPT_ and uppercased
    79                 optpairs = (
    83                 env.update((b'OPT_%s' % key.upper(), value)
    80                     ('OPT_{0}'.format(key.upper()), value)
    84                            for key, value in pycompat.byteskwargs(opts).items())
    81                     for key, value in opts.iteritems())
       
    82                 env = dict(itertools.chain(msgpairs, optpairs),
       
    83                            EVENT=event, HGPID=os.getpid())
       
    84                 fullenv = procutil.shellenviron(env)
    85                 fullenv = procutil.shellenviron(env)
    85                 procutil.runbgcommand(script, fullenv, shell=True)
    86                 procutil.runbgcommand(script, fullenv, shell=True)
    86             return super(logtoprocessui, self).log(event, *msg, **opts)
    87             return super(logtoprocessui, self).log(event, *msg, **opts)
    87 
    88 
    88     # Replace the class for this instance and all clones created from it:
    89     # Replace the class for this instance and all clones created from it: