Skip to main content

Merge pull request #7 from alexwlchan/more-cog

ID
3e1bb06
date
2023-12-26 12:51:48+00:00
author
Alex Chan <alex@alexwlchan.net>
parents
1dcc7c7, 266084c
message
Merge pull request #7 from alexwlchan/more-cog

Continue using Cog to generate the README files
changed files
5 files, 327 additions, 211 deletions

Changed files

cog_helpers.py (1366) → cog_helpers.py (1585)

diff --git a/cog_helpers.py b/cog_helpers.py
index 84c7de6..e8e5bca 100644
--- a/cog_helpers.py
+++ b/cog_helpers.py
@@ -26,15 +26,19 @@ class ScriptWithUsage(TypedDict):
 Script = ScriptWithName | ScriptWithUsage
 
 
+def outl(s: str, indent: int = 0):
+    cog.outl(textwrap.indent(s, prefix=" " * indent))
+
+
 def create_description_table(
     folder_name: str,
     scripts: list[Script],
     repo_name: str = "alexwlchan/scripts",
     primary_branch: str = "main",
 ) -> None:
-    cog.outl("<dl>")
+    outl("<dl>")
 
-    for s in scripts:
+    for i, s in enumerate(scripts, start=1):
         try:
             name = s["name"]
         except KeyError:
@@ -45,16 +49,20 @@ def create_description_table(
         except KeyError:
             usage = name
 
-        cog.outl("<dt>")
-        cog.outl(
-            f'<a href="https://github.com/{repo_name}/blob/{primary_branch}/{folder_name}/{name}">'
+        outl("<dt>", indent=2)
+        outl(
+            f'<a href="https://github.com/{repo_name}/blob/{primary_branch}/{folder_name}/{name}">',
+            indent=4,
         )
-        cog.outl(f"<code>{usage}</code>")
-        cog.outl("</a>")
-        cog.outl("</dt>")
+        outl(f"<code>{usage}</code>", indent=6)
+        outl("</a>", indent=4)
+        outl("</dt>", indent=2)
+
+        outl("<dd>", indent=2)
+        outl(textwrap.dedent(s["description"]).strip(), indent=4)
+        outl("</dd>", indent=2)
 
-        cog.outl("<dd>")
-        cog.outl(textwrap.dedent(s["description"]).strip())
-        cog.outl("</dd>")
+        if i != len(scripts):
+            outl("")
 
-    cog.outl("</dl>")
+    outl("</dl>")

macos/README.md (5128) → macos/README.md (5436)

diff --git a/macos/README.md b/macos/README.md
index 2f20392..cceac94 100644
--- a/macos/README.md
+++ b/macos/README.md
@@ -71,96 +71,106 @@ cog_helpers.create_description_table(folder_name=folder_name, scripts=scripts)
 
 ]]]-->
 <dl>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/macos/battery">
