#!/usr/bin/env perl
|
|
|
|
=pod
|
|
|
|
=head1 NAME
|
|
|
|
commandlog-add - log command line history and context to an sqlite db
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
# in zsh
|
|
function preexec {
|
|
commandlog add "$@"
|
|
}
|
|
|
|
=head1 AUTHOR
|
|
|
|
Brennen Bearnes <bbearnes@gmail.com>
|
|
|
|
=cut
|
|
|
|
use warnings;
|
|
use strict;
|
|
use 5.10.0;
|
|
|
|
use App::CommandLog;
|
|
use Cwd;
|
|
use Sys::Hostname;
|
|
|
|
# Bail if logging is paused - can toggle this with commandlog-pause and
|
|
# commandlog-resume:
|
|
if (-e "$ENV{HOME}/commandlog-paused") {
|
|
exit;
|
|
}
|
|
|
|
my $command = $ARGV[0];
|
|
my $expanded_command = $ARGV[2];
|
|
|
|
# Skip things prefixed with a space:
|
|
if ($command =~ m/^[ ]+/) {
|
|
exit;
|
|
}
|
|
|
|
my $dbh = App::CommandLog::get_dbh();
|
|
|
|
my $sth = $dbh->prepare(q{
|
|
INSERT INTO commands (command, expanded_command, path, hostname, username, shell, terminal, datetime)
|
|
VALUES (?, ?, ?, ?, ?, ?, ?, datetime('now'))
|
|
});
|
|
$sth->execute($command, $expanded_command, cwd(), hostname(), $ENV{USER}, $ENV{SHELL}, $ENV{TERM});
|