Skip to content

Commit 5f10345

Browse files
committed
auto generate table
1 parent dfee82e commit 5f10345

File tree

5 files changed

+47
-10
lines changed

5 files changed

+47
-10
lines changed

.github/workflows/hugo.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ jobs:
3333
env:
3434
HUGO_VERSION: 0.118.2
3535
steps:
36+
- uses: actions/setup-python@v5
37+
with:
38+
python-version: "3.12"
39+
- run: python generate-table.py
3640
- name: Install Hugo CLI
3741
run: |
3842
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \

content/docs/introduction/_table.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
|||
2+
|-|-|-|
3+
[AWS](/docs/tutorials/aws)|[Airbrake](/docs/tutorials/airbrake)|[Atlassian](/docs/tutorials/atlassian)|
4+
[Azure DevOps](/docs/tutorials/azuredevops)|[Azure Function](/docs/tutorials/azurefunctionkey)|[Azure Storage](/docs/tutorials/azure)|
5+
[GCP](/docs/tutorials/gcp)|[GitHub](/docs/tutorials/github)|[GitLab](/docs/tutorials/gitlab)|
6+
[Mailchimp](/docs/tutorials/mailchimp)|[MaxMind](/docs/tutorials/maxmind)|[Microsoft Teams](/docs/tutorials/microsoftteams)|
7+
[MongoDB](/docs/tutorials/mongo)|[NPM](/docs/tutorials/npm)|[Netlify](/docs/tutorials/netlify)|
8+
[Sendbird](/docs/tutorials/sendbird)|[Sendgrid](/docs/tutorials/sendgrid)|[Slack Webhook](/docs/tutorials/slack-webhook)|
9+
[Slack](/docs/tutorials/slack)|[Sourcegraph](/docs/tutorials/sourcegraph)|[Square](/docs/tutorials/square)|
10+
[Stripe](/docs/tutorials/stripe)|[Sumo Logic](/docs/tutorials/sumologic)|[Tailscale](/docs/tutorials/tailscale)|
11+
[Twilio](/docs/tutorials/twilio)|

content/docs/introduction/getting-started.md

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,8 @@ weight: 1
66
Welcome to [**How To Rotate**](https://github.com/trufflesecurity/how-to-rotate), an open-source collection of API Key Rotation tutorials. Each tutorial provides step-by-step instructions on how to remediate a leaked API key security vulnerability by (1) Generating a new API key, (2) Replacing the compromised key, and (3) Revoking the compromised key.
77

88
To get started, click on a key rotation tutorial for a specific SaaS provider below or [read more about key rotation](/docs/introduction/key-rotation-101).
9-
|||
10-
|-|-|-|
11-
|[Airbrake](/docs/tutorials/airbrake)|[Atlassian](/docs/tutorials/atlassian)|[AWS](/docs/tutorials/aws)|
12-
[Azure Storage](/docs/tutorials/azure)|[Azure DevOps](/docs/tutorials/azuredevops)|[Azure Functions](/docs/tutorials/azurefunctionkey)|
13-
[GCP](/docs/tutorials/gcp)|[GitHub](/docs/tutorials/github)|[GitLab](/docs/tutorials/gitlab)|
14-
[Mailchimp](/docs/tutorials/mailchimp)|[Microsoft Teams](/docs/tutorials/microsoftteams)|[MongoDB](/docs/tutorials/mongo)|
15-
|[Netlify](/docs/tutorials/netlify)|[NPM](/docs/tutorials/npm)|[Sendbird](/docs/tutorials/sendbird)|
16-
[Sendgrid](/docs/tutorials/sendgrid)|[Slack](/docs/tutorials/slack)|[Slack Webhook](/docs/tutorials/slack-webhook)|
17-
[Sourcegraph](/docs/tutorials/sourcegraph)|[Square](/docs/tutorials/square)|[Stripe](/docs/tutorials/stripe)|
18-
[Sumo Logic](/docs/tutorials/sumologic)|[Tailscale](/docs/tutorials/tailscale)|[Twilio](/docs/tutorials/twilio)||
9+
10+
{{% includemarkdown "_table.md" %}}
1911

2012
---
2113

generate-table.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/usr/bin/env python3
2+
3+
import os
4+
import re
5+
6+
# Assuming the script is being run from the content/docs/tutorials/ directory
7+
directory = 'content/docs/tutorials'
8+
files = os.listdir(directory)
9+
10+
table = []
11+
for file in sorted(files):
12+
if file.endswith('.md'):
13+
with open(f"{directory}/{file}", 'r') as f:
14+
content = f.read()
15+
title_search = re.search(r"title:\s*(.*)\n", content)
16+
if title_search:
17+
title = title_search.group(1)
18+
if title != "Tutorials":
19+
table.append(f"[{title}](/docs/tutorials/{file.replace('.md', '')})")
20+
21+
table.sort()
22+
23+
output = "|||\n|-|-|-|\n"
24+
for i in range(0, len(table), 3):
25+
output += '|'.join(table[i:i+3]) + '|\n'
26+
27+
with open("content/docs/introduction/_table.md", 'w') as f:
28+
f.write(output)
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
{{ $file := .Get 0 }}
2+
{{ (printf "%s%s" .Page.File.Dir $file) | readFile | replaceRE "^---[\\s\\S]+?---" "" | safeHTML }}

0 commit comments

Comments
 (0)