build-tools icon indicating copy to clipboard operation
build-tools copied to clipboard

Generator needs better support for internal and spec links.

Open Oberon00 opened this issue 5 years ago • 10 comments

See https://github.com/open-telemetry/opentelemetry-specification/pull/1192

The markdown generator would need to be passed an URL prefix that is treated as root which is relatively linkable. Semantic conventions would contain absolute links (i.e. revert that part of https://github.com/open-telemetry/opentelemetry-specification/pull/1192).

Other generators should support replacing an URL prefix e.g. https://github.com/open-telemetry/opentelemetry-specification/tree/master/ to https://github.com/open-telemetry/opentelemetry-specification/tree/v0.6/.

Oberon00 avatar Nov 04 '20 12:11 Oberon00

In addition, it would be very helpful if there were a way to change links from being markdown to being standard html links.

jkwatson avatar Jul 09 '21 17:07 jkwatson

@jkwatson I did not know myself, but we already merged support for that: https://github.com/open-telemetry/build-tools/blob/main/semantic-conventions/src/opentelemetry/semconv/templating/code.py#L28

Oberon00 avatar Jul 12 '21 14:07 Oberon00

@jkwatson I did not know myself, but we already merged support for that: https://github.com/open-telemetry/build-tools/blob/main/semantic-conventions/src/opentelemetry/semconv/templating/code.py#L28

I looked through the code a bunch last week, but isn't that method for "rendering markdown", not the jinja templates?

jkwatson avatar Jul 12 '21 14:07 jkwatson

That function is made available to the code generator template here: https://github.com/open-telemetry/build-tools/blob/main/semantic-conventions/src/opentelemetry/semconv/templating/code.py#L204

So you should be able to do {{attr.brief | render_markdown()}} in the Jinja template.

Oberon00 avatar Jul 12 '21 15:07 Oberon00

That function is made available to the code generator template here: https://github.com/open-telemetry/build-tools/blob/main/semantic-conventions/src/opentelemetry/semconv/templating/code.py#L204

So you should be able to do {{attr.brief | render_markdown()}} in the Jinja template.

I'll give it a whirl and see how it goes. I never would have found that particular bit of code, or had any idea how to use it. Thanks for the pointer!

jkwatson avatar Jul 12 '21 15:07 jkwatson

Yeah, the docs are lacking 😔

Oberon00 avatar Jul 12 '21 15:07 Oberon00

Unfortunately, render_markdown doesn't render it in a javadoc-friendly manner. it escapes all the html tags, even ones that are good for javadoc (<p> and <code> for instance). Is there a magic way to stop that from happening?

jkwatson avatar Jul 12 '21 17:07 jkwatson

It looks like you might be able to pass in a function for formatting the particular bits...not sure how to call that from a jinja template, but I'm still poking at it.

jkwatson avatar Jul 12 '21 17:07 jkwatson

I got something sort-of working: https://github.com/open-telemetry/opentelemetry-java/pull/3394

jkwatson avatar Jul 12 '21 19:07 jkwatson

We discussed some of this in a recent small-group on Semantic Convention Tooling. I think we'll need to tear this feature request into pieces, but a few points:

  1. Semconv URLs in markdown must support the website (opentelemtery.io) rewrite rules. Whatever we generate in build-tools should be compatible in someway there.
  2. We want to tie specific versions of semconv to specific versions of the specification, so making sure links to the specification all come from the same version is important. As such, a general command line argument is best.
  3. Today - the "is_local" flag that infers if the markdown + yaml match the same directory structure is a bit too "tied together". Since we've decided to move towards an attribute registry, we think:
    • There should be a consistent "shape" to the registry
    • The registry should be built with templates vs. manually creating Markdown and embedding templates
    • Markdown snippet generation we use in docs for semconv should simple know the rules for how to link to the attribtue registry, but we won't use snippet generation to PRODUCE the attribute registry going forward.

Given this - I think we should split this feature request apart between "internal" and "spec" links.

Specifically:

  • One feature request to have build-tools provide a specification "base" URL and relative link from that within semconv.
  • Another feature to provide the attribtue registry "base" URL for synthesizing links to attirbute registry from markdown snippets or generated code.

jsuereth avatar Mar 25 '24 13:03 jsuereth