Skip to content

Instantly share code, notes, and snippets.

View PurpleBooth's full-sized avatar

Billie Thompson PurpleBooth

View GitHub Profile
PurpleBooth /
Created February 15, 2023 10:37
Copy labels between repos on github
#!/usr/bin/env bash
set -xeuo pipefail
# Set the source repository
# Set the target repository
PurpleBooth /
Last active March 5, 2023 11:26
I cba with writing my own commit messages anymore
#!/usr/bin/env python
import json
import logging
import subprocess
import sys
import textwrap
from typing import Literal, Sequence, TypedDict, Union
from urllib.error import HTTPError
from urllib.request import Request, urlopen
View snippet.yaml
needs: [ validate ]
contents: write
pull-requests: write
runs-on: ubuntu-latest
if: ${{ == 'dependabot[bot]' && ( github.head_ref || github.ref_name ) != 'main' }}
- name: Enable auto-merge for Dependabot PRs
run: gh pr merge --auto --merge "$PR_URL"
PurpleBooth /
Last active October 4, 2021 17:50
How to use docker in without docker-desktop on mac using lima

First run ths script

Then add an environment variable so tools you use that use docker can find docker

## Add this to your bashrc if you want this to be permenant
export DOCKER_HOST=ssh://localhost:60006

This will need the lima vm for docker running, you can do that by running

PurpleBooth /
Last active September 17, 2021 15:07
Change your default branch on github without checkout anything out

Usage "$GITHUB_TOKEN" PurpleBooth/homebrew-repo

Does not delete the old default branch, or change where pull requests are based from, incase something breaks.

PurpleBooth /
Last active September 8, 2023 20:52
A github workflow pipeline for rust that does test, build and deploy windows, linux and mac, creates releases, and does SemVer Versioning, and releases to a homebrew tap


  • Automatically bump SemVer
  • Update a personal homebrew tap
  • Keep that pesky version in the Cargo.toml up to date
  • (From dependabot) Get new versions out as soon as possible


  • You don't want a changelog
PurpleBooth /
Created April 19, 2020 20:25
Reading git config from global and the containing repo in rust
#!/usr/bin/env run-cargo-script
//! This is a regular crate doc comment, but it also contains a partial
//! Cargo manifest. Note the use of a *fenced* code block, and the
//! `cargo` "language".
//! ```cargo
//! [dependencies]
//! git2 = "0.13"
//! ```
use futures::future::join_all;
use futures::StreamExt;
use reqwest::Client;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug)]
struct ProjectsItem {
hash_id: String,
use std::collections::HashMap;
use futures::{stream, StreamExt};
use reqwest::Client;
use serde::{Deserialize, Serialize};
use std::error::Error;
#[derive(Serialize, Deserialize, Debug)]
struct ProjectsItem {
hash_id: String,
PurpleBooth / 1password
Last active April 16, 2023 03:35
Use sops to cache the one password vault session token because op is horrible to use
View 1password
#!/usr/bin/env bash
set -euo pipefail
OP_LOCATION="$(command -v op)"
mkdir -p "$CACHE_DIR"