summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2024-02-27 22:29:09 -0500
committerJesse Luehrs <doy@tozt.net>2024-02-27 22:29:09 -0500
commitd5e72ac1b3d1aacec097c1d41decbe748c035f06 (patch)
treee75f879e5cdf3b51eb23ab321eb6e8ec2ce6ea9a /bin
parent0179eebc614a5668048b510cb7a0776354c16dc3 (diff)
downloadconf-d5e72ac1b3d1aacec097c1d41decbe748c035f06.tar.gz
conf-d5e72ac1b3d1aacec097c1d41decbe748c035f06.zip
rearrange some more things
Diffstat (limited to 'bin')
l---------bin/.bin/ag1
-rwxr-xr-xbin/.bin/cryptdir40
-rwxr-xr-xbin/.bin/cryptoloop30
-rwxr-xr-xbin/.bin/files-between14
-rwxr-xr-xbin/.bin/fm22avi8
-rwxr-xr-xbin/.bin/history-stats51
-rwxr-xr-xbin/.bin/hostcert8
-rwxr-xr-xbin/.bin/mem-usage5
-rwxr-xr-xbin/.bin/on-lock6
-rwxr-xr-xbin/.bin/pacman-dump6
-rwxr-xr-xbin/.bin/pdfcat7
-rwxr-xr-xbin/.bin/reply28
-rwxr-xr-xbin/.bin/rg7
-rwxr-xr-xbin/.bin/scanpdf4
-rwxr-xr-xbin/.bin/scratch5
-rwxr-xr-xbin/.bin/set-mac10
-rwxr-xr-xbin/.bin/show-colors29
-rwxr-xr-xbin/.bin/smt22
-rwxr-xr-xbin/.bin/sum8
-rwxr-xr-xbin/.bin/vimmanpager15
-rwxr-xr-xbin/.bin/web11
-rw-r--r--bin/.gitignore1
22 files changed, 316 insertions, 0 deletions
diff --git a/bin/.bin/ag b/bin/.bin/ag
new file mode 120000
index 0000000..5b2ddf3
--- /dev/null
+++ b/bin/.bin/ag
@@ -0,0 +1 @@
+rg \ No newline at end of file
diff --git a/bin/.bin/cryptdir b/bin/.bin/cryptdir
new file mode 100755
index 0000000..eb63300
--- /dev/null
+++ b/bin/.bin/cryptdir
@@ -0,0 +1,40 @@
+#!/bin/sh
+set -eu
+set -o pipefail
+
+if [ -e /dev/mapper/cryptdir ]; then
+ echo "only one instance can run at a time" 1>&2
+ exit 1
+fi
+
+sudo -v || exit 1
+
+if [ -z "${1:-}" ]; then
+ size='16M'
+else
+ size=$1
+fi
+
+cryptfile=$(mktemp)
+cryptdir=$(mktemp -d)
+pass=$(dd if=/dev/urandom bs=1 count=80 | base64)
+
+cleanup() {
+ set +e
+ cd
+ sudo umount "$cryptdir"
+ sudo cryptsetup close cryptdir
+ rm -f "$cryptfile"
+ rmdir "$cryptdir"
+}
+
+trap cleanup EXIT
+
+dd if=/dev/urandom of="$cryptfile" bs="$size" count=1
+echo "$pass" | sudo cryptsetup luksFormat "$cryptfile" -
+echo "$pass" | sudo cryptsetup open "$cryptfile" cryptdir --key-file -
+sudo mkfs.ext2 /dev/mapper/cryptdir
+sudo mount /dev/mapper/cryptdir "$cryptdir"
+sudo chown "$USER" "$cryptdir"
+cd "$cryptdir"
+$SHELL
diff --git a/bin/.bin/cryptoloop b/bin/.bin/cryptoloop
new file mode 100755
index 0000000..493c74e
--- /dev/null
+++ b/bin/.bin/cryptoloop
@@ -0,0 +1,30 @@
+#!/bin/sh
+set -eu
+
+command="$1"
+name="$2"
+file="${HOME}/crypt/${name}.luks"
+dev="/dev/mapper/$name"
+
+case "$command" in
+create)
+ size=$3
+ count=${4:-1}
+ dd if=/dev/urandom of="$file" bs="$size" count="$count" iflag=fullblock
+ sudo cryptsetup luksFormat "$file"
+ sudo cryptsetup open "$file" "$name"
+ sudo mkfs.ext4 "$dev"
+ sudo mount "$dev" /mnt
+ sudo chown "$USER" /mnt
+ sudo umount /mnt
+ sudo cryptsetup close "$name"
+ ;;
+open)
+ sudo cryptsetup open "$file" "$name"
+ sudo mount "$dev" /mnt
+ ;;
+close)
+ sudo umount /mnt
+ sudo cryptsetup close "$name"
+ ;;
+esac
diff --git a/bin/.bin/files-between b/bin/.bin/files-between
new file mode 100755
index 0000000..634b61c
--- /dev/null
+++ b/bin/.bin/files-between
@@ -0,0 +1,14 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use 5.014;
+
+use File::Basename;
+
+my $first = $ARGV[0];
+my $second = $ARGV[1];
+
+my $dirname = dirname($first);
+die unless $dirname eq dirname($second);
+
+say for grep { /^\Q$first\E$/../^\Q$second\E$/ } sort <$dirname/*>;
diff --git a/bin/.bin/fm22avi b/bin/.bin/fm22avi
new file mode 100755
index 0000000..eebfb4f
--- /dev/null
+++ b/bin/.bin/fm22avi
@@ -0,0 +1,8 @@
+#!/bin/bash
+set -eu
+set -o pipefail
+
+movie="$1"
+rom="$2"
+
+fceux --playmov "$movie" --sound 1 --soundq 1 --soundrate 48000 --nospritelim 1 --pal 0 --xscale 1 --yscale 1 --opengl 0 --special 0 "$rom" --videolog "mencoder - -o ${movie/.fm2/.avi} -ovc x264 -x264encopts qp=0 -oac mp3lame -lameopts mode=3:preset=128 -noskip -nocache -mc 0 -aspect 4/3 NESVSETTINGS"
diff --git a/bin/.bin/history-stats b/bin/.bin/history-stats
new file mode 100755
index 0000000..0fead1f
--- /dev/null
+++ b/bin/.bin/history-stats
@@ -0,0 +1,51 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+use Getopt::Long;
+
+my $history_file = $ENV{SHELL} =~ m{/zsh} ? '.zsh_history' : '.bash_history';
+
+open my $fh, '<', "$ENV{HOME}/$history_file"
+ or die "couldn't open $ENV{HOME}/$history_file: $!";
+my $n = 10;
+my $subcommand;
+GetOptions(
+ 'n=i' => \$n,
+ 'subcommand=s' => \$subcommand,
+);
+
+my %cmds;
+my %sudo_cmds;
+
+while (<$fh>) {
+ chomp;
+
+ # strip zsh history timestamps
+ s/^[^;]*;// if /^:/;
+
+ s/^\s*(.*?)\s*$/$1/;
+ my @words = split /\s+/;
+ next unless @words;
+ shift @words while @words && $words[0] =~ /^[A-Z][A-Z0-9_]*=/;
+ next unless @words;
+ my $sudo;
+ if ($words[0] eq 'sudo') {
+ $sudo = 1;
+ shift @words;
+ }
+ if ($subcommand) {
+ next unless $words[0] eq $subcommand;
+ shift @words;
+ shift @words while @words && $words[0] =~ /^-/;
+ }
+ $cmds{($words[0] || '')}++;
+ $sudo_cmds{$words[0]}++ if $sudo;
+}
+
+for my $cmd (sort { $cmds{$b} <=> $cmds{$a} } keys %cmds) {
+ printf '%5d %s', $cmds{$cmd}, $subcommand ? "$subcommand $cmd" : $cmd;
+ printf ' (%d under sudo)', $sudo_cmds{$cmd} if $sudo_cmds{$cmd};
+ print "\n";
+ last unless --$n;
+}
diff --git a/bin/.bin/hostcert b/bin/.bin/hostcert
new file mode 100755
index 0000000..61f519d
--- /dev/null
+++ b/bin/.bin/hostcert
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -eu
+set -o pipefail
+
+host="$1"
+port="${2:-443}"
+
+openssl s_client -connect "$host:$port" </dev/null 2>/dev/null | perl -nle 'print if /BEGIN CERTIFICATE/../END CERTIFICATE/' | openssl x509 -text | perl -nle 'print unless /BEGIN CERTIFICATE/../END CERTIFICATE/'
diff --git a/bin/.bin/mem-usage b/bin/.bin/mem-usage
new file mode 100755
index 0000000..19e8c32
--- /dev/null
+++ b/bin/.bin/mem-usage
@@ -0,0 +1,5 @@
+#!/bin/sh
+set -eu
+set -o pipefail
+
+ps -eo rss,ucmd | sort -rn | head -n"${1:-20}"
diff --git a/bin/.bin/on-lock b/bin/.bin/on-lock
new file mode 100755
index 0000000..3de3724
--- /dev/null
+++ b/bin/.bin/on-lock
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+sudo -K
+ssh-add -D
+echo RELOADAGENT | gpg-connect-agent
+type rbw >/dev/null 2>&1 && rbw lock
diff --git a/bin/.bin/pacman-dump b/bin/.bin/pacman-dump
new file mode 100755
index 0000000..b32ed16
--- /dev/null
+++ b/bin/.bin/pacman-dump
@@ -0,0 +1,6 @@
+#!/bin/bash
+set -eu
+set -o pipefail
+
+echo base-devel
+comm -23 <(pacman -Qeq | sort) <(pacman -Qgq base-devel | sort)
diff --git a/bin/.bin/pdfcat b/bin/.bin/pdfcat
new file mode 100755
index 0000000..ff4edaa
--- /dev/null
+++ b/bin/.bin/pdfcat
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -eu
+set -o pipefail
+
+out="$1"
+shift
+gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$out" "$@"
diff --git a/bin/.bin/reply b/bin/.bin/reply
new file mode 100755
index 0000000..412189f
--- /dev/null
+++ b/bin/.bin/reply
@@ -0,0 +1,28 @@
+#!/bin/sh
+set -eu
+
+DOCKERFILE="$(cat <<EOF
+FROM docker.io/debian:stable-slim
+RUN apt-get update && apt-get install -y --no-install-recommends \
+ cpanminus \
+ make \
+ gcc \
+ libreadline-dev
+RUN cpanm -n \
+ Reply \
+ B::Keywords \
+ Data::Dump \
+ Carp::Always \
+ Term::ReadLine::Gnu
+EOF
+)"
+IMAGE="$(basename "$0"):$(echo "$DOCKERFILE" | sha256sum | cut -d' ' -f1)"
+
+if [ -z "$(podman images -q "$IMAGE")" ]; then
+ echo "$DOCKERFILE" | podman build -t "$IMAGE" -f - .
+fi
+
+podman run --rm -it \
+ -v "$HOME"/.replyrc:/root/.replyrc \
+ "$IMAGE" \
+ reply "$@"
diff --git a/bin/.bin/rg b/bin/.bin/rg
new file mode 100755
index 0000000..ea88361
--- /dev/null
+++ b/bin/.bin/rg
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+if [ -t 1 ]; then
+ exec /usr/bin/rg --smart-case --no-ignore-messages -p "$@" | less -FR
+else
+ exec /usr/bin/rg --smart-case --no-ignore-messages "$@"
+fi
diff --git a/bin/.bin/scanpdf b/bin/.bin/scanpdf
new file mode 100755
index 0000000..31ebb14
--- /dev/null
+++ b/bin/.bin/scanpdf
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+scanimage --format=png --device=pixma --resolution=150 | convert - scan.pdf
diff --git a/bin/.bin/scratch b/bin/.bin/scratch
new file mode 100755
index 0000000..0cca01c
--- /dev/null
+++ b/bin/.bin/scratch
@@ -0,0 +1,5 @@
+#!/bin/sh
+set -eu
+set -o pipefail
+
+cat >/dev/null
diff --git a/bin/.bin/set-mac b/bin/.bin/set-mac
new file mode 100755
index 0000000..986d333
--- /dev/null
+++ b/bin/.bin/set-mac
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -eu
+
+link() {
+ sudo ip link set dev wlp0s20f3 "$@"
+}
+
+link down
+link address "$1"
+link up
diff --git a/bin/.bin/show-colors b/bin/.bin/show-colors
new file mode 100755
index 0000000..47e0d32
--- /dev/null
+++ b/bin/.bin/show-colors
@@ -0,0 +1,29 @@
+#!/bin/sh
+set -eu
+set -o pipefail
+
+############################################################
+# Nico Golde <nico(at)ngolde.de> Homepage: http://www.ngolde.de
+# Last change: Mon Feb 16 16:24:41 CET 2004
+############################################################
+
+for attr in 0 1 2 3 4 5 6 7; do
+ echo "----------------------------------------------------------------"
+ printf 'ESC[%s;Foreground;Background - \n' $attr
+ for fore in 30 31 32 33 34 35 36 37; do
+ for back in 40 41 42 43 44 45 46 47; do
+ printf '\033[%s;%s;%sm %02s;%02s ' $attr $fore $back $fore $back
+ done
+ printf '\033[0m\n'
+ done
+ printf '\033[0m'
+done
+
+printf '\n'
+for color in $(seq 0 255); do
+ printf '\033[%s;%s;%sm \033[m' 48 5 "$color"
+ if [ "$color" -eq 15 ] || [ "$(echo "scale = 0; ($color - 15) % 36" | bc)" -eq 0 ]; then
+ printf '\n'
+ fi
+done
+printf '\033[0m\n'
diff --git a/bin/.bin/smt b/bin/.bin/smt
new file mode 100755
index 0000000..446197d
--- /dev/null
+++ b/bin/.bin/smt
@@ -0,0 +1,22 @@
+#!/bin/sh
+set -eu
+
+DOCKERFILE="$(cat <<EOF
+FROM docker.io/debian:stable-slim
+RUN apt-get update && apt-get install -y --no-install-recommends \
+ cpanminus \
+ make \
+ gcc \
+ libreadline-dev
+RUN cpanm -n Games::SMTNocturne::Demons
+EOF
+)"
+IMAGE="$(basename "$0"):$(echo "$DOCKERFILE" | sha256sum | cut -d' ' -f1)"
+
+if [ -z "$(podman images -q "$IMAGE")" ]; then
+ echo "$DOCKERFILE" | podman build -t "$IMAGE" -f - .
+fi
+
+podman run --rm -it \
+ "$IMAGE" \
+ smt "$@"
diff --git a/bin/.bin/sum b/bin/.bin/sum
new file mode 100755
index 0000000..cf21bfd
--- /dev/null
+++ b/bin/.bin/sum
@@ -0,0 +1,8 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use 5.014;
+
+use List::Util 'sum';
+
+say sum map { s/^([-+\.\d]+).*/$1/r } <>;
diff --git a/bin/.bin/vimmanpager b/bin/.bin/vimmanpager
new file mode 100755
index 0000000..dfd36f3
--- /dev/null
+++ b/bin/.bin/vimmanpager
@@ -0,0 +1,15 @@
+#!/bin/sh
+set -eu
+set -o pipefail
+
+sed -e 's/\x1B\[[[:digit:]]\+m//g' | col -b |
+ vim \
+ -c 'let no_plugin_maps = 1' \
+ -c 'let g:rainbow_active = 0' \
+ -c 'let g:airline#extensions#whitespace#checks = []' \
+ -c "if exists('\$MAN_PN') | file \$MAN_PN | endif" \
+ -c 'setlocal nolist nomod noswf ft=man' \
+ -c 'runtime! macros/less.vim' \
+ -c 'set ma' \
+ -c 'setlocal noma' \
+ -
diff --git a/bin/.bin/web b/bin/.bin/web
new file mode 100755
index 0000000..f8484c0
--- /dev/null
+++ b/bin/.bin/web
@@ -0,0 +1,11 @@
+#!/bin/sh
+set -eu
+set -o pipefail
+
+version="$(python -c "import sys; print(sys.version_info[0])")"
+if [ "$version" = "2" ]; then
+ server=SimpleHTTPServer
+else
+ server=http.server
+fi
+exec python -m "$server" "${1:-8000}"
diff --git a/bin/.gitignore b/bin/.gitignore
new file mode 100644
index 0000000..550df27
--- /dev/null
+++ b/bin/.gitignore
@@ -0,0 +1 @@
+/.bin/local/*