-<code>battery</code>
-</a>
-</dt>
-<dd>
-alias for <code>pmset -g batt</code>; reports the current battery level
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/macos/close_tabs">
-<code>close_tabs</code>
-</a>
-</dt>
-<dd>
-close ephemeral tabs in Safari – basically, anything that can be easily recreated/reopened later.
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/macos/find_processes_using_secure_input">
-<code>find_processes_using_secure_input</code>
-</a>
-</dt>
-<dd>
-lists any processes using Secure Input, which can block apps like TextExpander
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/macos/get_all_live_text">
-<code>get_all_live_text [directory]</code>
-</a>
-</dt>
-<dd>
-get OCR'd text for all the images in a directory using Live Text
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/macos/get_focus_mode">
-<code>get_focus_mode</code>
-</a>
-</dt>
-<dd>
-prints the current Focus mode
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/macos/get_frontmost_window_title">
-<code>get_frontmost_window_title [APP_NAME]</code>
-</a>
-</dt>
-<dd>
-prints the title of the frontmost window in the named app. This is particularly useful when working with apps that don't support AppleScript.
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/macos/get_live_text [image]">
-<code>get_live_text [image]</code>
-</a>
-</dt>
-<dd>
-get OCR'd text for a single image using Live Text
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/macos/obnote">
-<code>obnote</code>
-</a>
-</dt>
-<dd>
-print the path to the note I currently have open in [Obsidian](https://obsidian.md/), if any.
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/macos/set_accent_colour">
-<code>set_accent_colour (red|orange|yellow|green|blue|purple|pink|graphite)</code>
-</a>
-</dt>
-<dd>
-set the accent colour, as configured in the Appearance settings
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/macos/sterilise">
-<code>sterilise [PATH]</code>
-</a>
-</dt>
-<dd>
-alias for <code>xattr -d com.apple.quarantine</code>
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/macos/unlock_keychain">
-<code>unlock_keychain</code>
-</a>
-</dt>
-<dd>
-alias for <code>security unlock-keychain ~/Library/Keychains/login.keychain</code>; unlocks the login keychain
-<p>
-  The login keychain normally gets unlocked by the OS when you log into your account; this is for when I'm accessing a Mac over SSH.
-</p>
-</dd>
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/macos/battery">
+      <code>battery</code>
+    </a>
+  </dt>
+  <dd>
+    alias for <code>pmset -g batt</code>; reports the current battery level
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/macos/close_tabs">
+      <code>close_tabs</code>
+    </a>
+  </dt>
+  <dd>
+    close ephemeral tabs in Safari – basically, anything that can be easily recreated/reopened later.
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/macos/find_processes_using_secure_input">
+      <code>find_processes_using_secure_input</code>
+    </a>
+  </dt>
+  <dd>
+    lists any processes using Secure Input, which can block apps like TextExpander
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/macos/get_all_live_text">
+      <code>get_all_live_text [directory]</code>
+    </a>
+  </dt>
+  <dd>
+    get OCR'd text for all the images in a directory using Live Text
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/macos/get_focus_mode">
+      <code>get_focus_mode</code>
+    </a>
+  </dt>
+  <dd>
+    prints the current Focus mode
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/macos/get_frontmost_window_title">
+      <code>get_frontmost_window_title [APP_NAME]</code>
+    </a>
+  </dt>
+  <dd>
+    prints the title of the frontmost window in the named app. This is particularly useful when working with apps that don't support AppleScript.
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/macos/get_live_text [image]">
+      <code>get_live_text [image]</code>
+    </a>
+  </dt>
+  <dd>
+    get OCR'd text for a single image using Live Text
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/macos/obnote">
+      <code>obnote</code>
+    </a>
+  </dt>
+  <dd>
+    print the path to the note I currently have open in [Obsidian](https://obsidian.md/), if any.
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/macos/set_accent_colour">
+      <code>set_accent_colour (red|orange|yellow|green|blue|purple|pink|graphite)</code>
+    </a>
+  </dt>
+  <dd>
+    set the accent colour, as configured in the Appearance settings
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/macos/sterilise">
+      <code>sterilise [PATH]</code>
+    </a>
+  </dt>
+  <dd>
+    alias for <code>xattr -d com.apple.quarantine</code>
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/macos/unlock_keychain">
+      <code>unlock_keychain</code>
+    </a>
+  </dt>
+  <dd>
+    alias for <code>security unlock-keychain ~/Library/Keychains/login.keychain</code>; unlocks the login keychain
+    <p>
+      The login keychain normally gets unlocked by the OS when you log into your account; this is for when I'm accessing a Mac over SSH.
+    </p>
+  </dd>
 </dl>
-<!-- [[[end]]] (checksum: f7e1feec3b74bd4146f0910828465cf3) -->
+<!-- [[[end]]] (checksum: f83d99f7ee2b7ffd54416fcc1b1cb01e) -->

terraform/README.md (2776) → terraform/README.md (4454)

diff --git a/terraform/README.md b/terraform/README.md
index 49ce415..3b168dc 100644
--- a/terraform/README.md
+++ b/terraform/README.md
@@ -6,6 +6,60 @@ These scripts are all related to [Terraform], the infrastructure-as-code tool we
 
 ## The individual scripts
 
+<!-- [[[cog
+
+# This adds the root of the repo to the PATH, which has cog_helpers.py
+from os.path import abspath, dirname
+import sys
+
+sys.path.append(abspath(dirname(dirname("."))))
+
+import cog_helpers
+
+folder_name = "terraform"
+
+scripts = [
+    {
+        "name": "tf",
+        "description": "alias for `terraform`",
+    },
+    {
+        "name": "tfi",
+        "description": """
+        alias for <a href="https://developer.hashicorp.com/terraform/cli/commands/init"><code>terraform init</code></a>
+        """,
+    },
+    {
+        "name": "tfp",
+        "description": """
+        alias for <a href="https://developer.hashicorp.com/terraform/cli/commands/plan"><code>terraform plan -out=tfplan</code></a>.
+        I run this before making any changes, so I can review what Terraform is about to do.
+        """,
+    },
+    {
+        "name": "tfa",
+        "description": """
+        alias for <a href="https://developer.hashicorp.com/terraform/cli/commands/apply"><code>terraform apply terraform.plan</code></a>.
+        I only run this after I’ve reviewed the proposed changes from <code>tfp</code>.
+        """,
+    },
+    {
+        "name": "tfmv",
+        "description": """
+        alias for <a href="https://developer.hashicorp.com/terraform/cli/commands/state/mv"><code>terraform state mv</code></a>
+        """,
+    },
+    {
+        "name": "tflint",
+        "description": """
+        alias for the <a href="https://github.com/terraform-linters/tflint">tflint linter</a>, but running inside a Docker container
+        """,
+    },
+]
+
+cog_helpers.create_description_table(folder_name=folder_name, scripts=scripts)
+
+]]]-->
 <dl>
   <dt>
     <a href="https://github.com/alexwlchan/scripts/blob/main/terraform/tf">
@@ -13,7 +67,7 @@ These scripts are all related to [Terraform], the infrastructure-as-code tool we
     </a>
   </dt>
   <dd>
-    alias for <code>terraform</code>
+    alias for `terraform`
   </dd>
 
   <dt>
@@ -31,7 +85,7 @@ These scripts are all related to [Terraform], the infrastructure-as-code tool we
     </a>
   </dt>
   <dd>
-    alias for <a href="https://developer.hashicorp.com/terraform/cli/commands/plan"><code>terraform plan -out=terraform.plan</code></a>.
+    alias for <a href="https://developer.hashicorp.com/terraform/cli/commands/plan"><code>terraform plan -out=tfplan</code></a>.
     I run this before making any changes, so I can review what Terraform is about to do.
   </dd>
 
@@ -63,6 +117,7 @@ These scripts are all related to [Terraform], the infrastructure-as-code tool we
     alias for the <a href="https://github.com/terraform-linters/tflint">tflint linter</a>, but running inside a Docker container
   </dd>
 </dl>
+<!-- [[[end]]] (checksum: b9d70deb03a18bfd0a84a1a3ee918977) -->
 
 ## Choosing between `terraform` and `run_terraform.sh`
 

text/README.md (5777) → text/README.md (6120)

diff --git a/text/README.md b/text/README.md
index 7f45da8..2a208f6 100644
--- a/text/README.md
+++ b/text/README.md
@@ -90,107 +90,118 @@ cog_helpers.create_description_table(folder_name=folder_name, scripts=scripts)
 
 ]]]-->
 <dl>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/text/body">
-<code>body -n [LINENO] [PATH]</code>
-</a>
-</dt>
-<dd>
-print the nth line of a file.
-This is meant to fill a gap between the Unix utilities `head` and `tail`.
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/text/fix_twitter_thread.py">
-<code>fix_twitter_thread.py [PATH]</code>
-</a>
-</dt>
-<dd>
-when I copy/paste a Twitter thread into Obsidian, this does some 
-initial tidying up of the formatting for me.
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/text/fix_whitespace">
-<code>fix_whitespace [PATH]</code>
-</a>
-</dt>
-<dd>
-when I copy/paste text into Obsidian from th web, this cleans up some of the extraneous whitespace.
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/text/midline">
-<code>midline [PATH]</code>
-</a>
-</dt>
-<dd>
-print the line in the middle of a file, e.g. if the file has 5 lines, it prints line 3
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/text/natsize">
-<code>natsize < [NUMBER]</code>
-</a>
-</dt>
-<dd>
-prints a numeric file size as a human-readable string, e.g. `32036032` becomes `32.0 MB`
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/text/noplaylist.py">
-<code>noplaylist.py < [URL]</code>
-</a>
-</dt>
-<dd>
-removes the `list` query parameter from a YouTube URL; I use it with `youtube-dl`
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/text/r">
-<code>r</code>
-</a>
-</dt>
-<dd>
-an alias for `rg`, aka <a href="https://geoff.greer.fm/ag/">the Silver Searcher</a>. (Yes, I really am too lazy to type two whole characters.)
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/text/randline">
-<code>randline [NUMBER] < [PATH]</code>
-</a>
-</dt>
-<dd>
-prints randomly selected lines from the given text. If `NUMBER` is unspecified, it prints a single line.
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/text/reverse">
-<code>reverse < [PATH]</code>
-</a>
-</dt>
-<dd>
-prints the lines of text, but in reverse order.
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/text/sumsizes.py">
-<code>sumsizes.py < [PATH]</code>
-</a>
-</dt>
-<dd>
-prints a human-readable data size for the numbers passed on stdin.
-
-    $ echo -e '100\n 201287\n 3190817' | sumsizes
-    3.4MB
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/text/tally">
-<code>tally < [PATH]</code>
-</a>
-</dt>
-<dd>
-prints a tally of lines in the given text.
-</dd>
-<dt>
-<a href="https://github.com/alexwlchan/scripts/blob/main/text/echo">
-<code>echo [STRING] | utf8info</code>
-</a>
-</dt>
-<dd>
-read UTF-8 on stdin and print out the raw Unicode "
-"codepoints. This is a Docker wrapper around <a href="https://github.com/lunasorcery/utf8info">a tool of the same name</a> by @lunasorcery.
-</dd>
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/text/body">
+      <code>body -n [LINENO] [PATH]</code>
+    </a>
+  </dt>
+  <dd>
+    print the nth line of a file.
+    This is meant to fill a gap between the Unix utilities `head` and `tail`.
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/text/fix_twitter_thread.py">
+      <code>fix_twitter_thread.py [PATH]</code>
+    </a>
+  </dt>
+  <dd>
+    when I copy/paste a Twitter thread into Obsidian, this does some 
+    initial tidying up of the formatting for me.
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/text/fix_whitespace">
+      <code>fix_whitespace [PATH]</code>
+    </a>
+  </dt>
+  <dd>
+    when I copy/paste text into Obsidian from th web, this cleans up some of the extraneous whitespace.
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/text/midline">
+      <code>midline [PATH]</code>
+    </a>
+  </dt>
+  <dd>
+    print the line in the middle of a file, e.g. if the file has 5 lines, it prints line 3
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/text/natsize">
+      <code>natsize < [NUMBER]</code>
+    </a>
+  </dt>
+  <dd>
+    prints a numeric file size as a human-readable string, e.g. `32036032` becomes `32.0 MB`
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/text/noplaylist.py">
+      <code>noplaylist.py < [URL]</code>
+    </a>
+  </dt>
+  <dd>
+    removes the `list` query parameter from a YouTube URL; I use it with `youtube-dl`
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/text/r">
+      <code>r</code>
+    </a>
+  </dt>
+  <dd>
+    an alias for `rg`, aka <a href="https://geoff.greer.fm/ag/">the Silver Searcher</a>. (Yes, I really am too lazy to type two whole characters.)
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/text/randline">
+      <code>randline [NUMBER] < [PATH]</code>
+    </a>
+  </dt>
+  <dd>
+    prints randomly selected lines from the given text. If `NUMBER` is unspecified, it prints a single line.
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/text/reverse">
+      <code>reverse < [PATH]</code>
+    </a>
+  </dt>
+  <dd>
+    prints the lines of text, but in reverse order.
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/text/sumsizes.py">
+      <code>sumsizes.py < [PATH]</code>
+    </a>
+  </dt>
+  <dd>
+    prints a human-readable data size for the numbers passed on stdin.
+
+        $ echo -e '100\n 201287\n 3190817' | sumsizes
+        3.4MB
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/text/tally">
+      <code>tally < [PATH]</code>
+    </a>
+  </dt>
+  <dd>
+    prints a tally of lines in the given text.
+  </dd>
+
+  <dt>
+    <a href="https://github.com/alexwlchan/scripts/blob/main/text/echo">
+      <code>echo [STRING] | utf8info</code>
+    </a>
+  </dt>
+  <dd>
+    read UTF-8 on stdin and print out the raw Unicode "
+    "codepoints. This is a Docker wrapper around <a href="https://github.com/lunasorcery/utf8info">a tool of the same name</a> by @lunasorcery.
+  </dd>
 </dl>
