You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.1 KiB
83 lines
2.1 KiB
#!/usr/bin/env bash |
|
|
|
# This file contains functions relating to file operations such as new, edit and deleting files |
|
|
|
newFile(){ |
|
vecho "newFile $*" |
|
cd "$dataDir" || return |
|
# While there is a - at the begining |
|
local title="$*" |
|
if [ -z "$title" ]; then |
|
echo -n "Enter a title: " |
|
read -r title |
|
fi |
|
local filename |
|
filename="$(escapeFilename "$title.md")" |
|
[ -e "$filename" ] && die "$filename already exists" |
|
echo -e "--- |
|
Title: $title |
|
Tags: |
|
- |
|
--- |
|
" > "$filename" |
|
echo "INSERT INTO items (filename, title, type) |
|
VALUES ( '$(safeSQL "$filename")', '$(safeSQL "$title")', 'normal' );" | |
|
sqlite3 "${sqliteFile}" |
|
editFile "$filename" |
|
} |
|
|
|
# Takes the filename as a parameter |
|
editFile(){ |
|
vecho "editFile $*" |
|
cd "$dataDir" || return |
|
local filename |
|
local oldTitle |
|
local newTitle |
|
filename="$(findFile "$*")" |
|
[ ! -e "$filename" ] && exit 1 |
|
oldTitle="$(getYamlTitle "$filename")" |
|
"$editor" "$filename" |
|
newTitle="$(getYamlTitle "$filename")" |
|
getYamlTags "$filename" | assignTags "$filename" |
|
if [ "$newTitle" != "$oldTitle" ]; then |
|
vecho "Changed title" |
|
local newfilename |
|
newfilename="$(escapeFilename "$newTitle.md")" |
|
if [ -e "$newfilename" ]; then |
|
echo -e "${YELLOW}File name $newfilename already exists${NC}" |
|
echo -e "Please fix manually" |
|
exit 1 |
|
else |
|
mv "$filename" "$newfilename" |
|
echo "UPDATE items |
|
SET (filename,title) = ('$(safeSQL "$newfilename")','$(safeSQL "$newTitle")') |
|
WHERE filename = '$(safeSQL "$filename")';" | |
|
sqlite3 "${sqliteFile}" |
|
gitChange "$newfilename" |
|
fi |
|
else |
|
gitChange "$filename" |
|
fi |
|
} |
|
|
|
deleteFile(){ |
|
cd "$dataDir" || return |
|
local filename |
|
local fileID |
|
local rsp |
|
filename="$(findFile "$1")" |
|
fileID="$(findFileId "$filename")" |
|
[ ! -e "$filename" ] && exit 1 |
|
echo -n "Are you sure? [yN] " |
|
read -r rsp |
|
if [[ "$(echo "$rsp" | tr '[:upper:]' '[:lower:]')" = "y"* ]]; then |
|
rm "$filename" |
|
# This deletes the file from the sql database and any tag links |
|
echo "DELETE FROM items |
|
WHERE id = '$(safeSQL "$fileID")'; |
|
DELETE FROM links |
|
WHERE itemID = '$(safeSQL "$fileID")';" | |
|
sqlite3 --column --header "${sqliteFile}" |
|
fi |
|
} |
|
|
|
|