blob: 5e647d9ac5ca8ad3c76a97e69759f3dda7c066f1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
#!/bin/bash
#
# Check the overall status of your work.
#
# Parameters
BASENAME="`basename $0`"
# Usage
function status_usage {
echo "usage: $BASENAME [-l|--long] [-d|--delay N] [project]"
if [ -z "$1" ]; then
exit 1
else
exit $1
fi
}
# See https://stackoverflow.com/questions/2721946/cross-platform-getopt-for-a-shell-script#4300224
function status_options {
getopt -T > /dev/null
if [ $? -eq 4 ]; then
# GNU enhanced getopt is available
ARGS=`getopt --name "$BASENAME" --long loop,delay: --options ld: -- "$@"`
else
# Original getopt is available (no long option names, no whitespace, no sorting)
ARGS=`getopt ld: "$@"`
fi
if [ $? -ne 0 ]; then
echo "$BASENAME: usage error" >&2
status_usage 2
fi
eval set -- $ARGS
while [ $# -gt 0 ]; do
case "$1" in
l|--loop)
LOOP="yes";;
d|--delay)
DELAY="$2"
shift;;
--)
shift
break;;
*)
status_usage
;;
esac
shift
done
if [ $# -gt 0 ]; then
PROJECT="$1"
shift
fi
}
# Run status
function status_run {
if [ ! -z "$PROJECT" ]; then
# Check the status of the given project
cd $PROJECT &> /dev/null && git status
elif git status &> /dev/null; then
# Check the status of the current project
mr status
else
# Ensure we are in the home folder
cd
# Check your reminders
if which remind &> /dev/null && [ -e "$HOME/.reminders" ]; then
remind ~/.reminders | grep -iv '^no reminders.$' # | tr '[:upper:]' '[:lower:]'
fi
# Update your mrconfig and check all registered repositories
if which mr &> /dev/null; then
# Pipe through cat so we don't have to deal with mr's dynamic output weirdness
#mrconfig-updater && mr -m status | cat
# Replace eventual "/mnt/crypt/home/$USER" with "~/" from output
# Piping through sed also handles mr's dynamic output weirdness
mrconfig-updater && mr -m status | sed -e "s|/mnt/crypt/home/$USER/|~/|" -e "s|$HOME|~|"
fi
# Use this as an opportunity to save our configs
if which git-config-save &> /dev/null; then
git config-save &> /dev/null
fi
# Check your TODO lists, filtering only important tasks
todo list important
# Check if you have mails to send
postponed
# Check unread mails
unread-mails
# Check if are dangling downloaded files
if [ -e "$HOME/load" ] && [ ! -z "`ls -1 ~/load/`" ]; then
# Print a newline if needed depending of the output of the previous commands
if [ ! -z "`postponed`" ] || [ ! -z "`unread-emails`" ]; then
echo ""
fi
echo "Dangling files at ~/load:"
echo ""
ls -lh ~/load/
fi
fi
}
# Options
status_options $@
# Dispatch
if [ "$LOOP" == "yes" ]; then
PROJECT=""
if [ -z "$DELAY" ]; then
DELAY="60"
fi
while true; do
clear
status_run
sleep $DELAY
done
else
status_run
fi
|