release-engineers/action-template
action-template runs the Jinja2 templating engine against any given files during a GitHub workflow, and makes the GitHub context available to it.
Usage
action-template can be used as a GitHub Action;
name: Sample Workflow
on:
push:
branches:
- master
permissions:
contents: write
jobs:
templating:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
ref: master
- uses: release-engineers/action-template@v2
with:
source: 'README.md.template'
target: 'README.md'
- shell: bash
run: |
git config --global --add safe.directory '*'
git config --local user.name 'github-actions[bot]'
git config --local user.email 'github-actions[bot]@users.noreply.github.com'
git add README.md
if git commit --no-verify -m "docs: Regenerate README.md"; then
# rebase and push in a retry loop
for i in {1..5}; do
git pull --rebase && git push && break || sleep 1
done
fi
Features
GitHub Context
The GitHub context available to workflows is also available to templates like so;
{{ github.repository }}
When evaluated becomes:
release-engineers/action-template
Load Files
The example workflow under the Usage paragraph was loaded using;
{{ load('.github/workflows/example.yml') }}
Load JSON
Parse and handle JSON data from files in the working directory like so;
{{ load_json('tests/data/data.json').info.from_json }}
When evaluated becomes:
This text is a JSON value in a file.
Load YAML
Parse and handle YAML data from files in the working directory like so;
{{ load_yaml('tests/data/data.yml').info.from_yaml }}
When evaluated becomes:
This text is a YAML value in a file
Load Markdown Table of Contents as HTML
Parse and obtain a Markdown table of contents from files in the working directory like so;
{{ load_markdown_toc('tests/data/data.md') }}
When evaluated becomes:
<div class="toc">
<ul>
<li><a href="#header-one">Header One</a><ul>
<li><a href="#header-two">Header Two</a><ul>
<li><a href="#header-three">Header Three</a></li>
<li><a href="#header-three-two">Header Three, Two</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
Load Markdown Table of Contents as data
Parse and handle Markdown table of contents data from files in the working directory like so;
{{ load_markdown_toc_tokens('tests/data/data.md') }}
When evaluated becomes:
[{'level': 1, 'id': 'header-one', 'name': 'Header One', 'children': [{'level': 2, 'id': 'header-two', 'name': 'Header Two', 'children': [{'level': 3, 'id': 'header-three', 'name': 'Header Three', 'children': []}, {'level': 3, 'id': 'header-three-two', 'name': 'Header Three, Two', 'children': []}]}]}]
Contributing
This is a Python Poetry project using Fire. See Poetry for more information.
Development requires:
Links
This project was created using template-poetry.
Metadata
Release files for re-action-template 2.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| re_action_template-2.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Release files / re_action_template-2.1.3-py3-none-any.whl
| Download URL | re_action_template-2.1.3-py3-none-any.whl |
|---|---|
| Size | 14.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
03f881662487c58a01d12a2c0186f9640b2d2ec51f7a25bfd3191b00b5ed64d8
|
|
BLAKE2b-256 checksum How to use checksums |
e241a4255ed2ca69ce5a0579923520878089cd873ef7d9dc53f50ccfbb4e3976
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.5.1 CPython/3.11.4 Linux/5.15.0-1041-azure
|