-<!-- [[[end]]] (checksum: 1ac648df181fdf4aea491bce61f10523) -->
\ No newline at end of file
+<!-- [[[end]]] (checksum: 6abfdf25169d3fba58601dec88f4bd9f) -->
\ No newline at end of file

textexpander/README.md (791) → textexpander/README.md (1695)

diff --git a/textexpander/README.md b/textexpander/README.md
index d70e24b..f9c3141 100644
--- a/textexpander/README.md
+++ b/textexpander/README.md
@@ -4,9 +4,40 @@ These scripts I invoke as text expansion macros in [TextExpander](https://textex
 
 ## The individual scripts
 
+<!-- [[[cog
+
+# This adds the root of the repo to the PATH, which has cog_helpers.py
+from os.path import abspath, dirname
+import sys
+
+sys.path.append(abspath(dirname(dirname("."))))
+
+import cog_helpers
+
+folder_name = "textexpander"
+
+scripts = [
+    {
+        "name": "get_mastodon_text.py",
+        "description": """
+        print a Markdown-formatted blockquote of a Mastodon I've got open in Safari, suitable for pasting into Obsidian
+        """,
+    },
+    {
+        "name": "get_safari_url.py",
+        "description": """
+        print the URL in my frontmost Safari window.
+        This makes a couple of tweaks to tidy up the URL, e.g. remove tracking parameters and tidy up some Jekyll stuff for my personal site.
+        """,
+    },
+]
+
+cog_helpers.create_description_table(folder_name=folder_name, scripts=scripts)
+
+]]]-->
 <dl>
   <dt>
-    <a href="https://github.com/alexwlchan/scripts/blob/main/obsidian/get_mastodon_text.py">
+    <a href="https://github.com/alexwlchan/scripts/blob/main/textexpander/get_mastodon_text.py">
       <code>get_mastodon_text.py</code>
     </a>
   </dt>
@@ -15,7 +46,7 @@ These scripts I invoke as text expansion macros in [TextExpander](https://textex
   </dd>
 
   <dt>
-    <a href="https://github.com/alexwlchan/scripts/blob/main/obsidian/get_safari_url.py">
+    <a href="https://github.com/alexwlchan/scripts/blob/main/textexpander/get_safari_url.py">
       <code>get_safari_url.py</code>
     </a>
   </dt>
@@ -24,3 +55,4 @@ These scripts I invoke as text expansion macros in [TextExpander](https://textex
     This makes a couple of tweaks to tidy up the URL, e.g. remove tracking parameters and tidy up some Jekyll stuff for my personal site.
   </dd>
 </dl>
+<!-- [[[end]]] (checksum: 92cb9f2e13db3a692bf3b95b32c5c773) -->