Skip to content

Instantly share code, notes, and snippets.

@fredsmith
Created March 2, 2012 20:39
Show Gist options
  • Save fredsmith/1961132 to your computer and use it in GitHub Desktop.
Save fredsmith/1961132 to your computer and use it in GitHub Desktop.
#! /bin/bash
DEBUG="false";
MAXCACHEAGE="60";
COMMAND="false";
while getopts "da:c:" optionName; do
case "$optionName" in
d)
DEBUG="true"
;;
a)
MAXCACHEAGE=$OPTARG;
;;
c)
COMMAND=$OPTARG;
;;
[?])
echo "$0 - (C) 2012 Fred Smith <derf@derf.us>";
echo "Usage: $0 -a <max cache age> -c \"<command>\"";
exit;
;;
esac
done
CLEANCOMMAND=$(echo "$COMMAND" | sed -e 's/ /_/' -e 's/\///');
CACHEFILE="/tmp/cacheof-$CLEANCOMMAND.txt";
$DEBUG && echo "Cache File is: $CACHEFILE";
if test -f $CACHEFILE; then {
CACHEAGE=$(($(date +%s) - $(stat -c '%Y' "$CACHEFILE")))
} else {
CACHEAGE="100000";
} fi;
if test $CACHEAGE -lt $MAXCACHEAGE; then {
$DEBUG && echo "using cached version; $CACHEAGE seconds old."
cat $CACHEFILE;
exit;
} fi;
$COMMAND > $CACHEFILE;
cat $CACHEFILE;
@fredsmith
Copy link
Author

[15:42:50] derf@Ganymede[/bin]$ cacheit -a 10 -d -c "date"
Cache File is: /tmp/cacheof-date.txt
Fri Mar 2 15:44:52 EST 2012
[15:44:52] derf@Ganymede[
/bin]$ cacheit -a 10 -d -c "date"
Cache File is: /tmp/cacheof-date.txt
using cached version; 2 seconds old.
Fri Mar 2 15:44:52 EST 2012
[15:44:54] derf@Ganymede[/bin]$ cacheit -a 10 -d -c "date"
Cache File is: /tmp/cacheof-date.txt
using cached version; 4 seconds old.
Fri Mar 2 15:44:52 EST 2012
[15:44:56] derf@Ganymede[
/bin]$ cacheit -a 10 -d -c "date"
Cache File is: /tmp/cacheof-date.txt
using cached version; 6 seconds old.
Fri Mar 2 15:44:52 EST 2012
[15:44:58] derf@Ganymede[/bin]$ cacheit -a 10 -d -c "date"
Cache File is: /tmp/cacheof-date.txt
using cached version; 7 seconds old.
Fri Mar 2 15:44:52 EST 2012
[15:44:59] derf@Ganymede[
/bin]$ cacheit -a 10 -d -c "date"
Cache File is: /tmp/cacheof-date.txt
using cached version; 8 seconds old.
Fri Mar 2 15:44:52 EST 2012
[15:45:00] derf@Ganymede[/bin]$ cacheit -a 10 -d -c "date"
Cache File is: /tmp/cacheof-date.txt
using cached version; 9 seconds old.
Fri Mar 2 15:44:52 EST 2012
[15:45:01] derf@Ganymede[
/bin]$ cacheit -a 10 -d -c "date"
Cache File is: /tmp/cacheof-date.txt
using cached version; 9 seconds old.
Fri Mar 2 15:44:52 EST 2012
[15:45:01] derf@Ganymede[~/bin]$ cacheit -a 10 -d -c "date"
Cache File is: /tmp/cacheof-date.txt
Fri Mar 2 15:45:02 EST 2012

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment