Skip to content

Instantly share code, notes, and snippets.

🏳️‍🌈
Breaking things

Noel Cower nilium

🏳️‍🌈
Breaking things
Block or report user

Report or block nilium

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@nilium
nilium / main.go
Last active Jun 14, 2019
Example of parsing environment variables and CLI flags using the flag package
View main.go
package main
import (
"flag"
"log"
"os"
"strings"
"unicode"
)
View build-server-notes.md

Build server notes

Any use of "we" in this document is the authorial we because using "I" sounds weird. This is intended to cover building packages under spiff-packages and not necessarily supporting the entirety of void-packages (due to size, complexity, and not having a good idea of every weird quirk of every package in it).

All jobs are intended to run using parametrized nomad tasks. This is not necessarily a requirement but is how it's planned out for now due to the homelab setup.

When building a package, we first need to request a list of all dependencies that package has and fetch all of them

If any package is not already in either the main or build repo, we need to build it, so we have to submit additional jobs to build those packages.

@nilium
nilium / git-instat
Last active May 20, 2019
Git script to scan diff --numstat output and sum it.
View git-instat
#!/bin/bash
usage() {
cat >&2 <<-'EOF'
Usage: git-instat [range] [path...] [-path pattern...] [-only pattern...] [-omit pattern...]
Print a stat summary for the given paths in a ref.
If no range is given, the default is 'HEAD^1..HEAD'.
-only and -omit may be passed to filter lines of the numstat, such that
@nilium
nilium / gomodver
Created Apr 12, 2019
Script to print Go module v0.0.0-DATE-SHA version strings
View gomodver
#!/bin/bash
# Usage: gomodver [REF...]
# Prints a Go modules v0.0.0-DATE-SHA version string for the given Git refs.
# If no REF is given, gomodver defaults to HEAD.
datearg=d@
case "$(uname -s | tr A-Z a-z)" in
*bsd|darwin) datearg=r;
esac
@nilium
nilium / lssrc
Created Mar 27, 2019
Short script to list all non-stdlib sources used by a Go package
View lssrc
#!/usr/bin/env bash
comm -23 \
<(go list -f '{{.ImportPath}}{{"\n"}}{{range .Deps}}{{.}}{{"\n"}}{{end}}' "$@" | sort | uniq) \
<(go list std | sort) |
xargs go list -f '{{$dir := .Dir}}{{range .GoFiles}}{{$dir}}/{{.}}{{"\n"}}{{end}}' |
sort | uniq
@nilium
nilium / gen-go-test-stubs
Created Mar 21, 2019
Script to generate stub_test.go files for any package without tests to produce 0% coverage for those packages
View gen-go-test-stubs
#!/usr/bin/env bash
gen_stub() {
set -e
local pkg="$1"
local pkgdir="$(go list -f '{{.Dir}}' "$pkg")"
local pkgname="$(go list -f '{{.Name}}' "$pkg")"
local stub="$pkgdir/stub_test.go"
if [ -e "$stub" ]; then
echo "# Cannot create $stub: file already exists" >&2
return 1
@nilium
nilium / gomodgraph
Created Mar 20, 2019
Tool to generate graphs of Go module dependencies
View gomodgraph
#!/usr/bin/env bash
# Based on https://github.com/go-modules-by-example/index/blob/master/014_mod_graph/README.md
OPEN=0
TYPE=svg
case "$1" in
-)
OUT=/dev/stdout
;;
'')
@nilium
nilium / Dockerfile
Last active Feb 18, 2019
Dockerfile to cross-compile Go binaries for a target platform and produce a Docker image for the target platform
View Dockerfile
# Dockerfile to cross-compile Go binaries for a target platform
#
# Usage:
# $ docker build --platform linux/arm .
# Cross-compile package for target platform from build platform
FROM --platform=${BUILDPLATFORM} golang:1-alpine AS build
ADD . /tmp/go
WORKDIR /tmp/go
@nilium
nilium / GNUmakefile
Created Jan 19, 2019
Terraform makefiles (bmake, gmake)
View GNUmakefile
TF_MODULES := $(shell find . -type f -iname '*.tf')
.PHONY: all plan apply
all: plan
plan: tf.plan
apply: tf.plan
terraform apply $<
@nilium
nilium / docker-ports
Last active Jan 3, 2019
Script to display docker containers with exposed / bound ports in dzen2
View docker-ports
#!/usr/bin/env bash
# Usage: docker-ports [format] <dzen2-args...>
#
# Displays open docker ports using dzen2.
#
# Example:
#
# $ docker-ports -fn 'PragmataPro-9' -dock
format_ports() {
You can’t perform that action at this time.