+++ /dev/null
-#!/bin/bash
-# hcht.plugin.bash: the handmade commandline history tool
-# Copyright: (C) 2010 Florian Baumann <flo@noqqe.de>
-# License: GPL-3 <http://www.gnu.org/licenses/gpl-3.0.txt>
-# Date: Dienstag 2010-11-30
-
-### readme
-# basiclly the handmade commandline history tool was made for storing
-# informations. yeah, you're right. sounds a bit boring. many other
-# applications can do this much better. but storing things from commandline?
-#
-# hcht was fitted to work at your terminal.
-# your daily stuff like notices, todos, commands or output from a command.
-# all these things will be stored without complex syntax.
-#
-# once you defined your storing-directory you will be able to easily
-# save all the stuff listed above.
-#
-
-### create a file
-# the basic feature. open a file, do stuff and save.
-#
-# $ hcht evilcommand.hch
-#
-# this will create a new file or edit a existing one.
-# paste your command or notice in your favorite editor
-
-### show all stored informations
-# to get an overview of your storedir:
-#
-# $ hcht
-
-### todo with a whole sentence
-# you can give hcht a bunch of parameters
-#
-# $ hcht this is a long reminder about a anything
-
-### save last executed command
-# lets say you did a great hack at your system and you
-# want to save it without complicated use of coping:
-#
-# $ hcht !!
-#
-# the "!!" will repeat the _last_ command you executed at
-# your terminal. after asking you about a name the hch file
-# will be saved.
-
-### read from stdin
-# hcht is also able to read anything from stdin.
-#
-# $ cat any_important_logfile | hcht anylog
-#
-# "anylog" will be the name of the saved file.
-
-hcht() {
- # configured?
- if [ -z $hchtstoredir ]; then
- echo "ERROR: handmade commandline history tool isn't configured."
- return 1
- else
- hchtstoredir=$(echo $hchtstoredir | sed -e 's/\/$//')
- fi
-
- # dir available?
- if [ ! -d $hchtstoredir ]; then
- echo "ERROR: No such directory: $hchtstoredir"
- return 1
- fi
-
- # get favorite editor
- if [ -z $EDITOR ]; then
- EDITOR=$(which vim || which nano)
- fi
-
- # check if stdin-data is present and save content
- if [ "$(tty)" = "not a tty" ]; then
- hchname=$(echo $1 | sed -e 's/\ //g')
- if [ -z $hchname ]; then
- cat < /dev/stdin >> $hchtstoredir/$(date +%Y%m%d%H%M%S).hch
- else
- cat < /dev/stdin >> $hchtstoredir/$hchname.hch
- fi
- return 0
- fi
-
- # list all hch files if no parameter is given
- if [ $# -eq 0 ]; then
- for file in $(ls $hchtstoredir); do
- echo $file
- done
- return 0
- fi
-
- # if a *.hch file is given start editing or creating it
- if [ "$#" -eq "1" ]; then
- if echo "$1" | grep -q -e ".*.hch$" ; then
- $EDITOR ${hchtstoredir}/${1}
- return 0
- else
- $EDITOR ${hchtstoredir}/${1}.hch
- return 0
- fi
- fi
-
- # autocreate a new hch
- if [ "$#" -gt "1" ]; then
- echo -n "define a name: " ; read hchname
- hchname=$(echo $hchname | sed -e 's/\ /_/g')
- if [ -z "$hchname" ]; then
- echo "$*" > $hchtstoredir/${1}-$(date +%Y%m%d%H%M%S).hch
- else
- echo "$*" > ${hchtstoredir}/${hchname}.hch
- fi
- return 0
- fi
-}