141 lines
3.0 KiB
Bash
Executable File
141 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
log_directory=~/log
|
|
log_sample="Marvell :\n\nFait (imprévu):\n\t\t\nFait (prévu):\n\t\t\nEn cours (prévu):\n\t\t\nPrévisionnel:\n\t\t\nPrévisionnel (à plus long terme):\n\t\t\n\n\nLundi:\n\nMardi:\n\nMercredi:\n\nJeudi:\n\nVendredi:\n\n\n\n\n"
|
|
|
|
SPM=60
|
|
MPH=60
|
|
HPD=24
|
|
|
|
mode_available="view edit list toMail todo sendMail"
|
|
|
|
usage () {
|
|
echo "usage : ${0##*/} MODE [DATE|select] "
|
|
echo -e "\twith MODE in : $mode_available"
|
|
echo -e "\tDATE format is YYYY_MM_DD"
|
|
echo ""
|
|
}
|
|
|
|
read_date () {
|
|
if [ -z $1 ]; then
|
|
return 0
|
|
fi
|
|
day=${1#*_*_}
|
|
tmp=${1%_*}
|
|
month=${tmp#*_}
|
|
year=${tmp%_*}
|
|
|
|
old=$(date -d "$year-$month-$day" +%s)
|
|
new=$(date +%s)
|
|
|
|
diff=$new-$old
|
|
return $((diff / SPM / MPH / HPD))
|
|
|
|
}
|
|
|
|
check_valid_argument () {
|
|
needle=$1
|
|
for hay in $2; do
|
|
[[ $hay == $needle ]] && return 1
|
|
done
|
|
return 0
|
|
}
|
|
|
|
create_file () {
|
|
if [ ! -e $1 ]
|
|
then
|
|
mkdir -p $log_directory
|
|
echo -e -n $log_sample > $1
|
|
fi
|
|
|
|
}
|
|
|
|
view () {
|
|
read_date $1
|
|
date_arg=$?
|
|
curr_day=$(date --date="$date_arg days ago" +%u)
|
|
day_to_monday=$(($curr_day -1))
|
|
date_to_edit=$(date --date="$((date_arg + day_to_monday)) days ago" +%y_%m_%d)
|
|
|
|
file=$log_directory/$date_to_edit
|
|
|
|
create_file $file
|
|
more $log_directory/$date_to_edit
|
|
}
|
|
|
|
edit () {
|
|
read_date $1
|
|
date_arg=$?
|
|
curr_day=$(date --date="$date_arg days ago" +%u)
|
|
day_to_monday=$(($curr_day -1))
|
|
date_to_edit=$(date --date="$((date_arg + day_to_monday)) days ago" +%y_%m_%d)
|
|
|
|
file=$log_directory/$date_to_edit
|
|
|
|
create_file $file
|
|
${EDITOR} $log_directory/$date_to_edit
|
|
}
|
|
|
|
|
|
list () {
|
|
logs=$(ls $log_directory | grep ".*_.*_.*"| sort -r )
|
|
echo "${logs}"
|
|
}
|
|
|
|
toMail () {
|
|
read_date $1
|
|
date_arg=$?
|
|
curr_day=$(date --date="$date_arg days ago" +%u)
|
|
day_to_monday=$(($curr_day -1))
|
|
day_to_friday=$((5 - $curr_day))
|
|
start_date=$(date --date="$((date_arg + day_to_monday)) days ago" +%Y-%m-%d)
|
|
stop_date=$(date --date="$((date_arg - day_to_friday)) days ago" +%Y-%m-%d)
|
|
echo "Weekly $start_date -> $stop_date"
|
|
view $1
|
|
}
|
|
|
|
sendMail () {
|
|
read_date $1
|
|
date_arg=$?
|
|
curr_day=$(date --date="$date_arg days ago" +%u)
|
|
day_to_monday=$(($curr_day -1))
|
|
day_to_friday=$((5 - $curr_day))
|
|
start_date=$(date --date="$((date_arg + day_to_monday)) days ago" +%Y-%m-%d)
|
|
stop_date=$(date --date="$((date_arg - day_to_friday)) days ago" +%Y-%m-%d)
|
|
view $1 |mail -s "Weekly $start_date -> $stop_date" $USER@dxo.com
|
|
}
|
|
|
|
todo () {
|
|
${EDITOR} $log_directory/TODO
|
|
}
|
|
|
|
check_valid_argument $1 "$mode_available"
|
|
valid=$?
|
|
|
|
if [[ $# -ge 1 && $valid = 1 ]]
|
|
then
|
|
date=$2
|
|
if [[ "$2" = "select" ]]
|
|
then
|
|
PS3='Choose Your Date '
|
|
logs=$(ls $log_directory | sort -r)
|
|
select date in $logs quit
|
|
do
|
|
echo
|
|
echo "date $date selected"
|
|
echo
|
|
break
|
|
done
|
|
if [[ "$date" == "quit" ]]
|
|
then
|
|
echo "Exiting"
|
|
exit 0
|
|
fi
|
|
|
|
fi
|
|
eval $1 $date
|
|
else
|
|
usage
|
|
fi
|
|
|