Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Newbie question: how to _really_ change CommandHelpTemplate and where did AppHelpTemplate go? (v3) #2062

Open
GwynethLlewelyn opened this issue Feb 22, 2025 · 1 comment
Labels
area/v3 relates to / is being considered for v3 kind/discussion is for discussion kind/question someone asking a question status/triage maintainers still need to look into this

Comments

@GwynethLlewelyn
Copy link

GwynethLlewelyn commented Feb 22, 2025

Hi there 👋 I'm currently using v3 to do some quick & dirty CLI applications. I've been often overwhelmed by the sheer size and complexity of this package, considering that the 'official' documentation just covers the bare essentials, and there are levels and levels of goodies hidden below the surface, if only you can understand how they all fit together.

A few of my odd experiments are targeted to a non-English-speaking audience. While I'm well aware that the whole issue of internationalisation/localisation of cli is postponed sine die, I have some questions regarding the proper use of the template system, with which a lot can already been done (and, most importantly, tweaked for specific purposes.

I seem to have no issues whatsoever with RootCommandHelpTemplate — I can change it at will, and even those non-public templates it pulls in can be simply copied & pasted to the template (and then freely edited), and the 'root' or 'main' help does, indeed, use this template.

Changing CommandHelpTemplate is another story: when I call my 'override' at the very beginning — i.e., before any command has been defined, it simply gets completely ignored, and the package continues to use its internally defined one. I haven't delved deep into the code to try to understand why.

If called just before cli.Run() is called, then it does work — almost always. It just fails when calling help for a second alias, something that probably nobody in their right mind will have anyway. In my case, I discovered that by sheer luck — since, besides the usual help command, with the h alias, I had defined another one, ajuda, which stands for, well, 'help', in Portuguese 🇵‍🇹 .

More specifically, as far as I can test:

Command & parameters Template being used
my-cmd help oneCmd My overridden template
my-command help help My overridden template
my-command help h My overridden template
my-command help ajuda Original template
my-command ajuda help My overridden template

Curious, isn't it? (as said, I didn't look up the code for displaying help for the help aliases).

Last question... what exactly is the AppHelpTemplate, and under which circumstances can it be used? It figures extensively in the documentation (and elsewhere), but I can't find it anywhere in the v3 code itself. Is it something specific to pre-v3 versions, and just not consistently updated elsewhere? Was this template discontinued — or replaced by a different one? If so, what's the name of the replacement, please? I can't find anything similarly named — certainly it's not on templates.go for sure.

Alas, now I just need all other templates to be able to be overridden as well, and then I'll be a happy girl 👯‍♀️👧🤗
Maybe for v4...

@GwynethLlewelyn GwynethLlewelyn added area/v2 relates to / is being considered for v2 kind/question someone asking a question status/triage maintainers still need to look into this labels Feb 22, 2025
@dearchap dearchap added kind/discussion is for discussion area/v3 relates to / is being considered for v3 and removed area/v2 relates to / is being considered for v2 labels Feb 23, 2025
@dearchap
Copy link
Contributor

@GwynethLlewelyn thank you for the thorough post. I'm AFK so I can't reply to each and every point right now but I'll try to get to them in the next day or so. Some quick thoughts, AppHelpTemplate is for v2 versions only. It's been removed in v3 and the SubcommandTemplate/CommandTemplate will be used depending on whether the root command has sub commands or not . i8n is a different beast. I've tried to work on it many times but ran into issues so I'm unable to pursue it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/v3 relates to / is being considered for v3 kind/discussion is for discussion kind/question someone asking a question status/triage maintainers still need to look into this
Projects
None yet
Development

No branches or pull requests

2 participants