Skip to content

Instantly share code, notes, and snippets.

View codeinthehole's full-sized avatar
🌏
The main difference between dinosaurs and us is we're building our own meteor.

David Winterbottom codeinthehole

🌏
The main difference between dinosaurs and us is we're building our own meteor.
View GitHub Profile
@codeinthehole
codeinthehole / prettytitle.sh
Created August 20, 2014 15:16
Bash function for print pretty titles
#!/usr/bin/env bash
# Pretty printing function for Bash output
#
# Example usage:
#
# $ notify "hello world"
#
# +-------------+
# | hello world |
@codeinthehole
codeinthehole / 1pw-item-users
Created June 29, 2022 21:29
Bash script for listing the users who have access to a 1Password item
#!/usr/bin/env bash
#
# Print the users who have access to a given 1Password item.
#
# Usage:
#
# 1pw-item-users "$ITEM_NAME"
#
# Note, the `op` tool must be authenticated before this command is run.
@codeinthehole
codeinthehole / .gitconfig
Last active March 9, 2023 11:27
Git config
[user]
name = David Winterbottom
email = david.winterbottom@gmail.com
[alias]
# SHORT VERSIONS
co = checkout
ci = commit
@codeinthehole
codeinthehole / pull-request-title
Created December 23, 2022 15:47
A Bash script that uses OpenAI's API to generate a pull request title
#!/usr/bin/env bash
#
# Print a title of the current pull request's commits.
#
# - For single commit pull requests, this prints the subject of the commit.
#
# - For multi-commit pull requests, this uses OpenAI's REST API to digest the
# commit messages of the pull request into a single sentence.
#
# Requires an OPENAI_API_KEY env var to authenticate requests - see:
@codeinthehole
codeinthehole / pull-request-summary
Created December 23, 2022 15:46
A Python script that generates a pull request body
#!/usr/bin/env python
#
# Print out a summary of the pull request.
#
# This combines the commit messages and removes the hard wrapping so the text renders better in
# Github's UI. The output won't be suitable as is, but provides a good start for moulding into a
# good description.
import subprocess
@codeinthehole
codeinthehole / github-team-report.sh
Created February 2, 2022 15:34
Open Github pull request list page filtered to closed PRs from the last week from a given team
#!/bin/bash
#
# Script that opens the Github pull request search page filtered to show closed pull
# requests from the last week, from members of a specified set of users.
#
# This can be useful for team leads when writing progress reports.
# Config
# ------
@codeinthehole
codeinthehole / pull-request-summary
Last active December 8, 2022 12:12
Use OpenAI's GPT3 model to generate pull request descriptions.
#!/usr/bin/env bash
#
# Print a summary of the current pull request's commits.
#
# Requires an OPENAI_API_KEY env var to authenticate requests - see:
# https://beta.openai.com/docs/api-reference/authentication
# Commit selection variables.
TARGET_BRANCH=master
@codeinthehole
codeinthehole / gmail-report.js
Last active August 9, 2022 08:28
Google Apps Script for building a CSV report from Gmail threads
// To use this, create a new Apps Script project and paste this script in.
// https://developers.google.com/apps-script
function FetchReport() {
// Define a Gmail search query.
var searchQuery = "cluedo after:2022-01-01"
// Define a predicate that determines when to stop looping.
function shouldWeKeepLooping(thread) {
@codeinthehole
codeinthehole / test_commits.py
Created October 11, 2019 15:52
Sample test module for validating the commits messages on a PR branch
import re
import subprocess
import pytest
@pytest.mark.parametrize(
"subject, error_msg",
[
("WIP: working on something", "is a WIP commit"),
@codeinthehole
codeinthehole / fix-json-frontmatter.py
Created March 3, 2022 14:45
Correctly wrap JSON front-matter in markdown files
#!/usr/bin/env python
#
# Script to wrap JSON front-matter in markdown files with `---` delimiters.
#
# This allows Prettier to be used on the markdown file (and it won't try and format the JSON front
# matter).
#
# I needed this to convert old Hugo markdown files that had JSON front-matter.
import os
import sys