Adds the ability to add files that already exist

Work on #16

This was a relatively large amount of work. It introduces assets which
are stored in the assets sub directory and stored in the database with
the asset type in the database.
This commit is contained in:
Jonathan Hodgson 2020-12-30 16:42:47 +00:00
parent 980eef941b
commit a3bbe9b4a2
4 changed files with 123 additions and 15 deletions

34
kb
View file

@ -41,6 +41,10 @@ die(){
exit 1
}
warn(){
necho -e "${YELLOW}$*${NC}" > /dev/tty
}
# Normal echo
# Echo if quiet is 0
necho(){
@ -53,7 +57,7 @@ necho(){
# Echo if verbose is 1
vecho(){
if [ "$verbose" -eq 1 ]; then
echo "$@"
echo "$@" > /dev/tty
fi
}
@ -143,9 +147,15 @@ makedb(){
# Makes file names safe
escapeFilename(){
vecho "escapeFilename $*"
echo "$1" |
tr ' ' '_' | # replace spaces with underscores
tr -d '/' # Delete slashes
if [[ "$1" = assets/* ]]; then
echo -n "assets/"
echo "$(escapeFilename "${1#*/}")"
#echo "assets/$(escapeFilename "${1#*/}")"
else
echo "$1" |
tr ' ' '_' | # replace spaces with underscores
tr '/' '_' # replace slashes with underscores
fi
}
findFileId(){
@ -180,7 +190,7 @@ findFile(){
echo "$filename.md"
exit 0
else
die "No such file or ID $filename"
die "No such file or ID '$filename'"
exit 1
fi
fi
@ -240,7 +250,7 @@ listEntries(){
case "$1" in
--noheader) header="" ;;
--normal) typeorlist+=" OR items.type = 'normal'" ;;
--assets) typeorlist+=" OR items.type = 'assets'" ;;
--asset|--assets) typeorlist+=" OR items.type = 'asset'" ;;
--links) typeorlist+=" OR items.type = 'links'" ;;
*) die "invalid list option: '$1'." ;;
esac
@ -277,7 +287,7 @@ mainScript() {
############## Begin Script Here ###################
####################################################
if [ "${args[0]}" != "init" ]; then
cd "$dataDir" || return
#cd "$dataDir" || return
# Check to see if datadir is a git repo
if ! git rev-parse 2> /dev/null; then
# If not, ensure we don't run git commands
@ -286,6 +296,7 @@ mainScript() {
fi
case "${args[0]}" in
add) addFile "${args[@]:1}"; safeExit ;;
deepsearch) deepSearch "${args[@]:1}"; safeExit ;;
del|delete) deleteFile "${args[@]:1}"; safeExit ;;
edit) editFile "${args[@]:1}"; safeExit ;;
@ -344,6 +355,10 @@ usage() {
update <file> [<file>] Updates the database and git repo of a changed file
If 2 files are given, it assumes a move
view View a file
add [options] <file> Adds a file
--asset Adds the file as an asset
--yaml-header Adds a yaml header (default for markdown files)
--yaml-file Adds a yaml file (default for non-markdown files)
fuzzy [command] Fuzzy select a file
command is what to do with the selected file
edit or view
@ -400,7 +415,8 @@ while [[ $1 = -?* ]]; do
-v|--verbose) verbose=1 ;;
-q|--quiet) quiet=1 ;;
-d|--debug) debug=1;;
--data) dataDir="$2"; shift ;;
# Ensure that the dataDir has a trailing slash
--data) dataDir="${2%%/}/"; shift ;;
--sqlite) sqliteFile="$2"; shift ;;
--editor) editor="$2"; shift ;;
--pager) pager="$2"; shift ;;
@ -413,7 +429,7 @@ done
# If the sqlite file hasn't been specified on the command line, make it a file
# called knowledgebase.sqlite3 in the dataDir
[ -z "$sqliteFile" ] && sqliteFile="${dataDir}/knowledgebase.sqlite3"
[ -z "$sqliteFile" ] && sqliteFile="${dataDir}knowledgebase.sqlite3"
# Store the remaining part as arguments.
args+=("$@")