config actions: guard against names with unexpected slashes
commita96234d62f5a8e49ada748212ad98ac46d4268d9
authorDavid Aguilar <davvid@gmail.com>
Sun, 21 Nov 2021 06:43:01 +0000 (20 22:43 -0800)
committerDavid Aguilar <davvid@gmail.com>
Sun, 21 Nov 2021 07:03:39 +0000 (20 23:03 -0800)
tree9c893018e22188fbf43e7a892254095f950844d2
parent56edacbb4ee5597700fbe31afa724449dcc93c0b
config actions: guard against names with unexpected slashes

It is possible to configure guitools so that their names have leading,
trailing and embedded series of multiple slashes. For example:

    git config gui.tool.///Meow///Cat///cmd 'cat meow.txt'

This configuration creates chains of empty menus and an empty name for
the final action. It is better to treat this as if the user had
configured "Meow/Cat" when building the menus and actions.

Guard against unexpected slashes in guitool names by normalizing the
names before building menus for them. Make this change in the
presentaiton layer. The underlying gitcfg APIs continue to return
the raw names with the original slashes.

This will result in duplicate menu actions if both "Meow/Cat" and
"Meow///Cat" are configured, but that is an acceptable tradeoff.

Related-to: #1150
Signed-off-by: David Aguilar <davvid@gmail.com>
cola/utils.py
cola/widgets/main.py