Makefile: add pickrand
[cmccabe-bin] / archive_patch.sh
1 #!/bin/sh
2
3 #
4 # archive_patch.sh
5 #
6 # Archives old files
7 #
8 # copyright Colin Patrick McCabe, 2011
9 #
10
11 die() {
12     echo $@
13     exit 1
14 }
15
16 usage() {
17     echo
18     echo "$0: archives old files"
19     echo
20     echo "-c               copy the file rather than moving it"
21     echo "-d <dir>         directory where the file should end up (default: .)"
22     echo "-h               This help message"
23     echo "-m               Use the file's modification time, not the current time"
24     echo
25 }
26
27 copy=0
28 destdir=.
29 use_mtime=0
30 while getopts  "cd:hm" flag
31 do
32     case $flag in
33     c)  copy=1;;
34
35     d)  destdir=$OPTARG;;
36
37     h)  usage
38         exit 1
39         ;;
40
41     m)  use_mtime=1;;
42
43     *) usage
44         exit 1;;
45     esac
46 done
47 shift $((OPTIND-1))
48
49 if [ $copy -eq 1 ]; then
50     cmd="cp -f"
51 else
52     cmd="mv -f"
53 fi
54
55 [ -d "$destdir" ] || die "destdir '$destdir' is not a directory"
56
57 for file in "$@"; do
58     [ -e "$file" ] || die "'$file' does not exist"
59 done
60 for file in "$@"; do
61     if [ $use_mtime -eq 1 ]; then
62         new_date=`stat -c '%y' "${file}" | sed 's/ .*//'`
63         new_file_name="${destdir}/${new_date}_`basename "${file}"`"
64     else
65         new_file_name="$destdir/`date +'%Y-%m-%d'`_`basename "${file}"`"
66     fi
67     $cmd "${file}" "${new_file_name}" || die "failed on $file"
68 done