Skip to content

Instantly share code, notes, and snippets.

View peterwwillis's full-sized avatar

Peter W peterwwillis

View GitHub Profile
@peterwwillis
peterwwillis / git-prune.sh
Created July 28, 2018 18:58
Prune Git's local orphan references, merged feature branches, remote tracking references, and more
#!/bin/bash
# Prune local orphan refs
git prune -v
# Deletes all stale (local) remote-tracking branches under origin.
# These stale branches have already been removed from the remote repository
# referenced by <name>, but are still locally available.
git remote prune origin
#!/bin/bash
# Export your bookmarks into a bookmarks.html file and pass it to this script
BOOKMARKS_FILE="$1"
wget -v --tries=1 --convert-links --adjust-extension --page-requisites --no-parent --timestamping --no-remove-listing --no-clobber --force-html -i "$BOOKMARKS_FILE" 2>&1 | tee -a wget-mirror-bookmarks.log
#!/bin/sh
# Exports your bookmarks.html and converts them to a simple text file, one URL per line
BOOKMARKS_FILE="$1"
cat "$BOOKMARKS_FILE" | grep HREF | sed -e 's/^.*HREF="\([^"]*\)".*$/\1/ig' | grep -i ^http | sort -u > httrack-bookmarks.txt
# Get all bookmarks with httrack.
# NOTE: this disables all of httrack's "safety features"
httrack -O foo -i -iC2 -c20 -%c200 -%! -r1 -n -%k -%L httrack-bookmarks.txt
@peterwwillis
peterwwillis / get_all_gitlab_repos.sh
Created April 2, 2019 14:49
Get all GitLab repositories using the GitLab API
#!/usr/bin/env bash
# Get all GitLab repositories from the GitLab API.
GITLAB_HOST="https://gitlab.com"
export TOKEN=$(cat ~/.gitlab-token)
API_VER="v4"
PER_PAGE=100
set -eo pipefail
@peterwwillis
peterwwillis / sample.sh
Created May 8, 2019 14:27
Changing linux terminal screen window and tab titles
echo -ne "\033]0;This changes the window title\007"
echo -ne "\ekThis changes the tab title\e\\"
@peterwwillis
peterwwillis / defaultenv.sh
Created May 29, 2019 14:33
Load environment variables from a file with key=value pairs and optionally execute a program
#!/bin/sh
# defaultenv.sh - Load environment variable defaults and run programs
set -e
[ x"$DEBUG" = "x1" ] && set -x
_load_envrc () {
local file="$1"; shift
if [ -r "$file" ] ; then
# Bourne shell limits how we can test and set env vars, so here I'm
@peterwwillis
peterwwillis / download-tls-cert.sh
Created May 29, 2019 17:02
Download a TLS certificate
#!/bin/sh
set -e
_get_cert () {
openssl s_client -showcerts -connect "$1":"$2" </dev/null 2>/dev/null | openssl x509 -outform PEM
}
if [ $# -lt 2 ] ; then
echo "Usage: $0 HOST PORT [OUTFILE]"
echo ""
echo "Connects to TCP PORT on HOST and downloads TLS certificates."
echo "Saves to OUTFILE if it is specified, otherwise outputs to standard out."
@peterwwillis
peterwwillis / extract_jenkins_credentials.groovy
Last active November 27, 2019 17:12
If you can't find a Jenkins credential's value any other way, use the Script Console to extract the values
// To support more types of credentials, look up the credentials plugin code and write
// additional groovy to parse those credential types.
//
// From Mohamed Saeed: https://medium.com/@eng.mohamed.m.saeed/show-all-credentials-value-in-jenkins-using-script-console-83784e95b857
def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
com.cloudbees.plugins.credentials.common.StandardUsernameCredentials.class,
Jenkins.instance,
null,
null
@peterwwillis
peterwwillis / using-unix-pass.md
Created December 3, 2019 21:59
Using the Unix tool `pass` to manage passwords

About

This document explains how to use the Unix tool pass to manage passwords.

Using pass

Initial set-up

  1. Install software
// from https://stackoverflow.com/questions/9815273/how-to-get-a-list-of-installed-jenkins-plugins-with-name-and-version-pair#12730830
// the sort version doesn't seem to work on my jenkins install
Jenkins.instance.pluginManager.plugins.each{
plugin ->
println ("${plugin.getDisplayName()} (${plugin.getShortName()}): ${plugin.getVersion()}")
}