blob: 3f4229e4dd3ce026d23a912963d1e320a45d0007 (
plain) (
blame)
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
|
#!/bin/bash
# Search ~/Notes/journal for a term and return as a markdown list sorted by date.
colourWhite="\033[38;2;255;255;255m"
colourGreen="\033[38;2;0;255;0m"
colourOrange="\033[38;2;249;130;44m"
colourCyan="\033[38;2;0;255;255m"
txBold="\033[1m"
txReset="\033[0m"
# Automatic cleanup
trap 'rm -f "$grepped_results"' EXIT
grepped_results=$(mktemp) || exit 1
trap 'rm -f "$output_file"' EXIT
output_file=$(mktemp) || exit 1
termsize=$(stty size| awk '{print $2}')
printf "${colourWhite}=%.0s" $(seq $termsize)
echo
# very bad way to check the params passed in...
[[ -z "$2" ]] && [[ -n "$1" ]] && searchterm="$1"
[[ -n "$2" ]] && [[ -n "$1" ]] && searchterm="$1" && flag="$2"
# some confirmatory echoing
echo -e "${colourWhite}Search term: ${txBold}$searchterm${txReset}"
[[ -v flag ]] && echo "Flag: $flag"
if [[ $flag != "-i" ]]; then
flag=""
fi
# do the business, starting with using grep to get the pertinent lines
echo -e "$(grep -R $flag "$searchterm" /home/"$USER"/Notes/journal/)" > "$grepped_results"
# more confirmatory text
echo "Command: 'grep -R $flag $searchterm /home/"$USER"/Notes/journal/'"
printf "=%.0s" $(seq $termsize)
echo ""
# URL regex
# subsitute to get the right format using sed
# form: 2022-01-10 12:49: :TODO Do the MyHR content: ht
# urlregex="(https?:\/\/([[:alnum:]]+\.)+([[:alnum:]]+)+.*\s?)"
urlregex="https?"
re='^/home/lemon/Notes/journal/([0-9]{4})-([0-9]{2})-([0-9]{2})\.md:-\s([0-9]{2}:[0-9]{2}):\s(.*)'
while IFS= read -r line; do
if [[ $line =~ $re ]]; then
year=${BASH_REMATCH[1]}
month=${BASH_REMATCH[2]}
day=${BASH_REMATCH[3]}
time=${BASH_REMATCH[4]}
note=${BASH_REMATCH[5]}
fi
out_line="${colourGreen}"$year"-"$month"-"$day":${txReset} ${note}"
if [[ $out_line =~ $urlregex ]]; then
out_line=${out_line/${BASH_REMATCH[0]}/${colourCyan}${BASH_REMATCH[0]}${txReset}}
fi
if [[ $out_line =~ $searchterm ]]; then
o=${out_line/$searchterm/"${colourOrange}${txBold}$searchterm${txReset}"}
echo -e "$o" >> "$output_file"
fi
done < "$grepped_results"
# output
sort < "$output_file"
|