'Adds a result callback to the chain command.  By default if a
result callback is already registered this will chain them but
this can be disabled with the `replace` parameter.  The result
callback is invoked with the return value of the subcommand
(or the list of return values from all subcommands if chaining
is enabled) as well as the parameters as they would be passed
to the main callback.
Example::
@click.group()
@click.option(\'-i\', \'--input\', default=23)
def cli(input):
return 42
@cli.resultcallback()
def process_result(result, input):
return result + input
.. versionadded:: 3.0
:param replace: if set to `True` an already existing result
callback will be removed.'

def resultcallback(self, replace=False):

    def decorator(f):
        old_callback = self.result_callback
        if ((old_callback is None) or replace):
            self.result_callback = f
            return f
        def function(__value, *args, **kwargs):
            return f(old_callback(__value, *args, **kwargs), *args, **kwargs)
        self.result_callback = rv = update_wrapper(function, f)
        return rv
    return decorator
