Increasing complexity
A small issue snowballs because I want independence
Increasing Complexity
START TIME: 2024-01-18 01:09
A couple of small issues with formatting showed up in the last post
Footnotes…
…and strikethrough…
do not render right with blag. The solution is superficially quite simple. I’ve already got it working locally. All you have to do, is install a python package called pymdown-extensions
and change a single array in blag’s source code:
# from this...
def markdown_factory() -> Markdown:
"""Create a Markdown instance.
This method exists only to ensure we use the same Markdown instance
for tests as for the actual thing.
Returns
-------
markdown.Markdown
"""
md = Markdown(
extensions=[
"meta",
"fenced_code",
"codehilite",
"smarty",
MarkdownLinkExtension(),
],
output_format="html",
)
return md
# to this...
def markdown_factory() -> Markdown:
"""Create a Markdown instance.
This method exists only to ensure we use the same Markdown instance
for tests as for the actual thing.
Returns
-------
markdown.Markdown
"""
md = Markdown(
extensions=[
"footnotes", # Add footnotes support
"pymdownx.tilde", # Add strukethrough support
"meta",
"fenced_code",
"codehilite",
"smarty",
MarkdownLinkExtension(),
],
output_format="html",
)
return md
That’s fuckin’ it. But, to actually get this package into my automation pipeline, I have to do a couple things. I can’t just open an issue or make a pull request on github, because I uhm.... don’t have a github account. So the process looks something like this:
- Create my own fork of blag hosted on my gitea
- Change the fork to have my modifications
- Change the build process, as the current process uses a
Makefile
which I do not understand nor care to use. I’d rather use asetup.py
file and pipenv. - Upload the build to my private package repo
- Configure my workflow to allow pipenv to grab from my private repo
This isn’t my first rodeo with setting these things up, though. I’ve got a similar build pipeline going for another private python package i call bootleg-jwt
. Most everything is actually taken care of for me in the config files in that project. The difficult spots will be steps 1 and 5. The fork is a slight annoyance because I need to first create a new gitea organization, move blag to it, and then fork it. Its currently mirrored directly to my user profile as freyja/blag
but I can’t fork from a repo that my user already owns.
Okay. Enough talk, already! Lets do this!
Actually doing the thing
So all that stuff I was talking about before was more-or-less me brainstorming what I needed to do. Here’s some reporting back from me doing the stuff.
Getting my fork on my package repo
Turns out, the makefile is fine. Super easy. Just gotta hit it with a make
command and its primo. So what I did, was I made the mirrors org and moved my blag mirror over there. Then I forked it to my personal gitea account. Then I cloned the fork, and made a v2.3.0
branch because it was on v2.2.x
. I updated the version in the source. Then I added the dependency for the new package pymdown-extensions
in the appropriate files. Then I modified the markdown.py
file to include the footnotes
and pymdownx.tilde
(strikethrough) extensions. Then I ran the makefile, which did its magic and made the stuff. Then I simply run twine to upload to my personal gitea package repo. Done. Version 2.3.0 is on my repo.
As far as updating the workflow: In getting pipenv to grab from my private gitea repo, I’ve had to insert a couple environment variables into my pipfile. That’s convenient. I can simply add them to the workflow like so:
-
name: Install pipenv, build blog...
env:
PIPENV_USER: ${{ secrets.PRODUCTION_REGISTRY_USERNAME }} #ADDED
PIPENV_PASS: ${{ secrets.PRODUCTION_REGISTRY_TOKEN }} # ADDED
run: |
pip install pipenv
pipenv install
pipenv run blag build
And that should take care of it.
You’ll know this has worked when:
- You can see this blog post
strikethrough text works- footnotes1 work.
END TIME: 2024-01-18 02:48
-
Footnotes are these thingies right here. ↩