Re: Custom subcommand help handlers
- From
- Erik Cervin Edin <erik@cervined.in>
- Date
- Dec 23, 2021, 11:33 UTC
- Message-ID
- <CA+JQ7M826Wj3Lq8XEr1w9quj9vM6EWH9ivSfvaXYrkh1dA2vfg@mail.gmail.com>
- In-Reply-To
- <xmqq35mkdvsu.fsf@gitster.g>
> I do not know what your 'w' is.
Sorry, I was unclear. With exit code 0
I was experimenting to see if you could use an external alias to force --help to be passed to cmd.
But you can't because
if (!exclude_guides || alias[0] == '!') {
printf_ln(_("'%s' is aliased to '%s'"), cmd, alias);
free(alias);
exit(0);
}Which is probably reasonable
On Thu, Dec 23, 2021 at 1:11 AM Junio C Hamano <gitster@pobox.com> wrote:
Show 65 quoted lines
>
> Erik Cervin Edin <erik@cervined.in> writes:
>
> > Another observation.
> >
> > This also applies to external aliases
> > git -c alias.fr='!git-filter-repo' fr --help
> > returns
> > 'fr' is aliased to '!git-filter-repo'
> > w exit code 0
>
> I do not know what your 'w' is. To me I get
>
> $ git -c alias.fr='!git-filter-repo' fr --help
> 'fr' is aliased to '!git-filter-repo'
>
> which is consistent with what I get for other aliases, e.g.
>
> $ git -c alias.lg='log --oneline' lg --help
> 'lg' is aliased to 'log --oneline'
>
> folowed by whatever "log --help" would give us.
>
> So hopefully when your 'w' learns to show the documentation for
> 'git-filter-repo' command, such an alias would also work as
> expected, no?
>
> Anyway, unlike "man" and "info" where there is a standard way to
> tell the command that "I have documentation pages in these places"
> so that additional documentation can be installed to locations the
> user chooses (and has access to), the "web" format viewers are
> invoked without such customizability, i.e. in builtin/help.c, we see
> this code snippet:
>
> static void get_html_page_path(struct strbuf *page_path, const char *page)
> {
> struct stat st;
> char *to_free = NULL;
>
> if (!html_path)
> html_path = to_free = system_path(GIT_HTML_PATH);
>
> /*
> * Check that the page we're looking for exists.
> */
> if (!strstr(html_path, "://")) {
> if (stat(mkpath("%s/%s.html", html_path, page), &st)
> || !S_ISREG(st.st_mode))
> die("'%s/%s.html': documentation file not found.",
> html_path, page);
> }
>
> strbuf_init(page_path, 0);
> strbuf_addf(page_path, "%s/%s.html", html_path, page);
> free(to_free);
> }
>
> It may not be a bad idea to extand the function to understand a new
> GIT_HTML_PATH environment variable, which can be a colon-separated
> list of directories just like MANPATH and INFOPATH are. It would be
> rather trivial to update the block with a call to stat() above to a
> loop over these directories.
>
>
>