lncli: only add additional info to specific cmds.

We only append the chan_id and the human readable scid
for the commands `listchannels` and `closedchannels`. This
ensures that other commands like `buildroute` are not affected
by this change so their output can be piped into other cmds.

For some cmds it is not very practical to replace the json output
because we might pipe it into other commands. For example when
creating the route we want to pipe the result of buildroute into
sendtoRoute.
This commit is contained in:
ziggie 2025-02-10 09:39:50 +01:00
parent d10ab03b75
commit 3562767b23
No known key found for this signature in database
GPG key ID: 1AFF9C4DCED6D666
2 changed files with 19 additions and 2 deletions

View file

@ -1254,6 +1254,7 @@ func queryRoutes(ctx *cli.Context) error {
}
printRespJSON(route)
return nil
}

View file

@ -212,6 +212,7 @@ func printJSON(resp interface{}) {
_, _ = out.WriteTo(os.Stdout)
}
// printRespJSON prints the response in a json format.
func printRespJSON(resp proto.Message) {
jsonBytes, err := lnrpc.ProtoJSONMarshalOpts.Marshal(resp)
if err != nil {
@ -219,6 +220,21 @@ func printRespJSON(resp proto.Message) {
return
}
// Make the custom data human readable.
jsonBytesReplaced := replaceCustomData(jsonBytes)
fmt.Printf("%s\n", jsonBytesReplaced)
}
// printModifiedProtoJSON prints the response with some additional formatting
// and replacements.
func printModifiedProtoJSON(resp proto.Message) {
jsonBytes, err := lnrpc.ProtoJSONMarshalOpts.Marshal(resp)
if err != nil {
fmt.Println("unable to decode response: ", err)
return
}
// Replace custom_channel_data in the JSON.
jsonBytesReplaced := replaceCustomData(jsonBytes)
@ -1853,7 +1869,7 @@ func ListChannels(ctx *cli.Context) error {
return err
}
printRespJSON(resp)
printModifiedProtoJSON(resp)
return nil
}
@ -1915,7 +1931,7 @@ func closedChannels(ctx *cli.Context) error {
return err
}
printRespJSON(resp)
printModifiedProtoJSON(resp)
return nil
}