Skip to content

Instantly share code, notes, and snippets.

View lpenz's full-sized avatar
🐧
🦀 🐊

Leandro Lisboa Penz lpenz

🐧
🦀 🐊
View GitHub Profile
@lpenz
lpenz / .travis.yml
Created April 23, 2015 14:48
.travis.yml: base for go with coveralls
language: go
go:
- tip
before_install:
- go get github.com/axw/gocov/gocov
- go get github.com/mattn/goveralls
- go get github.com/bradfitz/goimports
- go get github.com/golang/lint/golint
- go get golang.org/x/tools/cmd/vet
- if ! go get code.google.com/p/go.tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi
@lpenz
lpenz / .travis.yml
Created February 21, 2016 12:22
Test .gitignore in travis
script:
- true TESTS RUN HERE
- true Test if we .gitignore test files
- TMP=$(tempfile)
- git ls-files . --exclude-standard --others | tee "$TMP"
- if test -s "$TMP"; then false; else true; fi
- true Test if we .gitignore any tracked files
- git ls-files -i --exclude-standard | tee "$TMP"
- if test -s "$TMP"; then false; else true; fi
@lpenz
lpenz / docker-gc
Last active April 18, 2016 19:48
Docker garbage collector
#!/bin/bash
set -x -e
: gc conteiners
docker ps --filter 'status=exited' -q | xargs -r docker rm
docker ps --filter 'status=created' -q | xargs -r docker rm
: gc images
docker images --filter "dangling=true" -q | xargs -r docker rmi
@lpenz
lpenz / debootstrap-vagrant
Last active October 4, 2016 22:22
Use debootstrap to create a chroot that can be turned into a vagrant-compatible (virtualbox, wheezy 32) VM
#!/bin/bash
DIR=${1?usage: $0 <dir>}
NAME=${DIR##*/}
set -e -x
rm -rf "$DIR"
trap 'set +e; umount "$DIR/proc"; umount "$DIR/sys"; rm -rf "$DIR"' EXIT INT
@lpenz
lpenz / img2vagrant
Created October 5, 2016 17:12
Create a package.box for vagrant (virtualbox) from the specified raw img file
#!/bin/bash
IMG=${1?usage: $0 <img>}
NAME=wheezy32
set -e -x
rm -f "${IMG}.vmdk" package.box
VBoxManage convertfromraw "$IMG" "${IMG}.vmdk" --format vmdk
VBoxManage unregistervm "$NAME" --delete || :
@lpenz
lpenz / winclick
Created November 17, 2016 13:55
Click a window selected by name; uses xwininfo and xdotool
#!/bin/bash
WINNAME="${1?usage: "$0" windowname}"
set -e
TMP=$(mktemp)
trap 'rm -f $TMP' EXIT
eval "$(xdotool getmouselocation --shell)"
@lpenz
lpenz / nix-enter
Last active March 26, 2017 18:53
Enter a shell with ~/nix privately mounted in /nix, using mount namespaces. sudo required
#!/bin/bash
set -e -x
TMP=$(mktemp)
trap 'rm -f $TMP' EXIT
chmod u+x "$TMP"
cat > "$TMP" <<END
sudo mkdir /nix
@lpenz
lpenz / pa-monofy-stereo
Last active March 26, 2017 18:54
Join audio sink channels into a single mono channel, for stereo audio files with sound in only a channel
#!/bin/bash
set -e -x
pacmd load-module module-remap-sink sink_name=mono master=$(pacmd list-sinks | grep -m 1 -oP 'name:\s<\K.*(?=>)') channels=2 channel_map=mono,mono
@lpenz
lpenz / minesweeper.hs
Created November 20, 2017 23:00
minesweeper kata in haskell, no output
import qualified Data.Map as Map
import Control.Monad
main :: IO ()
main = processOneField
processOneField :: IO ()
@lpenz
lpenz / docker-create-debian-image.sh
Last active March 1, 2018 06:49
debootstrap a bare debian docker image
#!/bin/bash
DIST=${1?no distribution specified}
ARCH=${2:amd64}
set -e -x
NAME=debian-${DIST}-${ARCH}
debootstrap --no-check-gpg "--arch=$ARCH" "$DIST" "$NAME" http://archive.debian.org/debian
tar -C "$NAME" -c . | docker import - "$USER/$NAME"