diff options
Diffstat (limited to '')
-rwxr-xr-x | bin/batchssh | 3 | ||||
-rwxr-xr-x | bin/git-blame-from-line-number | 23 | ||||
-rwxr-xr-x | bin/git-blame-stats | 37 | ||||
-rwxr-xr-x | bin/show-colors | 63 | ||||
-rwxr-xr-x | bin/sync-shell-files | 15 | ||||
-rwxr-xr-x | bin/tgz | 12 |
6 files changed, 153 insertions, 0 deletions
diff --git a/bin/batchssh b/bin/batchssh new file mode 100755 index 0000000..e60da7d --- /dev/null +++ b/bin/batchssh @@ -0,0 +1,3 @@ +#!/bin/sh + +exec ssh -o StrictHostKeyChecking=no -o BatchMode=yes -o ConnectTimeout=2 "$@" diff --git a/bin/git-blame-from-line-number b/bin/git-blame-from-line-number new file mode 100755 index 0000000..dbe1970 --- /dev/null +++ b/bin/git-blame-from-line-number @@ -0,0 +1,23 @@ +#!/bin/sh + +usage() { + echo "usage: $0 <filename> <lineno>" + exit 1 +} + +filename="$1" + +[ -z "${filename}" ] && usage + +lineno="$2" + +[ -z "${lineno}" ] && usage + +line=$(git blame -L "${lineno}","${lineno}" "${filename}") +sha=$(echo $line | awk '{print $1}') + +if [[ "${sha}" == "00000000" ]]; then + echo "${line}" +else + git show "${sha}" +fi diff --git a/bin/git-blame-stats b/bin/git-blame-stats new file mode 100755 index 0000000..4f83cba --- /dev/null +++ b/bin/git-blame-stats @@ -0,0 +1,37 @@ +#!/usr/bin/perl + +use Getopt::Long; +use POSIX qw(ceil); +use strict; +Getopt::Long::Configure(qw(bundling)); +my %authors; +my $total; +my $files; +my $rev = shift(@ARGV) || "HEAD"; + +foreach my $file (`git ls-tree --name-only -r $rev`) { + chomp($file); + print STDERR "Processing $file\n"; + foreach my $line (`git blame -M -w $rev -- "$file"`) { + chomp($line); + if (substr($line, 0, 1) eq "^") { + ++$authors{"*initial checkin"}; + } else { + $line =~ s[^.*?\((.*?)\s*\d{4}-\d{2}-\d{2}.*][$1]; + ++$authors{$line}; + } + ++$total; + } +} + +print "Total lines: $total\n"; +my $i = 0; +my $author_ind = ceil(log(scalar(keys %authors)) / log(10)); +my $lines_ind = ceil(log($total) / log(10)); +foreach my $author (sort { $authors{$b} <=> $authors{$a} } keys %authors) { + printf "%${author_ind}s %${lines_ind}u %5.2f%% %s\n", + sprintf("#%u", ++$i), + $authors{$author}, + $authors{$author} * 100 / $total, + $author; +} diff --git a/bin/show-colors b/bin/show-colors new file mode 100755 index 0000000..c2b8fe7 --- /dev/null +++ b/bin/show-colors @@ -0,0 +1,63 @@ +#!/usr/bin/env perl +# Author: Todd Larason <jtl@molehill.org> +# $XFree86: xc/programs/xterm/vttests/256colors2.pl,v 1.2 2002/03/26 01:46:43 dickey Exp $ + +# use the resources for colors 0-15 - usually more-or-less a +# reproduction of the standard ANSI colors, but possibly more +# pleasing shades + +# colors 16-231 are a 6x6x6 color cube +for ($red = 0; $red < 6; $red++) { + for ($green = 0; $green < 6; $green++) { + for ($blue = 0; $blue < 6; $blue++) { + printf("\x1b]4;%d;rgb:%2.2x/%2.2x/%2.2x\x1b\\", + 16 + ($red * 36) + ($green * 6) + $blue, + ($red ? ($red * 40 + 55) : 0), + ($green ? ($green * 40 + 55) : 0), + ($blue ? ($blue * 40 + 55) : 0)); + } + } +} + +# colors 232-255 are a grayscale ramp, intentionally leaving out +# black and white +for ($gray = 0; $gray < 24; $gray++) { + $level = ($gray * 10) + 8; + printf("\x1b]4;%d;rgb:%2.2x/%2.2x/%2.2x\x1b\\", + 232 + $gray, $level, $level, $level); +} + + +# display the colors + +# first the system ones: +print "System colors:\n"; +for ($color = 0; $color < 8; $color++) { + print "\x1b[48;5;${color}m "; +} +print "\x1b[0m\n"; +for ($color = 8; $color < 16; $color++) { + print "\x1b[48;5;${color}m "; +} +print "\x1b[0m\n\n"; + +# now the color cube +print "Color cube, 6x6x6:\n"; +for ($green = 0; $green < 6; $green++) { + for ($red = 0; $red < 6; $red++) { + for ($blue = 0; $blue < 6; $blue++) { + $color = 16 + ($red * 36) + ($green * 6) + $blue; + print "\x1b[48;5;${color}m "; + } + print "\x1b[0m "; + } + print "\n"; +} + + +# now the grayscale ramp +print "Grayscale ramp:\n"; +for ($color = 232; $color < 256; $color++) { + print "\x1b[48;5;${color}m "; +} +print "\x1b[0m\n"; diff --git a/bin/sync-shell-files b/bin/sync-shell-files new file mode 100755 index 0000000..dca1262 --- /dev/null +++ b/bin/sync-shell-files @@ -0,0 +1,15 @@ +#!/bin/bash + +to_host="$1" + +if [[ -z "${to_host}" ]]; then + echo "usage: $0 <host>" + exit 1 +fi + +files="inputrc gitconfig" +for file in $files; do + rsync -avz --delete "${HOME}/src/dotfiles/${file}" "${to_host}:.${file}" +done + +[ -f "${HOME}/.gitconfig.private" ] && rsync -avz --delete "${HOME}/.gitconfig.private" "${to_host}:" diff --git a/bin/tgz b/bin/tgz new file mode 100755 index 0000000..7b8d05e --- /dev/null +++ b/bin/tgz @@ -0,0 +1,12 @@ +#!/bin/sh + +name=$1 + +shift + +if [[ -z "${name}" ]]; then + echo "usage: $0 [name] [files]" + exit 1 +fi + +tar czfv "${name}.tgz" "$@" |