201 lines
5.6 KiB
Bash
201 lines
5.6 KiB
Bash
#!/bin/bash
|
|
|
|
sleep 0.2
|
|
write_config_dir=$HOME/.config/write
|
|
write_config_file_path=$write_config_dir/write.conf
|
|
write_config_exists_out=$(cat $write_config_file_path &> /dev/null)
|
|
write_config_exists=$?
|
|
write_default_notes_dir=$HOME/Write-Write
|
|
write_default_note_num=1
|
|
write_default_editor=$EDITOR
|
|
write_default_note_extension=".md"
|
|
logseq_page_path="$HOME/Nextcloud/Notes/Logseq/pages/write-write.md"
|
|
note_num=$write_default_note_num
|
|
bold_on="setterm --bold on"
|
|
bold_off="setterm --bold off"
|
|
|
|
make_default_config() {
|
|
mkdir -p $write_config_dir || exit 2
|
|
|
|
echo "write_notes_dir=$write_default_notes_dir" > $write_config_file_path
|
|
echo "note_num=$write_default_note_num" >> $write_config_file_path
|
|
echo "write_note_extension=$write_default_note_extension" >> $write_config_file_path
|
|
echo "write_editor=$write_default_editor" >> $write_config_file_path
|
|
|
|
mkdir -p $write_default_notes_dir || exit 2
|
|
}
|
|
|
|
make_config_file() {
|
|
mkdir -p $write_config_dir || exit 2
|
|
|
|
echo "write_notes_dir=$write_notes_dir" > $write_config_file_path
|
|
echo "note_num=$note_num" >> $write_config_file_path
|
|
echo "write_note_extension=$write_note_extension" >> $write_config_file_path
|
|
echo "write_editor=$write_editor" >> $write_config_file_path
|
|
|
|
mkdir -p $write_notes_dir || exit 2
|
|
}
|
|
|
|
make_config_dialog() {
|
|
$bold_on && echo "Would you like to change the default notes directory? $write_default_notes_dir"
|
|
echo "[y,N]" && $bold_off
|
|
read change_notes_dir
|
|
if [[ $change_notes_dir = "y" || $change_notes_dir = "Y" ]]
|
|
then
|
|
$bold_on && echo "Enter absolute directory of stored files e.g. /home/$(whoami)/notes" && $bold_off
|
|
read write_notes_dir_input
|
|
write_notes_dir=$write_notes_dir_input
|
|
make_config_file
|
|
else
|
|
write_notes_dir=$write_default_notes_dir
|
|
make_config_file
|
|
fi
|
|
mkdir -p $write_notes_dir || exit 2
|
|
|
|
$bold_on && echo "Would you like to change the current editor ($EDITOR)?"
|
|
echo "[y,N]" && $bold_off
|
|
read change_editor
|
|
if [[ $change_editor = "y" || $change_editor = "Y" ]]
|
|
then
|
|
$bold_on && echo "Enter the command used to run the editor (e.g. 'nano', 'vi', 'micro')" && $bold_off
|
|
read write_editor_input
|
|
write_editor=$write_editor_input
|
|
make_config_file
|
|
else
|
|
write_editor=$write_default_editor
|
|
make_config_file
|
|
fi
|
|
|
|
|
|
$bold_on && echo "Would you like to change the current file extension for the notes ($write_default_note_extension)?"
|
|
echo "[y,N]" && $bold_off
|
|
read change_note_extension
|
|
if [[ $change_note_extension = "y" || $change_note_extension = "Y" ]]
|
|
then
|
|
$bold_on && echo "Enter the file extension desired (e.g. '.md', '.txt')" && $bold_off
|
|
read write_note_extension_input
|
|
write_note_extension="$write_note_extension_input"
|
|
make_config_file
|
|
else
|
|
write_note_extension=$write_default_note_extension
|
|
make_config_file
|
|
fi
|
|
|
|
|
|
source $write_config_file_path
|
|
|
|
}
|
|
|
|
append_note_logseq() {
|
|
echo "" >> $logseq_page_path
|
|
echo "# $note_num$write_note_extension" >> $logseq_page_path
|
|
# echo " -" >> $logseq_page_path
|
|
cat $write_notes_dir/$note_num$write_note_extension >> $logseq_page_path
|
|
echo "" >> $logseq_page_path
|
|
}
|
|
|
|
check_note_diff() {
|
|
diff_state=$(diff $write_notes_dir/$note_num$write_note_extension $write_notes_dir/$note_num$write_note_extension.previous &> /dev/null && echo $?)
|
|
}
|
|
|
|
update_note_num() {
|
|
note_exists=$(cat $write_notes_dir/$note_num$write_note_extension &> /dev/null && echo $?)
|
|
if [[ $note_exists = 0 ]]
|
|
then
|
|
note_num=$(($note_num + 1))
|
|
fi
|
|
make_config_file
|
|
}
|
|
|
|
new_note() {
|
|
$write_editor $write_notes_dir/$note_num$write_note_extension
|
|
note_exists=$(cat $write_notes_dir/$note_num$write_note_extension &> /dev/null && echo $?)
|
|
if [[ $note_exists = 0 ]]
|
|
then
|
|
append_note_logseq
|
|
fi
|
|
update_note_num
|
|
}
|
|
|
|
open_note(){
|
|
cp $write_notes_dir/$note_num$write_note_extension $write_notes_dir/$note_num$write_note_extension.previous
|
|
$write_editor $write_notes_dir/$note_num$write_note_extension
|
|
check_note_diff
|
|
if [[ $diff_state = 1 ]]
|
|
then
|
|
replace_note_logseq
|
|
fi
|
|
}
|
|
|
|
get_entries() {
|
|
ls -1 $write_notes_dir | while read note
|
|
do
|
|
$bold_on && echo "$note" && $bold_off
|
|
cat -n $write_notes_dir/$note | while read line
|
|
do
|
|
line_num=$(echo $line | cut -d ' ' -f1)
|
|
new_line=$(echo $line | sed "s/$line_num //g")
|
|
# line_num=$(echo "$line" | cut --delimiter=' ' -f1)
|
|
if [[ $line_num -lt 5 ]]
|
|
then
|
|
# echo $line_num
|
|
echo "$new_line"
|
|
# echo $line | sed "s/$line_num //"
|
|
fi
|
|
done
|
|
echo
|
|
echo
|
|
done
|
|
# for i in $notes_list
|
|
# do
|
|
# echo "$i"
|
|
# sleep 2
|
|
# for line in $(cat -n $write_notes_dir/$i)
|
|
# do
|
|
# if [[ $(echo $line | cut --delimiter=' ' -f1) < 5 ]]
|
|
# then
|
|
# echo $line
|
|
# fi
|
|
# done
|
|
# done
|
|
}
|
|
|
|
if [[ $write_config_exists = 1 ]] # 1 means not true in this case (exit code)
|
|
then
|
|
make_default_config
|
|
echo "write-write Copyright (C) 2021 Adriel Sand
|
|
This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See https://gitlab.com/thebiblelover7/npad for more details."
|
|
$bold_on
|
|
echo "Would you like to change the defaults?"
|
|
echo "[y,N]" && $bold_off
|
|
read change_defaults
|
|
if [[ $change_defaults = "y" || $change_defaults = "Y" ]]
|
|
then
|
|
make_config_dialog
|
|
else
|
|
make_default_config
|
|
fi
|
|
|
|
source $write_config_file_path || exit 2
|
|
|
|
else
|
|
source $write_config_file_path || exit 2
|
|
fi
|
|
|
|
case $1 in
|
|
'list' | '-l' | '--list')
|
|
get_entries
|
|
;;
|
|
*)
|
|
note_num=$1
|
|
note_exists=$(cat $write_notes_dir/$note_num$write_note_extension &> /dev/null && echo $?)
|
|
if [[ $note_exists = 0 ]]
|
|
then
|
|
open_note
|
|
else
|
|
source $write_config_file_path || exit 2
|
|
new_note
|
|
fi
|
|
;;
|
|
esac
|