130 lines
3.0 KiB
Bash
130 lines
3.0 KiB
Bash
# Extra command-line options
|
|
# - --import-ni
|
|
# - --import
|
|
# - --git
|
|
# - --git-init
|
|
|
|
# Import iCalendar file noninteractively
|
|
#
|
|
# @input $2: Absolute path to iCalendar file
|
|
# @input $3: Collection
|
|
# @return: On success, returns 0, otherwise 1
|
|
if [ "${1:-}" = "--import-ni" ]; then
|
|
shift
|
|
file="${1:-}"
|
|
collection="${2:-}"
|
|
if [ ! -f "$file" ]; then
|
|
err "File \"$file\" does not exist"
|
|
exit 1
|
|
fi
|
|
for c in $(echo "$COLLECTION_LABELS" | sed "s|=[^;]*;| |g"); do
|
|
if [ "$collection" = "$c" ]; then
|
|
cexists="yes"
|
|
break
|
|
fi
|
|
done
|
|
if [ -n "${cexists:-}" ] && [ -d "$ROOT/$collection" ]; then
|
|
__import_to_collection "$file" "$collection"
|
|
else
|
|
err "Collection \"$collection\" does not exist"
|
|
exit 1
|
|
fi
|
|
exit
|
|
fi
|
|
|
|
# Import iCalendar file.
|
|
#
|
|
# @input $2: Absolute path to iCalendar file
|
|
# @return: On success, returns 0, otherwise 1
|
|
if [ "${1:-}" = "--import" ]; then
|
|
shift
|
|
file="${1:-}"
|
|
if [ ! -f "$file" ]; then
|
|
err "File \"$file\" does not exist"
|
|
return 1
|
|
fi
|
|
line=$(awk \
|
|
-v collection_labels="$COLLECTION_LABELS" \
|
|
"$AWK_PARSE" "$file")
|
|
set -- $line
|
|
startsec="${1:-}"
|
|
endsec="${2:-}"
|
|
if [ -z "$line" ] || [ -z "$startsec" ] || [ -z "$endsec" ]; then
|
|
err "File \"$file\" does not look like an iCalendar file containing an event"
|
|
return 1
|
|
fi
|
|
start=$(__datetime_human_machine "$startsec")
|
|
end=$(__datetime_human_machine "$endsec")
|
|
location=$(awk -v field="LOCATION" "$AWK_GET" "$file")
|
|
summary=$(awk -v field="SUMMARY" "$AWK_GET" "$file")
|
|
description=$(awk -v field="DESCRIPTION" "$AWK_GET" "$file")
|
|
filetmp=$(mktemp --suffix='.md')
|
|
(
|
|
echo "::: |> $start"
|
|
echo "::: <| $end"
|
|
) >"$filetmp"
|
|
if [ -n "$location" ]; then
|
|
echo "@ $location" >>"$filetmp"
|
|
fi
|
|
(
|
|
echo "# $summary"
|
|
echo ""
|
|
echo "$description"
|
|
) >>"$filetmp"
|
|
$CAT "$filetmp" >/dev/tty
|
|
while true; do
|
|
printf "Do you want to import this entry? (yes/no): " >/dev/tty
|
|
read -r yn
|
|
case $yn in
|
|
"yes")
|
|
collection=$(echo "$COLLECTION_LABELS" | tr ';' '\n' | awk '/./ {print}' | $FZF --margin="30%" --no-info --delimiter='=' --with-nth=2 --accept-nth=1)
|
|
if [ -z "$collection" ]; then
|
|
exit
|
|
fi
|
|
__import_to_collection "$file" "$collection"
|
|
break
|
|
;;
|
|
"no")
|
|
break
|
|
;;
|
|
*)
|
|
echo "Please answer \"yes\" or \"no\"." >/dev/tty
|
|
;;
|
|
esac
|
|
done
|
|
rm -f "$filetmp"
|
|
exit
|
|
fi
|
|
|
|
# Run git command
|
|
#
|
|
# @input $2..: Git command
|
|
# @return: On success, returns 0, otherwise 1
|
|
if [ "${1:-}" = "--git" ]; then
|
|
if [ -z "${GIT:-}" ]; then
|
|
err "Git not supported, run \`$0 --git-init\` first"
|
|
return 1
|
|
fi
|
|
shift
|
|
$GIT "$@"
|
|
exit
|
|
fi
|
|
|
|
# Enable the ues of git
|
|
#
|
|
# @return: On success, returns 0, otherwise 1
|
|
if [ "${1:-}" = "--git-init" ]; then
|
|
if [ -n "${GIT:-}" ]; then
|
|
err "Git already enabled"
|
|
return 1
|
|
fi
|
|
if ! command -v "git" >/dev/null; then
|
|
err "Git command not found"
|
|
return 1
|
|
fi
|
|
git -C "$ROOT" init
|
|
git -C "$ROOT" add -A
|
|
git -C "$ROOT" commit -m 'Initial commit: Start git tracking'
|
|
exit
|
|
fi
|